问题描述
我想获取 nslookup 返回的别名,如下所示:
F:\>nslookup maans20210630125234.sandBox.operations.test.dynamics.com
Server: UnKNown
Address: 2001:4898::1050:1050
Non-authoritative answer:
Name: apimgmths6q7kyczcrkpvds6u99ofw4apdrqgxc8s7qavl14wy.cloudapp.net
Address: 52.188.3.251
Aliases: maans20210630125234.sandBox.operations.test.dynamics.com
d365-ops-dev-gwy-eastus-eus2-2.azure-api.net
apimgmttm0hgnv1tmdyrtilrp0hcvphjwrq4gtyzzfdqehnzfn.trafficmanager.net
d365-ops-dev-gwy-eastus-eus2-2-eastus-01.regional.azure-api.net
我想要在 c 锐利中相当于上面的。我已经尝试过 Dns.GetHostEntry
。它不会返回官方文档中提到的别名。如何在 C#/.NET 中获取别名?
Dns.GetHostEntry(hostNameOrAddress)
解决方法
“别名”是 DNS CNAME
记录。因此,您需要了解如何从您的 DNS 库中查询 DNS CNAME
记录。您可能需要使用低级 DNS 库来控制 DNS 查询的所有低级详细信息,因为像 GetHostEntry
这样的高级调用旨在为您提供最终答案并隐藏中间步骤({ {1}} 链解析)。
在命令行上的等价物是:
CNAME
这跟在所有中间 CNAME 之后,并为您提供最终 IP 地址(因为 $ dig maans20210630125234.sandbox.operations.test.dynamics.com +short
d365-ops-dev-gwy-eastus-eus2-2.azure-api.net.
apimgmttm0hgnv1tmdyrtilrp0hcvphjwrq4gtyzzfdqehnzfn.trafficmanager.net.
d365-ops-dev-gwy-eastus-eus2-2-eastus-01.regional.azure-api.net.
apimgmths6q7kyczcrkpvds6u99ofw4apdrqgxc8s7qavl14wy.cloudapp.net.
52.188.3.251
默认执行 dig
记录类型查询)
但如果您指定记录类型 A
,您只会得到第一个答案(因此您必须自己循环查找所有中间 CNAME,直到您得到错误或最终答案):>
CNAME