Что может заставить DNS-запрос игнорировать запись в файле hosts?

13

У меня проблема с DNS, которая влияет на производительность моего локально размещенного веб-сайта при его просмотре на локальном компьютере. Если я присоединяю DNS-суффикс своей сети к имени локального компьютера, когда перехожу по URL-адресу в браузере, сайт загружается ужасно (в 100 и более раз медленнее), чем без DNS-суффикса.

Я думал, что смогу это исправить, используя файл hosts, чтобы избежать необходимости поиска. Я добавил запись в мой файл hosts, как это

127.0.0.1    myMachine.MyDnsSuffix

Но это не изменило время загрузки даже после перезагрузки. Хотя это и не важно для решения этой конкретной проблемы, мне бы очень хотелось узнать, почему это происходит.

Кроме того, когда я запускаю nslookup в домене myMachine.MyDnsSuffix, я замечаю, что он использует DNS-сервер моей сети, чтобы найти IP. Может ли это быть связано с моей проблемой, или я просто неправильно понимаю, как работает nslookup?

Дэн Герберт
источник

Ответы:

20

Я считаю, что nslookup используется для тестирования самого DNS-сервера, в отличие от использования вашего файла HOSTS. http://support.microsoft.com/kb/200525, кажется, указывает на то же самое.

Попробуйте просто пинг. Разрешается ли ping myMachine.MyDnsSuffixобратный адрес, указанный в файле HOSTS?

Кристофер Карел
источник
Вы сделали хорошее замечание по поводу nslookup. Я просто попытался пропинговать его, myMachine.MyDnsSuffixи он разрешил мой IP в сети, а не 127.0.0.1как указано в моем файле HOSTS.
Дэн Герберт
Какая у тебя ОС? Я думаю, что в Windows7 и, возможно, в Vista есть странная защита UAC в файле HOSTS. Вы уверены, что ваши изменения сохраняются правильно?
Кристофер Карел
Моя ОС - Windows XP. Изменения, похоже, сохраняются правильно.
Дэн Герберт
Хм ... в начале записи HOSTS нет хеш-метки, не так ли? (это могло бы сделать комментарий) И вы уверены, что он находится в C: \ Windows \ System32 \ drivers \ etc \ hosts? Можете ли вы добавить фиктивную запись туда и посмотреть, разрешается ли это, как вы укажете?
Кристофер Карел
3
О, и не забудьте очистить свой кэш имен. ipconfig /flushdns, И кеш NETBIOS тоже nbtstat -R. (Чувствительно к регистру в окнах - WTF, почему?!?)
Кристофер Карел
8

DNS-поиски не используют файл hosts. Когда-либо.

adaptr
источник
2
@BartDeVos нет, это не так. Общий поиск хоста (т. Е. gethostbyname()Может проходить через файл hosts или через DNS, но специфичный для DNS поиск (как выполняется nslookup) не будет использовать файл hosts
Alnitak
Тем не менее, gethostinfo / getaddrinfo (современные версии gethostbyname) - это POSIX, а не обязательно то, что использует Windows.
Адаптер
2

ОК, новый подход. Давай очистим твой IP и кеш NETBIOS. ipconfig /flushdnsи nbtstat -R. Затем запустите анализатор пакетов, например Wireshark, и выполните пинг, пока он работает.

Из захвата пакета, мы хотим увидеть, если A) Идет ли запрос DNS, и если да, то какое имя он запрашивает. Б) Если есть запрос NETBIOS. Возможно, это имя разрешается через NETBIOS вместо правильного DNS.

Если мы не увидим ничего из вышеперечисленного, несмотря на то, что вы очищаете кеш, то, скорее всего, имя извлекается из хостов или из lmhosts.

Кристофер Карел
источник
1

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

Я понимаю, что это длинный пример, но в записи файла hosts нет никаких связанных с Microsoft слов, таких как MSDN, Microsoft или MSN, не так ли? Microsoft написала dnsapi.dll, чтобы игнорировать записи файла хостов, соответствующие определенным именам. Например, если я добавлю следующую запись, Windows пропустит ее и разрешит оба имени хоста в записи, используя DNS:

127.0.0.1 www.microsoft.com www.mysite.com
jlupolt
источник
У меня нет файлов, связанных с Microsoft, в моем файле HOSTS. У меня есть только несколько внутренних тестовых доменов. Мой файл HOSTS довольно простой.
Дэн Герберт
Хм, интересно. Я знал, что они жестко закодировали домены MS, чтобы игнорировать HOSTSфайл, но даже домен не-MS игнорируется, если он разделяет запись с доменом MS? Это просто плохое программирование с их стороны. Это определенно то, на что нужно обратить внимание, если «минимизировать» HOSTSфайл.
Synetech
0

При использовании полного DNS-имени ваш браузер пытается пройти через ваш прокси-сервер - кликните для IE .

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

Максимус Минимус
источник
Я не подключен к прокси, хотя.
Дэн Герберт
1
@mh: я бы согласился с вами по поводу съемки хостов, если корневые серверы позволяют мне добавлять / удалять / редактировать записи.
Ян Бойд
0

http://geekswithblogs.net/JanS/archive/2009/06/17/beware-of-spacing-in-windows7-hosts-file.aspx

Это, кажется, фактическая причина. Предоставьте это Microsoft, чтобы внезапно и без предупреждения игнорировать 25-летнее соглашение.

Майкл МакНалли
источник
2
Пожалуйста, включите суть ответа / причины в вашем ответе. Это намного приятнее, чем просто ссылка.
Джейкоб
Вот основная часть связанного URL. Однако, похоже, ничего не работает. Пока я не увидел другие примеры файлов хостов, которые были отформатированы как <ip address> <single space> <value>
Tun