Я использую 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 .
источник
/etc/nsswitch.conf
. Записи в моей системе немного неочевидны, но вы можете проверить поиск толькоfiles
в качестве опции и посмотреть, будет ли это иметь значение.cat /etc/nsswitch.conf
иcat /etc/host.conf
? Кроме того: как вы тестируете это (через пинг, браузер, перехват пакетов и т. Д.)?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
. Не стесняйтесь запутывать рациональность.Ответы:
Файл
/etc/nsswitch.conf
позволит вам изменить порядок разрешения имен. По умолчанию сначала размещается файл хоста, затем настраивается DNS. Там может быть больше вариантов.Файл
/etc/hosts
содержит только IP-адреса и имена хостов (несколько имен для одного IP, если хотите)В этом файле
/etc/resolv.conf
будут перечислены поисковые домены по умолчанию, а также будет последовательно указан список серверов имен, которые будут использоваться.источник
nscd
может кэшировать запросы разрешения имен, но не учитывает ttl (и поэтому кэширование хостов по умолчанию отключено).systemd-resolved
также будет кешировать записи. Если ни один из них не настроен, узлы Linux не кэшируют ответы DNS . (Браузеры, вероятно, делают на уровне приложений)