Битлента
Словарь терминов3 мин чтения·

Корневые DNS-серверы: сколько их и как устроена иерархия

Корневые серверы стоят на вершине DNS и указывают, где искать зоны верхнего уровня. Почему их 13 имён, при чём тут anycast и что будет при сбое.

Вершина иерархии имён

Система доменных имён устроена как дерево. Внизу отдельные узлы, выше домены второго уровня, ещё выше зоны верхнего уровня вроде com или ru, а в самом основании находится корень, обозначаемый пустой меткой. Корневые серверы знают о корне и, что важнее, хранят адреса серверов зон верхнего уровня. На вопрос «где искать example.com» корень не отвечает, но подсказывает, кто обслуживает зону com.

Без этой подсказки резолверу было бы неоткуда начинать. Поэтому адреса корневых серверов заранее вшиты в программное обеспечение резолверов в виде списка, называемого корневыми подсказками (root hints).

Тринадцать имён, но не тринадцать машин

Корневых серверов принято называть тринадцать: их обозначают буквами от A до M, например a.root-servers.net. Число исторически связано с ограничением размера DNS-ответа по UDP, куда помещались адреса именно такого количества серверов. Но физических машин намного больше. Каждым из тринадцати идентификаторов управляет своя организация, а используется технология anycast: один и тот же IP-адрес анонсируется из множества точек мира, и запрос попадает в ближайшую по маршрутизации.

Поэтому правильнее говорить о тринадцати корневых адресах и многочисленных экземплярах за ними. Операторами выступают университеты, компании, научные и некоммерческие организации, а содержимое корневой зоны согласуется централизованно.

Что происходит при вашем запросе

Обычный человек с корневыми серверами почти не взаимодействует. Рекурсивный резолвер обращается к ним редко: ответ о серверах зоны com или ru живёт в кэше долго, поэтому чаще всего запрос сразу идёт к серверам нужной зоны верхнего уровня. Именно кэширование позволяет обслуживать миллиарды запросов, не перегружая корень. Общий порядок вы найдёте на странице rekursivnyy-dns-server.

Корневые серверы отвечают быстро и по существу: они отдают делегирование, то есть список NS-записей нужной зоны верхнего уровня и их адреса. Информации о конкретных сайтах у них нет.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно

Что будет, если корень недоступен

Из-за кэширования и множества экземпляров краткая недоступность части корневых серверов обычно остаётся незамеченной. Резолвер просто выбирает другой из списка. Серьёзно пострадала бы система лишь при длительном отказе всех корневых серверов, когда истёк бы срок жизни кэшированных записей. Такая ситуация крайне маловероятна именно благодаря распределённой архитектуре.

Для защиты корневой зоны используется DNSSEC: она подписана, и резолверы с проверкой подписей могут убедиться, что делегирование не подделано. Подробности вынесены на страницу dnssec.

Как заглянуть в корень самостоятельно

Команда dig . NS выведет список корневых серверов, а dig @a.root-servers.net ru. NS покажет делегирование зоны ru. Результат приходит не как окончательный ответ, а как перечень серверов зоны в секции authority или additional. Для трассировки всего пути пригодна опция +trace: dig +trace example.com покажет каждый шаг от корня до авторитетного сервера.

Это удобный способ понять, где в цепочке ломается разрешение имени: на уровне корня, зоны верхнего уровня или у сервера самого домена.

Корневая зона и её содержимое

Сама корневая зона невелика по меркам DNS. В ней нет записей о сайтах, только делегирования зон верхнего уровня: для каждой зоны перечислены её серверы имён и адреса, а также данные для проверки подписей. Файл корневой зоны публично доступен, его может скачать любой желающий и проверить содержимое. Изменения вносятся сравнительно редко и проходят согласование, после чего публикуются на все экземпляры серверов.

Специалистам интересна и практика использования локального зеркала корня: некоторые крупные резолверы держат копию корневой зоны у себя, чтобы не обращаться к корневым серверам по сети и быстрее получать делегирования. Для обычных пользователей это заметно лишь косвенно, но показывает, что корень служит справочником, а не узким местом. Если вы видите в ответах dig корневых серверов записи с большим TTL, вспомните, что именно длительное хранение делает нагрузку на корень умеренной.

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

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно
dnsкорневые серверыanycast

Часто задаваемые вопросы

Читайте также