Прошедший месяц оказался для нас богатым на интересные события. Вот ещё одна новость: теперь у нас размещён один из узлов корневого DNS-сервера K-root. О том, как нам это удалось, мы подробно расскажем в этой статье.
Корневые DNS-серверы: краткая справка
Как известно, система DNS используется в Интернете для обеспечения связи между доменными именами и IP-адресами. Высший уровень иерархии DNS занимают корневые серверы. Они содержат информацию обо всех доменах верхнего уровня (TLD). Эта информация указывает, на какие авторитетные NS-серверы нужно отправлять последующий запрос для рекурсивного разрешения доменного имени.
Система DNS была создана в 1980-х годах. С этого времени и вплоть до 2000-го года система корневых DNS-серверов состояла из первичного сервера (сначала он назывался ns.internic.net, но потом был переименован в a.root-servers.net) и его реплик, впоследствии получившим имена по буквам латинского алфавита: b.root-servers.net, c.root-servers.net и так далее — до m.root-servers.net. Каждый из тринадцати корневых серверов управляется отдельным оператором.
Начиная с начала 2000-х годов в системе корневых серверов используется технология Anycast. Это способствовало существенному расширению её географии и повышению уровня надёжности. Вокруг каждого корневого сервера выстроена система обслуживающих узлов, расположенных по всему миру.
Операторoм системы серверов K-root является некоммерческая организация RIPE NCC. Рассмотрим подробнее, как устроена система K-root с архитектурной точки зрения.
Архитектура системы K-root
Весной этого года система K-root перешла на новую, модернизированную архитектуру. Чтобы лучше понять суть всех последних изменений, рассмотрим вкратце, как всё было устроено раньше.
В старой архитектуре все узлы системы K-root подразделялись на два типа: основные (core nodes) — мощные DNS-серверы с отдельной системой маршрутизаторов и коммутаторов и локальные (local nodes). В состав каждого локального узла входили следующие элементы:
- роутер, который анонсировал сети k.root участникам точки обмена трафиком;
- два NS-серверы для обработки запросов;
- коммутатор.
Графически эту схему можно представить так:
В новой архитектуре понятие «локальный узел» отсутствует вообще. Вместо него используется понятие «удалённый узел» (hosted node). Удалённые узлы организованы на базе серверов Dell (о технических требованиях к этим серверам речь ещё пойдёт ниже). В их состав не входит никакого сетевого оборудования. Серверы, на которых установлено специализированное ПО, сами устанавливают BGP-сессию с маршрутизаторами предоставляющего хостинг оператора и анонсируют префикс K.Root.
Сервер отвечает за анонсирование префикса K.Root от имени AS25152. Благодаря технологии Anycast различие между основным и удалёнными узлами по сути нивелируется.
Управление конфигурациями в новой архитектуре осуществляется с помощью Ansible, что позволяет ускорить и автоматизировать процессы развёртывания ПО. На разных узлах установлены разные DNS-серверы: BIND, NSD и Knot. Узнать, какой сервер именно сервер используется на ближайшем к вам узле k.root, можно с помощью утилиты dig:
$ dig @k.root-servers.net version.bind chaos txt +short
"Knot DNS 1.6.4"
$ dig @k.root-servers.net version.bind chaos txt +short
"NSD 4.1.3"
Изменилась и система внутренней маршрутизации. На смену протоколу OSPF (Open Shortest Path First) пришёл iBGP. Для анонсирования префиксов используется exabgp.
Технические требования к локальным узлам
К серверам, выступающим в качестве локальных узлов K-root, RIPE NCC предъявляет следующие требования:
- модель семейства Dell Power Edge 2xx (предпочтительнее — R320 или R420);
- минимум 16 ГБ оперативной памяти;
- многоядерный процессор;
- RAID-контоллер PERC H310
- два SATA-диска ёмкостью 500 ГБ каждый;
- наличие интегрированного контроллера удалённого доступа iDRAC 7 Enterprise;
- наличие у сервера двух блоков питания;
- выделение IP-адресов (как IPv4, так и IPv6).
Хостинг К-root: как это получилось у нас
Система корневых серверов DNS постоянно расширяется. Организации, контролирующие корневые серверы, периодически объявляют конкурс на размещение новых обслуживающих узлов. Принять участие может любой оператор связи, техническая инфраструктура которого соответствует предъявляемым оператором требованиям.
О планах по расширению системы K-root мы узнали в апреле 2015 года. Среди кандидатов на расположение новых узлов системы K-root проводился конкурс, в ходе которого оценивались технические и организационные возможности потенциальных хостеров. Немаловажным критерием отбора на этом конкурсе является наличие хорошей связности. Только хорошая связность может быть гарантией того, что новый сервер сможет обслуживать большое количество клиентов.
Мы оформили все необходимые документы, и вскоре наша кандидатура была одобрена.
После этого мы заказали сервер, соответствующий предъявляемым RIPE NCC требованиям, и к августу он уже был установлен в одном из наших дата-центров.
Размещение узла K-root — проект абсолютно некоммерческий. Перед установкой сервера мы подписали с RIPE NCC протокол о взаимопонимании (образец на английском языке можно посмотреть здесь), в котором прямо указывается, что обе стороны выражают заинтересованность в улучшении связности системы DNS — и при этом ни слова о денежно-коммерческой составляющей.
Какие преимущества даёт участие в этом некоммерческом проекте нам?
Во-первых, мы получили очередное подтверждение стабильности и надёжности нашей инфраструктуры. Во-вторых, нам удалось внести собственный вклад в развитие системых корневых серверов DNS, в повышение уровня её надёжности и отказоустойчивости.
Договор о хостинге узла K-root имеет бессрочный характер. И мы, и RIPE NCC заинтересованы в развитии партнёрских отношений. Надеемся, что и в дальнейшем мы сможем принимать участие в проектах по развитию Интернета.