C# 中的 nslookup 等价物是什么?

问题描述

我想获取 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

nslookup

我想要在 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