Файл /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и локально определенные серверы имен. Довольно странно наблюдать за первым разом. (Глядя на вас, браузеры на основе Chromium!)