Компьютеры находят друг друга по числам, которые называются IP-адресами. Люди пользуются названиями. DNS, система доменных имён, связывает одно с другим. DNS-разрешение — это один запрос к этой системе: вы называете имя, а она возвращает адреса.

Прежде чем браузер запросит страницу у example.com, ему нужно разрешить имя. Если этот шаг не удался, дальше ничего не происходит, как бы хорошо ни работал сервер.

Как проходит запрос

Обычно запрос проходит через серверы трёх видов (термины определены в RFC 8499):

  1. Stub-резолвер на вашем устройстве. Сам он ничего не ищет, а передаёт вопрос дальше.
  2. Рекурсивный резолвер, который обычно держит ваш интернет-провайдер или публичный сервис. Он находит ответ и какое-то время помнит его.
  3. Авторитетные серверы, которые хранят записи зоны, то есть той части пространства имён, за которую отвечают. Они отвечают по собственным данным.

Рекурсивный резолвер шаг за шагом спрашивает серверы уровнем выше, какие серверы авторитетны для этого домена, а затем обращается уже к ним. Ответ возвращается по той же цепочке.

A- и AAAA-записи

Записи — это строки зоны. Адрес узла задают две из них:

  • A-запись хранит адрес IPv4, например 192.0.2.10 (RFC 1035).
  • AAAA-запись хранит адрес IPv6, например 2001:db8::10 (RFC 3596).

У имени может быть несколько записей каждого вида, а у сайта могут быть только A-записи. И то и другое нормально. Запись CNAME — это другое: она говорит, что одно имя является псевдонимом другого.

Что может сказать ответ

Ответ Значение
Адреса получены Имя разрешается
NXDOMAIN Такого имени не существует
Пустой ответ без ошибки Имя существует, но записи нужного типа у него нет. Иногда это называют NODATA
SERVFAIL Серверу не удалось выполнить запрос из-за собственной неполадки
Нет ответа Время ожидания запроса истекло

NXDOMAIN — общепринятое название ошибки имени. Чаще всего её вызывают опечатка в имени, удалённая запись и истёкший домен.

Кеширование и TTL

У каждой записи есть время жизни, или TTL: оно говорит резолверам, как долго можно хранить ответ. Благодаря кешу DNS работает быстро и дёшево. Но из-за него же изменение доходит до всех не сразу. Отрицательные ответы тоже могут кешироваться, поэтому имя, которого минуту назад не существовало, может ещё какое-то время не открываться даже после того, как вы его добавили.

Разрешение имени — это ещё не исправность DNS

Если имя разрешается, это лишь первый шаг. Адрес может вести не на тот сервер. Один из двух типов адресов может не работать. Запись может быть верной сегодня и измениться завтра. Успешное разрешение говорит только о том, что запрос прошёл, а не о том, что всё настроено правильно.

DNS-разрешение в UptimeWire

UptimeWire раз в час разрешает имя узла каждого сайта стандартным системным резолвером. Проверка проходит, если имя разрешается хотя бы в один публичный адрес. Она не проходит, если имени не существует или у него нет публичного адреса. Если сервер имён не отвечает, результат показывается как неизвестный, а не как сбой.

UptimeWire не отслеживает изменения записей, распространение изменений, другие типы записей и DNSSEC. Как разбираться со сбоем, читайте в статье Как устранить ошибки DNS-разрешения.