Чому роздільна здатність мого імені впливає на 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.