getaddrinfo() возвращает 127.0.0.1 для удаленного хоста

У меня есть приложение, которое использует getaddrinfo() для преобразования имени хоста ПК в рабочей группе Windows в адрес IPV4 для этого ПК в локальной сети. (Обратите внимание, я не имею в виду получение адреса ПК, на котором работает код, я имею в виду адрес другого ПК в локальной сети!) Это уже довольно давно работает как в полевых условиях, так и в лаборатории, но теперь у меня есть компьютер с Windows 7 (32-разрядная версия), который ведет себя ненормально. Имя хоста для этого ПК — «локоть».

Я скомпилировал образец кода, предоставленный Microsoft для getaddrinfo(), по адресу http://msdn.microsoft.com/en-us/library/windows/desktop/ms738520%28v=vs.85%29.aspx

Когда я запускаю этот пример кода на любом ПК в своей локальной сети и указываю «локоть» в качестве имени хоста, getaddrinfo() возвращает адрес обратной связи 127.0.0.1 вместо правильного (192.168.1.110). Однако, если я укажу любое другое имя хоста, getaddrinfo() вернет правильный адрес!

В какой-то момент в прошлом «локоть» НЕ проявлял такого поведения, поэтому очевидно, что что-то в этом ПК изменилось, чтобы вызвать такое поведение. Я попытался восстановить образ диска ПК до того состояния, когда, по моему думаю, это не вызывало такого поведения, но это ничего не изменило. Также не имеет значения, подключен ли ПК к локальной сети проводным или беспроводным способом. DHCP включен для всех ПК в локальной сети. Такое поведение сохраняется даже при полном отключении питания всех ПК, маршрутизаторов и коммутаторов.


person pnswdv    schedule 21.03.2012    source источник
comment
Мой неверный ответ исчез. Я вижу, у вас не было никакой другой активности по этому вопросу; это действительно загадка. Удачи!   -  person Mark Ransom    schedule 29.03.2012
comment
Это крайне странно! И это однонаправлено — у чудаковатого ПК нет проблем с получением правильного IP-адреса для всех других ПК. Как будто есть какие-то настройки безопасности, делающие IP-адрес невидимым. Я раньше искал такую ​​настройку, но знаете, думаю, я посмотрю еще раз...   -  person pnswdv    schedule 29.03.2012


Ответы (2)


Столкнулся с похожей проблемой и хотел опубликовать сообщение на случай, если кто-то еще найдет эту тему.

То же самое произошло и с нашей стороны с компьютером, установленным клиентом. Мы обнаружили, что клиент изменил свой файл hosts, чтобы связать 127.0.0.1 с именем компьютера... отдельная программа, использующая getaddrinfo для поиска определенной подсети, продолжала давать сбой... в итоге они временно переименовали компьютер, чтобы использовать эту функцию, но они также могли бы исправить свой файл хоста.

Файл hosts на этом компьютере с Win 7 был найден в /windows/system32/drivers/etc.

person SEM    schedule 19.07.2012

Я хотел обновить это с ответом. Слоном в комнате был DNS провайдера. У меня было ошибочное впечатление, что моя подсеть изолирована от DNS интернет-провайдера, но это не так. По какой-то причине их DNS возвращает 127.0.0.1 для имени хоста «локоть», но как только я переименовал его во что-то другое, моя проблема исчезла! Я также обнаружил другой компьютер с такой же проблемой, и переименование также устранило ее. Общим для обоих ПК является то, что оба подверглись перезагрузке ОС, но проблема не стала очевидной до тех пор, пока не прошло некоторое время после перезагрузки ОС.

person pnswdv    schedule 24.04.2012