Ответ вслух Senior Сеть в Linux обновлено

Как Linux резолвит имя

Вопрос

Что происходит, когда программа в Linux обращается к api.example.com? Где это может сломаться?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Программа вызывает getaddrinfo из glibc. Та смотрит /etc/nsswitch.conf: обычно сначала files, то есть /etc/hosts, потом dns.

Что должно прозвучать в ответе

  • Программа вызывает `getaddrinfo` из glibc

  • `/etc/nsswitch.conf` задаёт порядок: обычно `files` (`/etc/hosts`), затем `dns`

  • `/etc/resolv.conf`: серверы, `search`-домены, `options ndots`, в Ubuntu stub 127.0.0.53 от systemd-resolved

  • Резолвер идёт рекурсивно от корня к авторитетным серверам, ответы кешируются по TTL

  • Сломаться может: устаревший кеш и TTL, запись в `/etc/hosts`, `search`/`ndots` в Kubernetes, недоступный DNS-сервер, AAAA без IPv6

  • Диагностика: `getent hosts`, `dig`, `dig @сервер`, `resolvectl status`

Что могут спросить следом

  • Что такое ndots и почему в Kubernetes из-за него лишние запросы?
  • Почему после смены IP часть пользователей ещё ходит на старый?

Разбор

Программа вызывает getaddrinfo из glibc. Та смотрит /etc/nsswitch.conf: обычно сначала files, то есть /etc/hosts, потом dns. Для DNS берёт /etc/resolv.conf: список серверов, search-домены и опции. В Ubuntu там 127.0.0.53, это systemd-resolved с кешем, а реальные серверы видны в resolvectl status. Рекурсивный резолвер идёт от корневых серверов к зоне com и к авторитетным серверам домена, ответы кешируются на время TTL на всех уровнях. Ломается в типичных местах: забытая строка в /etc/hosts; старый IP в кешах после смены записи, пока не истечёт TTL; в Kubernetes ndots:5 и длинный search, из-за которых короткое имя сначала пробуется с несколькими суффиксами; приложение просит AAAA и пытается IPv6 без маршрута. Проверяю getent hosts (как видит система), dig (как отвечает DNS) и dig @8.8.8.8 для сравнения.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.