Служба DNS входит в число основных служб Интернета, обеспечивающих его функционирование. Для её работы необходимо наличие разных видов серверов, обычно территориально находящихся на значительном расстоянии друг от друга. Понимание принципов их взаимодействия позволит Администратору принимать правильные решения в случае возникновения непредвиденных ситуаций, которых может быть множество. Рассмотрим основные виды DNS-серверов и схему их взаимодействия между собой.
Базовые понятия о DNS-серверах
В статье, посвящённой жизненному циклу домена, мы уже рассматривали структуру системы доменных имён, в которой для каждой части доменного имени выделяется отдельная доменная зона, управляемая одним или несколькими DNS-серверами. Исходя из этого, можно выделить следующие основные виды серверов:
- Корневой (Root server);
- Верхнего уровня (TLD server);
- Авторитативный (Authoritative server);
- Рекурсивный или перенаправляющий (Recursive server).
Рассмотрим более детально назначение серверов каждой группы.
Корневой
Root-сервер обслуживает корневую доменную зону, которая отвечает за обработку крайней правой части имени сайта (см. Рисунок 1). Эту часть принято обозначать пустым символом. Обычно символ «.», стоящий перед корнем, опускается, что не мешает обработке домена.
Его основное назначение – хранение актуальной информации о TLD-серверах, что позволяет находить их и обрабатывать соответствующую группу символов в названии сайта.
Их число зависит от размера DNS-пакета и поэтому не может превышать тринадцать единиц. Однако из-за наличия зеркал их общее количество во всём мире составляет примерно двести единиц. Зеркала разбросаны по всей территории Земли – в Южной и Северной Америке, Европе и Африке. Они повышают уровень отказоустойчивости системы DNS и разгружают наиболее загруженные участки сети.
Рисунок 1. Схема обработки DNS-запросов серверами разных видов.
TLD-сервер
TLD (Top Level Domain) server обеспечивает обработку первой части названия домена, стоящей после корня – gov, info, edu, net, com, org и др. (см. Рисунок 1). Может обслуживать разные виды доменных зон верхнего уровня в зависимости от типа верхнего домена: gTLD (общий), sTLD (спонсируемый), ccTLD (национальный) и др.
Этот сервер является первым в иерархии обработчиков запрашиваемых имён, не считая корневого. За ним могут следовать обработчики второго, третьего и других уровней.
Авторитативный
Authoritative server может быть первичным (master) и вторичным (slave). Их основное назначение – хранение и выдача по запросу реальных IP-адресов, относящихся к их зоне действия. Другими словами, они предоставляют ответы на запросы об именах, уже настроенных в их системе. Предварительно производится настройка на соответствующие доменные зоны.
Запросы к ним могут поступать только от серверов имён, чем достигается оптимальный режим их работы, способствующий формированию быстрых ответов на поступающие запросы.
Master обеспечивает хранение копий всех записей доменной зоны и возможность внесения в них изменений. Все подчинённые устройства получают обновления в автоматическом режиме.
Slave содержит точную копию первичной базы и напрямую взаимодействует с Master с помощью встроенных возможностей системы DNS. Внесение изменений не допускается. Основная цель использования – равномерное распределение нагрузки и защита от сбоя.
Authoritative server может предоставить один из следующих типов ответов на запрос о разрешении имени:
- Полное разрешение имени на основании DNS-записи из собственного хранилища;
- Перенаправление на соответствующий сервер имён в случае невозможности дать ответ;
- Ошибка NXDOMAIN, если запрашиваемое имя не существует;
- Ошибка NODATA, если имя существует, но соответствующая DNS-запись не найдена.
Рекурсивный
Recursive server отвечает на DNS-запросы, запрашивая информацию о DNS-записях у серверов имён, в частности gTLD и других уровней. Он не имеет постоянного хранилища данных, а лишь использует временную информацию или кеш, который периодически обновляется.
К группе Recursive server, в частности, относятся резолверы, кэширующие, перенаправляющие и некоторые другие виды программно-аппаратных устройств.
Приведём типичные виды ответов, формируемые устройствами этой группы:
- Полное разрешение запрашиваемого имени на основании DNS-записи из собственного хранилища (при его наличии);
- Ошибка NXDOMAIN или NOERROR;
- Неавторитетный ответ на основании информации из кеша предыдущего рекурсивного запроса;
- Отправка данных, полученных с удалённых авторитетных источников, например, TLD-серверов.
Recursive server наиболее часто используется для ответа на общие DNS-запросы в локальной сети.
Формирование DNS-запросов
Опишем примерную схему «работы» DNS-серверов по разрешению доменного имени на примере Рисунка 1.:
- DNS-клиент посылает рекурсивный запрос о разрешении названия сайта (example.net) локальному резолверу;
- Локальный резолвер просматривает свои зоны и в случае, если не была найдена нужная зона, формирует итеративный запрос к Root-server;
- Root-server возвращает IP-адрес сервера имён для домена верхнего уровня .net;
- Локальный резолвер посылает итеративный запрос TLD-серверу .net;
- Последний возвращает IP-адрес сервера имён, обслуживающего домен example.net;
- Локальный резолвер формирует итеративный запрос по предоставленному IP-адресу;
- Authoritative server разрешает доменное имя и возвращает резолверу IP-адрес запрашиваемого веб-ресурса;
- Резолвер передаёт полученный IP-адрес для «example.net» DNS-клиенту и обработка запроса завершается.
Мы лишь описали упрощённую схему определения IP-адреса, в которой могут присутствовать и другие элементы – дополнительные резолверы, кэширующие устройства и т. д., но принцип формирования и обработки запросов остаётся тем же.