Файл /etc/hosts
та DNS не працюють разом. Вони надають незалежні рішення імен (мережеві назви).
Клей, який їх пов'язує, знаходиться всередині /etc/nsswitch.conf
для систем Linux . Для /etc/netsvc.conf
AIX-серверів, у системі для Windows, і їх можна перерахувати lookupd -configuration
(шукати LookupOrder, аналогічно:) Cache FF DNS NI DS
у системах MacOS.
Фактичний порядок стає складним і зазвичай складним, оскільки кожна служба вирішення імен може (і багато разів) заглядати всередину інших рівнів роздільної здатності. Як dnsmasq
(легкий DNS-сервер, як правило 127.0.0.1:53
, або ::1:53
(або обидва)) зазвичай читає і включає /etc/hosts
вміст файлу. Або, як-от systemd.resolver
(базовий резолютор, який повинен вирішувати лише неточені імена, як-от mycomputer
), викликує безпосередньо DNS-рішення для пунктирних імен ( mycomputer.here.dev.
) за певних умов.
Взагалі служби викликаються по порядку, і перша, яка не виходить з ладу, виграє і приймається як правильна адреса. Загальний базовий порядок: /etc/hosts
(файл), mDNS (без крапкових імен), DNS, NIS, NIS +, LDAP. У деяких системах Linux існує дозвіл останнього комп’ютера для комп'ютера hostname
в сервісіmyhostname
Наприклад, у цій системі (від cat /etc/nsswitch
):
hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname
Зауважте, що дуже стара (glibc 2.4 і новіша) order
запис задана/etc/host.conf
як:
order hosts,bind,nis
Застосовувати лише до /etc/hosts
служби імен файлів (файлів ).
Ефекти на цьому (Linux) клієнтському комп'ютері, пов’язаному з NIS та LDAP, (як правило) контролюються використовуваним сервером DNS (прив'язування, незв’язання тощо).
тому:
- Якщо ім'я хоста можна вирішити в / etc / hosts, чи застосовується DNS після / etc / hosts для вирішення імені хоста або розглядає вирішену IP-адресу через / etc / hosts як "ім'я хоста" для вирішення рекурсивно?
Жоден.
Якщо ім'я хоста можна вирішити в /etc/hosts
, DNS
воно не застосовується (якщо файли є перед DNS).
і вирішена IP-адреса не трактується як "ім'я хоста".
Просто так: вирішена адреса.
браузер
Веб-браузер може використовувати будь-який метод для вирішення імені (після того, як він перевірив кеш дозволених імен). Тільки якщо він використовує метод, наданий системою, застосовується наведений вище порядок. Браузер, як і будь-яка програма, може обрати напряму будь-який сервер DNS.
Якщо системний порядок був /etc/hosts
раніше DNS
, це означає, що запис у цьому файлі матиме перевагу перед DNS
службою вирішення.
Тому:
- ... Чи означає це, що / etc / hosts перекриває DNS для вирішення імен хостів?
Так (якщо браузер використовує надану системою роздільну здатність).
Чому не /etc/hosts
застосовується знову, так що я не можу підключитися до веб-сайту?
Тільки до тих пір, поки внутрішній кеш веб-переглядача не буде очищений (або вичерпується) для цього конкретного імені, це ім'я знову шукається поза браузером.
Якщо у кеш-пам'яті ім’я вирішено, браузер його знову використовує.
Використовуйте це, щоб очистити кеш .
Або просто закрийте (почекайте деякий час) і перезапустіть браузер.
/etc/hosts
і локально визначені сервери імен. Це досить заплутано, коли ви вперше спостерігаєте. (Дивлячись на вас, браузери на основі хрому!)