Что такое эквивалент nslookup в C#?

Я хочу получить псевдонимы, возвращаемые 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

Я хочу эквивалент выше в до-диез. Я уже пробовал Dns.GetHostEntry. Он не возвращает псевдонимы, как указано в официальном документе. Как получить псевдонимы в С#/.NET?

Dns.GetHostEntry(hostNameOrAddress)


person Matikur Rahman Ansari    schedule 30.06.2021    source источник
comment
Надеюсь, этот ответ поможет вам stackoverflow.com/a/17575503/4356387   -  person A. Gopal Reddy    schedule 02.07.2021


Ответы (1)


Псевдонимы — это записи DNS CNAME. Поэтому вам нужно узнать, как запрашивать записи DNS CNAME из вашей библиотеки DNS. Вероятно, вам потребуется использовать низкоуровневую библиотеку 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.
person Patrick Mevzek    schedule 01.07.2021