Выбор ответа Middle Сеть в Linux обновлено
dig не видит /etc/hosts
Вопрос
В /etc/hosts есть 10.0.0.9 api.local. curl http://api.local работает, а dig api.local возвращает NXDOMAIN. Почему?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: dig спрашивает DNS напрямую и не читает /etc/hosts. Обычные программы резолвят через glibc (getaddrinfo), которая по /etc/nsswitch.conf сначала смотрит files (/etc/hosts), затем dns. dig и nslookup это DNS-клиенты, они спрашивают сервер напрямую.
Варианты ответа
digспрашивает DNS напрямую и не читает/etc/hostsправильный ответ/etc/hostsприменяется только после перезагрузки сервера- curl кеширует старые ответы и не видит отсутствие записи
- Имена в домене
.localDNS-серверы не поддерживают вовсе
Разбор
Обычные программы резолвят через glibc (getaddrinfo), которая по /etc/nsswitch.conf сначала смотрит files (/etc/hosts), затем dns. dig и nslookup это DNS-клиенты, они спрашивают сервер напрямую. Как видит система, показывает getent hosts api.local. /etc/hosts читается сразу, а кеша между запусками у curl нет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.