【问题标题】:What is the nslookup equivalent in C#?C# 中的 nslookup 等价物是什么?
【发布时间】:2021-06-30 23:44:57
【问题描述】:

我想获取 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 system.net nslookup


【解决方案1】:

“别名”是 DNS CNAME 记录。因此,您需要了解如何从您的 DNS 库中查询 DNS CNAME 记录。您可能需要使用低级 DNS 库来控制 DNS 查询的所有低级细节,因为像 GetHostEntry 这样的高级调用旨在为您提供最终答案并隐藏中间步骤(CNAME链分辨率)。

在命令行上相当于:

$ 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

这遵循所有中间 CNAME 并为您提供最终 IP 地址(如 dig 默认执行 A 记录类型查询)

但是,如果您指定记录类型 CNAME,您只会得到第一个答案(因此您必须自己执行一个循环来找出所有中间 CNAME,直到您收到错误或最终答案):

$ dig maans20210630125234.sandbox.operations.test.dynamics.com CNAME +short
d365-ops-dev-gwy-eastus-eus2-2.azure-api.net.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-08
    • 2023-03-30
    • 2010-09-17
    • 2011-07-26
    • 2011-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多