Служба DNS, невидимая обычному пользователю, периодически оказывается в фокусе интереса IT-специалистов. По разным поводам. Особенно актуальной эта тема становится в периоды, когда основные провайдеры DNS подвергаются DDoS-атакам. Именно тогда, когда DNS становится частично неработоспособной, приходит понимание, что DNS – это основа, костяк всей структуры интернета.
DNS переводит имена доменов в IP-адреса. Несмотря на то, что с виду эта задача выглядит очень просто, на деле ее решение привело к возникновению, наверное, самой сложной и большой информационной системы на планете.
- Реестры доменов
- Глобальные домены верхнего уровня (gTLD)
- Различные национальные домены верхнего уровня (ccTLD)
- И растущий с каждым годом список всех прочих доменов высшего уровня (.space, .photography и так далее)
Все это делает и так не простую систему еще более сложной.
Поскольку DNS расположена не на одной-единственной машине (будучи иерархической, распределенной и когерентной базой данных), она включает в себя множество иерархий, объектов. Обеспечение того, чтобы все эти иерархически-организованные объекты работали правильно становится ключевой задачей. Наверху иерархии расположены
- Root (.)
- Серверы глобальных доменов
- Авторитетные неймсерверы доменов
Каждый уровень в этой иерархии играет важную роль в процессе определения нужного IP-адреса.
- Реестры (например, Verisign, поддерживающая .com и .net)
- Регистраторы (например, GoDaddy и NameCheap)
- Все те, кто регистрирует доменные имена для своих сайтов
- Интернет-провайдеры
- DNS-провайдеры
Мы все часть этой системы, и для нас очень важно понимать ее и все время иметь в поле зрения важные аспекты, позволяющие системе DNS функционировать без ошибок и перебоев.
Рассмотрим ниже важный аспект системы DNS — «добавочные записи» или «glue records».
Glue record или добавочные записи
Glue record, или добавочная запись — это А-запись, в которой хранится IP-адрес, присвоенный домену или поддомену. Эти записи становятся крайне важными, когда неймсервер домена находится на поддомене этого же домена.
Glue record может быть найдена в разделе «дополнительные записи» (Additional records) DNS-ответа.
Давайте посмотрим на примере, как работают эти дополнительные записи. Предположим, у вас есть домен yourdomain.com, неймсерверы которого имеют адреса:
ns1.yourdomain.com ns2.yourdomain.com
И тут возникает коллизия, чтобы определить адрес yourdomain.com, надо получить его у ns1.yourdomain.com, адрес которого надо получить у него же самого. Получается бесконечный цикл.
Чтобы его разорвать, как раз и нужны Glue record, которые прямо сообщают IP-адрес неймсерверов в процессе обработки запроса на получение адреса для yourdomain.com.
В этом примере мы видим, как добавочные записи устраняют круговую зависимость, выдавая А-записи с IP-адресами для ns1.ctrls.in и ns1.ctrls.in неймсерверов домена ctrls.in.
Для доменов, которые не используют свои же субдомены для адресов неймсерверов, добавочные записи тоже полезны, они сокращают число шагов при определении адреса – вот, к примеру, как это устроено для Wikipedia.org
В этом примере Wikipedia.org возвращает ns1.wikimedia.org, ns2.wikimedia.org и ns3.wikimedia.org как имена неймсерверов для своего домена. Дополнительные записи сразу же сообщают их IP-адреса, опуская этап поиска адреса для домена Wikimedia.org.
У одной крупной китайской CDN записи А возвращали некорректные IP-адреса для ее неймсерверов.
Проверка DNS Expierence показала, что опрашиваемые в ходе теста различные авторитетные неймсервера возвращают правильный адрес IP. А вот проверка Direct DNS, когда опрашивается неймсервер уровня глобального домена, возвращал неправильный адрес IP.
Те же результаты дало исследование ситуации с помощью dig – dig «имя сервера» корневой_сервер — глобальный неймсервер давал неверные адреса.
Ошибка оказалась в том, что в какой-то момент регистратор доменных имен не передал выше по иерархии изменения в Glue record.
Представители CDN связались с регистратором доменного имени, и тот обновил Glue record для домена. Затем обновленная запись была транслирована на все gTLD сервера и проблема таким образом была решена.
Этот инцидент подчеркнул важность мониторинга работы всех уровней этой огромной системы – DNS. И тут нужно иметь правильную стратегию, чтобы выявить, на каком уровне возникла проблема и как ее решать – достаточно ли тут наших усилий или надо устанавливать контакт с теми, в чьей компетенции находится ее решение.
Проверить корректность корневые (glue) записей DNS можно при помощи, например, Pingdom: в процессе проверки будут получены IP адресы NS-серверов домена и сравнены их записи в корневых DNS-серверами с теми, которые указаны непосредственно в DNS-записях зоны.
Автор: WEBO Group