Получить доступ

Как работает DNS?

JuniorСети
Ещё спрашивают так:
  • Что происходит, когда браузер ищет IP-адрес домена?
  • Что такое TTL у DNS-записи?
  • Какие бывают DNS-записи?
Коротко

DNS — распределённая иерархическая база «имя → адрес». Рекурсивный резолвер спрашивает по цепочке: корневые серверы → серверы зоны .ru → авторитетный сервер домена.

  • Ответы кэшируются везде — в браузере, ОС, резолвере — на время TTL
  • Записи: A/AAAA — адрес, CNAME — псевдоним, MX — почта, TXT — проверки, NS — кто отвечает за зону
  • Обычно UDP порт 53; DoH/DoT — DNS поверх HTTPS/TLS

А ещё TTL решает, как быстро разойдётся смена адреса — перед переездом его снижают

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

Иерархия. Имя api.shop.ru. читается справа налево: корень ., зона верхнего уровня ru, зона shop.ru, имя api. За каждую зону отвечают свои авторитетные серверы, и родитель знает, кому делегирована дочерняя зона (записи NS).

Разрешение имени:

  1. приложение спрашивает ОС (getaddrinfo), та смотрит свой кэш и /etc/hosts;
  2. запрос уходит рекурсивному резолверу — провайдера, компании или публичному (1.1.1.1, 8.8.8.8, 77.88.8.8);
  3. если ответа нет в кэше, резолвер идёт итеративно: корневой сервер говорит «за .ru отвечают эти», сервер .ru — «за shop.ru — эти», авторитетный сервер shop.ru даёт адрес;
  4. ответ кэшируется на время TTL из записи и возвращается клиенту.

Типы записей: A — IPv4, AAAA — IPv6, CNAME — имя-псевдоним (нельзя на корне домена), MX — почтовые серверы, TXT — проверка владения, SPF и DKIM для почты, NS — делегирование, SRV — сервисы с портами, CAA — кто может выпускать сертификаты.

TTL и переезды. Пока не истёк TTL, клиенты используют старый адрес. Поэтому перед сменой адреса TTL заранее уменьшают (скажем, с суток до минуты), а после переезда возвращают. Некоторые клиенты кэшируют дольше TTL — JVM исторически кэшировала навсегда при менеджере безопасности; настройка networkaddress.cache.ttl.

DNS как инструмент: простая балансировка — несколько A-записей (round-robin), географическая — разные ответы по региону клиента (GeoDNS), переключение при отказе. Ограничение — кэширование: быстро увести трафик только DNS-ом нельзя.

Сбои. DNS — частая причина «всё сломалось»: истёк домен, ошибка в зоне, недоступен резолвер, исчерпан лимит запросов. В Kubernetes ndots:5 заставляет пробовать несколько суффиксов на каждое имя — лишние запросы и задержка.

Пример

$ dig +trace api.shop.ru
.             518400  IN NS  a.root-servers.net.
ru.           172800  IN NS  a.dns.ripn.net.
shop.ru.      345600  IN NS  ns1.shop-hosting.ru.
api.shop.ru.     300  IN A   93.184.216.34      # TTL 5 минут

Что хотят услышать

  • Иерархия зон и роль рекурсивного резолвера.
  • Цепочка запросов: корень → TLD → авторитетный.
  • Кэширование и TTL, практический смысл при смене адреса.
  • Основные типы записей.

Частые ошибки

  • Считать, что браузер сам ходит к корневым серверам.
  • Ожидать, что смена A-записи сразу видна всем.

Что спросят дальше

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем