Почему мое разрешение имен попадает в DNS даже при записи файла hosts?


15

Я использую Ubuntu 10.04.2 LTS Desktop. Будучи веб-разработчиком, естественно, я создал «me.com» в своем/etc/hosts файле. К сожалению, мое разрешение имен передается в DNS перед первой проверкой записи локальных хостов, и я не могу понять, почему.

Конечным результатом является то, что если мой /etc/resolv.conf nameserver 127.0.0.1сначала там содержится , то я получаю ответ обратно в свой веб-браузер от me.com (локальный) менее чем за секунду. Но если у меня нет этой записи, то мой ответ иногда занимает до 5 секунд, если мой провайдер немного медленный.

Проблема была настолько хлопотной, что мне пришлось подать здесь вопрос (и кто-то решил ее) о том, как автоматически вставить эту запись /etc/resolv.conf. Но один из пользователей (@shellholic) здесь настоятельно рекомендовал (и комментировал со мной обо всем этом), что я должен подать этот вопрос.

Знаете ли вы, почему разрешение имен моей рабочей станции должно сначала попасть на DNS-сервер, прежде чем попасть в мой /etc/hostsфайл? Сейчас я использую трюк resolv.conf .


1
Вы можете попробовать поискать /etc/nsswitch.conf. Записи в моей системе немного неочевидны, но вы можете проверить поиск только filesв качестве опции и посмотреть, будет ли это иметь значение.
— Белаква

Да, не могли бы вы дать нам вывод cat /etc/nsswitch.confи cat /etc/host.conf? Кроме того: как вы тестируете это (через пинг, браузер, перехват пакетов и т. Д.)?
— организовать

Чтобы завершить версию @arrange, не могли бы вы приложить результат time getent hosts me.com; hostname --fqdn; grep 'me.com' /etc/hosts; grep hosts /etc/nsswitch.conf; netstat -uln | grep ':53'; cat /etc/host.conf; wc -l /etc/hosts. Не стесняйтесь запутывать рациональность.
— Shellholic

@shellholic ^ рациональность ^ рационально? хе.
— Белаква

@jgbelacqua: действительно
— Shellholic

Ответы:


15

Файл /etc/nsswitch.conf позволит вам изменить порядок разрешения имен. По умолчанию сначала размещается файл хоста, затем настраивается DNS. Там может быть больше вариантов.

Файл /etc/hostsсодержит только IP-адреса и имена хостов (несколько имен для одного IP, если хотите)

В этом файле /etc/resolv.confбудут перечислены поисковые домены по умолчанию, а также будет последовательно указан список серверов имен, которые будут использоваться.


4
Также имейте в виду, что после того, как имя разрешено приложением или службой на вашем Linux-компьютере, оно останется в кеше на время, известное как TTL (время жизни). Поэтому, если вы переключите последовательность разрешения, вам лучше перезапустить систему или очистить кеш.
— jfmessier

как вы очищаете «кеш»?
— Эрик Джонсон

Я не уверен, но перезапуск сетевого соединения с помощью команд ifup и ifdown может это сделать. Конечно, перезагрузка должна очистить кеш, но мы используем Linux, верно?
— jfmessier

nscdможет кэшировать запросы разрешения имен, но не учитывает ttl (и поэтому кэширование хостов по умолчанию отключено). systemd-resolvedтакже будет кешировать записи. Если ни один из них не настроен, узлы Linux не кэшируют ответы DNS . (Браузеры, вероятно, делают на уровне приложений)
— Герт ван ден Берг
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.