getent hosts example.comкак резолвит система (для приложений)
resolvectl statusDNS-серверы и search-домены
dig +short example.comбыстрый ответ (только IP)
dig example.com MXзапись конкретного типа
dig @8.8.8.8 example.comпроверить через публичный DNS
dig +trace example.comгде ломается делегирование
resolvectl flush-cachesсбросить кэш
локально правит /etc/hosts, постоянно — nameservers в netplan
Обзор
Чтобы обратиться к example.com, система превращает имя в IP. Порядок источников
задаёт NSS (/etc/nsswitch.conf): обычно сначала /etc/hosts, затем DNS.
В Ubuntu DNS-резолвингом заведует systemd-resolved, а /etc/resolv.conf —
символическая ссылка на его заглушку (127.0.0.53).
bash
getent hosts example.com # как система РЕАЛЬНО резолвит (учитывает hosts+DNS+NSS)
resolvectl status # текущие DNS-серверы и search-домены по интерфейсам
resolvectl query example.com # запрос через systemd-resolved (как сделает приложение)
Важно: dig/nslookup ходят в DNS напрямую, а приложения резолвят через NSS.
Поэтому для «как видит программа» бери getent hosts/resolvectl query, а dig —
чтобы проверить сам DNS-сервер.
Ключи
/etc/hosts — локальные переопределения (обычно выше DNS):
getent hosts myserver # проверить, что переопределение видно системе
resolvectl flush-caches # сбросить кэш systemd-resolved
resolvectl statistics # хиты/промахи кэша
Рецепты
1
dig / host / nslookup
bash
dig example.com # подробный DNS-запрос (пакет dnsutils/bind9-dnsutils)
dig +short example.com # только ответ (IP) — удобно в скриптах
dig +short example.com AAAA # IPv6-адрес
dig example.com MX # записи типа (A, AAAA, MX, TXT, NS, SOA, CNAME…)
dig @8.8.8.8 example.com # спросить КОНКРЕТНЫЙ сервер (мимо локального)
dig +trace example.com # пройти делегирование от корня (где ломается)
dig -x 1.2.3.4 # обратный запрос (PTR)
dig +noall +answer example.com # только секция ответа
host example.com # коротко и просто
host -t MX example.com # тип записи
nslookup example.com # классика (интерактивный тоже)
Неполадки
5
СимптомПричина и решение
Пингуется IP, но не имена
DNS не работает. По лесенке:
1. resolvectl status — есть ли DNS-сервер у интерфейса (Current DNS Server).
2. getent hosts example.com — резолвится ли через систему вообще.
3. dig @8.8.8.8 example.com — отвечает ли публичный DNS (если да — проблема в локальном/resolved).
Имя резолвится не в тот IP
Запись в /etc/hosts перебивает DNS — проверь его (getent hosts имя).
Старый кэш: resolvectl flush-caches.
Несколько A-записей/round-robin — это нормально (балансировка).
resolv.conf затирается после ребута
Не правь /etc/resolv.conf напрямую (это симлинк на resolved). Настраивай DNS
в netplan (nameservers:) или /etc/systemd/resolved.conf, затем
sudo netplan apply / systemctl restart systemd-resolved.
Внутренние имена не резолвятся, внешние — да
Нет search-домена или нужного DNS для внутренней зоны. Проверь resolvectl status
(Search Domains) и добавь домен/сервер в netplan.
dig работает, а приложение «не находит» хост
dig ходит в DNS мимо NSS. Проверяй через getent hosts/resolvectl query —
причина в /etc/hosts, nsswitch.conf или кэше resolved.