С# dns.GetHostEntry() не возвращает действительный IP-адрес

Я унаследовал код, который вызывает Dns.GetHostEntry("10.1.12.180") (или использует DNS машины), а возвращаемый IPHostEntry имеет другой IP-адрес «10.100.160.18». Если я запускаю код на том же поддомене (10.1.12), он работает. Другой разработчик, использующий WireShark, сказал, что не видит выполняемого вызова и что я должен переопределить вызов GetHostEntry, чтобы вернуть этот конкретный адрес (раньше у нас был этот адрес в сети). Я не отменяю вызов.

Я знаю, что могу обойти эту проблему, используя IPAddress.Parse(), поскольку у меня есть правильный IP-адрес.

Любые идеи, почему он вернет неправильный ip? Раньше это работало. Я проверил с ИТ, и у них нет никаких сопоставлений с неправильным IP-адресом. Разница лишь в том, что машина с ip-адресом 10.1.12.180 была обновлена ​​до Windows 10 (с Windows 7).

Я изолировал вызов, поэтому у меня есть проект, который просто выполняет вызов Dns.GetHostEntry().


person Bo Knows Diddley    schedule 22.03.2019    source источник
comment
Что вам дает Dns.GetHostEntry(Dns.GetHostName()).AddressList?   -  person silkfire    schedule 22.03.2019
comment
Он возвращает список IP-адресов, которые соответствуют тому, что я получаю, когда делаю ipconfig.   -  person Bo Knows Diddley    schedule 26.03.2019


Ответы (1)


IPHostEntry возвращает список адресов., ни одного IP-адреса. Вы должны повторить IPHostEntry.AddressList, чтобы увидеть их все.

см. здесь например использование Dns.GetHostEntry.

Также имейте в виду, что Windows может переопределить поиск DNS через файл hosts. К сожалению, это распространенный способ взлома DNS-запросов на конкретной машине.

person Zer0    schedule 22.03.2019
comment
Однако я получаю список, это список одного адреса, который неверен. Я не думал проверять файл hosts, но он не содержит сопоставлений. - person Bo Knows Diddley; 26.03.2019