Файл /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!)