Чому роздільна здатність мого імені впливає на DNS навіть із записом файлів хостів?


15

Я працюю на робочому столі Ubuntu 10.04.2 LTS. Будучи веб-розробником, я, природно, створив у своєму /etc/hostsфайлі "me.com" . На жаль, дозвіл мого імені надходить до DNS перед тим, як перевірити мій запис місцевих хостів, і я не можу зрозуміти, чому.

Кінцевим результатом є те, що якщо мій /etc/resolv.conf міститься nameserver 127.0.0.1там спочатку, то я отримую відповідь у своєму веб-браузері від me.com (local) протягом менш ніж секунди. Але якщо я не маю цього запису, то моя відповідь часом займає приблизно 5 секунд, якщо мій провайдер трохи повільний.

Проблема була настільки клопітка, що мені насправді довелося подати тут питання (а хтось вирішив її) про те, як автоматично вставити цей запис у /etc/resolv.conf. Але один з користувачів (@shellholic) тут дуже рекомендує (і коментує мене та назад про це), що я повинен подати це питання.

Чи знаєте ви, чому дозвіл імені моєї робочої станції повинен спочатку потрапити на DNS-сервер, перш ніж потрапити на мій /etc/hostsфайл? Поки що я використовую трюк резолюції.conf .


1
Ви можете спробувати шукати /etc/nsswitch.conf. Записи в моїй системі є трохи неочевидними, але ви можете протестувати пошук лише filesяк варіант і побачити, чи це змінило значення.
белаква

Так, ви могли б дати нам вихід cat /etc/nsswitch.confта cat /etc/host.conf? Також: як ви тестуєте це (через pinging, браузер, нюхання пакетів тощо)?
влаштовуйте

Щоб завершити версію @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 ^ раціональність ^ раціонально? хе.
белаква

@jgbelacqua: дійсно
богомол

Відповіді:


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.