С чего начать Первые шаги трек · 15 ступеней
Linux Labs

DNS и разрешение имён

4 мин Ubuntu 24.04 · systemd-resolved

Как имя превращается в IP — resolv.conf, systemd-resolved, /etc/hosts, dig.

Шпаргалка

7 команд Версия для печати
  • getent hosts example.com как резолвит система (для приложений)
  • resolvectl status DNS-серверы и 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):

127.0.0.1     localhost
192.168.1.10  myserver myserver.local
bash
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.

Термины

5
DNS
Система распределённых имён и записей. Ещё встречается в: curl, hostname, Диагностика сети, ping и ещё 19
резолвер resolver
Механизм получения данных по имени из настроенных источников. Ещё встречается в: BIND9, hostname
запись A A record
DNS-запись с IPv4-адресом для имени.
полное доменное имя fully qualified domain name
Имя, полностью определяющее положение в иерархии DNS; завершающая точка обозначает корень. Ещё встречается в: hostname
TTL записи DNS DNS record TTL
Время допустимого хранения записи в кэше, в секундах.

См. также

  • ip — Управление интерфейсами, адресами и маршрутами (iproute2) — замена ifconfig/route.
  • curl — Запросы HTTP/HTTPS из CLI — отладка API и веб-сервисов, заголовки, методы.
Загрузка…