摘要:• ✅ 跨平台(支持 .NET 5/6/7/8/9、.NET Framework)• ✅ 支持异步 API,性能更优• ✅ 覆盖 A、AAAA、MX、NS、CNAME、TXT、SRV 等多种记录类型• ✅ 支持自定义 DNS 服务器(例如 Google DNS
在日常 .NET 开发中,我们经常会遇到和 域名解析相关的需求:
• 想要获取一个域名对应的 IP 地址
• 检查某个域名的邮件服务器(MX 记录)
• 验证域名所有权时需要读取 TXT 记录
• 甚至实现服务发现
虽然 .NET 自带的System.Net.Dns类能完成一些基础操作,但功能过于有限。今天要给大家推荐一个非常实用的 NuGet 包 ——DnsClient。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 DnsClient1. 查询 A 记录(域名对应的 IPv4 地址)using DnsClient;var lookup = new LookupClient;
var result = await lookup.QueryAsync("www.bing.com", QueryType.A);
foreach (var record in result.Answers.ARecords)
{
Console.WriteLine($"IP 地址: {record.Address}");
}
输出:
IP 地址: 202.89.233.101IP 地址: 202.89.233.1002. 查询 MX 记录(邮件服务器)var lookup = new LookupClient;
var result = await lookup.QueryAsync("gmail.com", QueryType.MX);
foreach (var record in result.Answers.MxRecords)
{
Console.WriteLine($"优先级: {record.Preference}, 邮件服务器: {record.Exchange}");
}
输出:
优先级: 30, 邮件服务器: alt3.gmail-smtp-in.l.google.com.优先级: 20, 邮件服务器: alt2.gmail-smtp-in.l.google.com.
优先级: 5, 邮件服务器: gmail-smtp-in.l.google.com.
优先级: 40, 邮件服务器: alt4.gmail-smtp-in.l.google.com.
优先级: 10, 邮件服务器: alt1.gmail-smtp-in.l.google.com.3. 查询 TXT 记录(常见于域名验证)var lookup = new LookupClient;
var result = await lookup.QueryAsync("netshare.com", QueryType.TXT);
foreach (var record in result.Answers.TxtRecords)
{
Console.WriteLine($"TXT: {string.Join(", ", record.Text)}");
}
输出:
TXT: v=spf1 ip4:50.255.2.222 include:spf.protection.outlook.com include:netatlantic.com -allTXT: MS=ms51378284
有时候我们不想依赖系统的默认 DNS,可以手动指定:
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 (var record in result.Answers.AaaaRecords)
{
Console.WriteLine($"IPv6 地址: {record.Address}");
}相较于System.Net.Dns,DnsClient提供了更全面、更灵活的 DNS 查询能力。
如果你正在开发 网络工具、诊断平台,或者涉及到邮件系统、微服务发现的场景,DnsClient 都会是一个非常合适的选择。
✍️ 本文推荐了 NuGet 上的 DnsClient,后续我会继续分享更多实用的 .NET 开发工具库。
·············· END ··············
来源:opendotnet