Я столкнулся со следующей проблемой в Windows 7: при разрешении имен используется результат поиска DNS вместо того, что есть в моем локальном файле hosts. Это отличается от предыдущих версий Windows. Какие обходные пути есть, чтобы исправить эту ошибку?
Пример:
Файл моих локальных хостов содержит следующие записи (я отключил IPv6):
# ::1 localhost
127.0.0.1 localhost
127.0.0.1 svn.mydomain
Я могу пинговать svn.mydomain, и Windows 7 разрешает имя как 127.0.0.1, как и ожидалось.
Однако nslookup разрешает svn.mydomain как 192.168.4.105, что является записью, поступающей с сервера доменных имен моей офисной сети. Windows XP правильно возвращает 127.0.0.1. Я недавно переместил сервер в дом, поэтому теперь svn.mydomain разрешается через DNS, но не работает, когда я нахожусь за пределами офисной сети. Я бы предпочел не удалять этот хост из DNS.
Я специально поместил эту запись в hosts, чтобы я мог создать безопасный туннель к репозиторию Subversion на моем сервере (localhost -> svn.mydomain) независимо от моего сетевого подключения, и он настроен для ответа только через туннельное соединение. Эта ошибка нарушила это решение, и я действительно хотел бы «разрешить» (да, каламбур) эту проблему.
Как сделать так, чтобы разрешение имен Windows 7 не переопределяло записи хостов?
nslookup
вернет то, что фактически возвращают серверы имен (как следует из названия), но это еще не вся картина разрешения имен. Файл hosts имеет приоритет, также можно использовать netbios.
Как вы сказали, ping работает правильно, как и другие приложения, использующие функцию разрешения имен ОС. nslookup
игнорирование файла hosts несущественно.
NSLOOKUP не будет просматривать ваш файл HOSTS ... вы напрямую запрашиваете свой DNS-сервер. Следовательно, он вернет запись вашего DNS-сервера независимо от вашего локального файла HOSTS.