DnsClient.NET 是一个基于 .NET 的 高性能 DNS 协议客户端库,由社区开发者 MichaCo 维护。
它的优势:
• ✅ 跨平台(支持 .NET 5/6/7/8/9、.NET Framework)
• ✅ 支持异步 API,性能更优
• ✅ 覆盖 A、AAAA、MX、NS、CNAME、TXT、SRV 等多种记录类型
• ✅ 支持自定义 DNS 服务器(例如 Google DNS 8.8.8.8)
• ✅ 使用简单,API 设计直观
安装命令非常简单:
dotnet add package DnsClient
🛠️ 基本用法
1. 查询 A 记录(域名对应的 IPv4 地址)
using DnsClient; var lookup = new LookupClient(); var result = await lookup.QueryAsync("www.bing.com", QueryType.A); foreach (varrecordinresult.Answers.ARecords()) { Console.WriteLine($"IP 地址: {record.Address}"); }
👉 输出:
IP 地址: 202.89.233.101 IP 地址: 202.89.233.100
2. 查询 MX 记录(邮件服务器)
var lookup = new LookupClient(); var result = await lookup.QueryAsync("gmail.com", QueryType.MX); foreach (varrecordinresult.Answers.MxRecords()) { Console.WriteLine($"优先级: {record.Preference}, 邮件服务器: {record.Exchange}"); }
var lookup = new LookupClient(); var result = await lookup.QueryAsync("netshare.com", QueryType.TXT); foreach (varrecordinresult.Answers.TxtRecords()) { Console.WriteLine($"TXT: {string.Join(", ", record.Text)}"); }
using System.Net; using DnsClient; var client = new LookupClient(new NameServer(IPAddress.Parse("8.8.8.8"))); var result = await client.QueryAsync("microsoft.com", QueryType.AAAA); foreach (varrecordinresult.Answers.AaaaRecords()) { Console.WriteLine($"IPv6 地址: {record.Address}"); }
📌 应用场景
• 服务发现:通过 SRV 记录查找微服务地址
• 邮件系统开发:验证域名 MX 记录是否配置正确
• 域名验证:解析 TXT 记录,用于第三方平台验证域名所有权
• 诊断工具:快速写一个 nslookup 替代工具
最后
相较于 System.Net.Dns,DnsClient 提供了更全面、更灵活的 DNS 查询能力。 如果你正在开发 网络工具、诊断平台,或者涉及到 邮件系统、微服务发现 的场景,DnsClient 都会是一个非常合适的选择。