image

Увеличение числа пользователей Интернета в развивающихся странах влечёт за собой необходимость развития соответствующей инфраструктуры, в том числе и DNS-серверов.

За последнее несколько лет география корневых серверов DNS была существенно расширена. Ещё совсем недавно рабочие узлы корневых серверов были в основном сконцентрированы в Европе и США, то сегодня они появляются в странах Азии, Африки, Южной Америки. В этом году один из узлов сервера K-Root был установлен даже в Иране, с которого до сих пор не сняты до конца западные санкции.

Вопрос расширения корневой системы DNS актуален и для России. Определённый вклад в его решение удалось внести и нам: в августе этого года у нас был размещён один из узлов корневого 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-сервера для обработки запросов;
  • коммутатор.

Графически эту схему можно представить так:

Старая архитектура узлов DNS-серверов K-Root

В новой архитектуре понятие “локальный узел” отсутствует вообще. Вместо него используется понятие “удалённый узел” (hosted node).
Удалённые узлы организованы на базе серверов Dell. Никакого сетевого оборудования в составе удалённых узлов нет.
Серверы, на которых установлено специализированное ПО, сами устанавливают BGP-сессию с маршрутизаторами предоставляющего хостинг оператора и анонсируют префиксы K.Root от имени AS25152. Благодаря технологии Anycast различие между основным и удалёнными узлами, по сути, нивелируется.

Новая архитектура удалённых узлов DNS-серверов K-Root


Для управления конфигурациями используется Ansible (презентация инженера RIPE NCC), что позволяет ускорить и автоматизировать процессы развёртывания ПО. В качестве рабочего ПО используются 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"

Для анонсирования префиксов используется exabgp.

Технические требования к локальным узлам


К серверам, выступающим в качестве локальных узлов K-root, RIPE NCC предъявляет следующие требования:
  • модель семейства Dell Power Edge 2xx (предпочтительнее — R320 или R420);
  • минимум 16 ГБ оперативной памяти;
  • многоядерный процессор;
  • минимум 2 Ethernet-порта c суммарной пропускной способностью 2 ГБ/c;
  • RAID-контроллер PERC H310
  • два SATA-диска ёмкостью 500 ГБ каждый;
  • наличие интегрированного контроллера удалённого доступа iDRAC 7 Enterprise;
  • наличие у сервера двух блоков питания;
  • выделение IP-адресов (как IPv4, так и IPv6).

Потенциальный хостер должен предоставить в распоряжение RIPE NCC сервер, обладающий описанными выше характеристиками. В нашем случае мы установили дополнительный блок питания для подключения сервера к разным вводам электропитания.

Хостинг К-root: как это получилось у нас


Система корневых серверов DNS постоянно расширяется. Организации, контролирующие корневые серверы, периодически объявляют конкурс на размещение новых обслуживающих узлов. Принять участие может любой оператор связи, техническая инфраструктура которого соответствует предъявляемым оператором требованиям.

О планах по расширению системы K-root мы узнали в апреле 2015 года. Среди кандидатов на расположение новых узлов системы K-root проводился конкурс, в ходе которого оценивались технические и организационные возможности потенциальных хостеров. Немаловажным критерием отбора на этом конкурсе является наличие хорошей связности. Только хорошая связность может быть гарантией того, что новый сервер сможет обслуживать большое количество клиентов.

Мы оформили все необходимые документы, и вскоре наша кандидатура была одобрена.

После этого мы заказали сервер, соответствующий предъявляемым RIPE NCC требованиям, и к августу ону же был установлен в одном из наших дата-центров.

Размещение узла K-root — проект абсолютно некоммерческий. Перед установкой сервера мы подписали с RIPE NCC протокол о взаимопонимании (образец на английском языке можно посмотреть здесь), в котором прямо указывается, что обе стороны выражают заинтересованность в улучшении связности системы DNS — и при этом ни слова о денежно-коммерческой составляющей.

Договор о хостинге узла K-root имеет бессрочный характер. И мы, и RIPE NCC заинтересованы в развитии партнёрских отношений.

Что это нам даёт


Какие преимущества даёт участие в этом некоммерческом проекте нам?

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

Надеемся, что в будущем нам удастся принять участие и в других масштабных проектах по развитию Интернета.

Комментарии (6)


  1. lexore
    16.10.2015 14:20

    Думаю, многим были бы интересны графики нагрузки.
    Хотя бы, по генерации трафика.


    1. clickfreak
      16.10.2015 14:47
      +4

      К сожалению, сайт k-root'а в процессе реорганизации и статистика новых узлов недоступна. Приведу график DNS-запросов к серверу, который нам прислали в сентябре:
      запросы к узлу k-root в Селектеле
      Данные с интерфейсов (зелёный — входящий):


  1. pavelodintsov
    16.10.2015 14:31
    +3

    Отличное дело! Молодцы — еще больше надежности Интернету :)


  1. pavelodintsov
    16.10.2015 14:32

    Кстати, а как определить — это Ваша машинка или нет?

    traceroute k.root-servers.net
    traceroute to k.root-servers.net (193.0.14.129), 64 hops max, 52 byte packets
     1  openwrt (192.168.0.1)  20.276 ms  0.897 ms  0.900 ms
     2  vpnpool-77-247-171-001.users.mns.ru (77.247.171.1)  2.737 ms  1.777 ms  1.410 ms
     3  df-1-142.users.mns.ru (80.70.224.142)  1.437 ms  1.294 ms  1.253 ms
     4  gw.mns.ru (80.70.239.254)  60.063 ms  365.946 ms  56.454 ms
     5  as49505.ix.dataix.ru (178.18.224.42)  12.769 ms  12.471 ms  12.102 ms
     6  k.root-servers.net (193.0.14.129)  13.793 ms  16.085 ms  14.134 ms
    


    1. clickfreak
      16.10.2015 15:00
      +4

      Очень похоже на нас, проверить можно с помощью dig:

      $ dig @k.root-servers.net +nsid +norec  | grep NSID
      ; NSID: 6e 73 31 2e 72 75 2d 6c 65 64 2e 6b 2e 72 69 70 65 2e 6e 65 74  (n) (s) (1) (.) (r) (u) (-) (l) (e) (d) (.) (k) (.) (r) (i) (p) (e) (.) (n) (e) (t)
      

      В зависимости от IPv4/IPv6 ответ может различаться, добавляйте в параметры "-4"/"-6" для явного указания протокола

      Альтернативно можно воспользоваться скриптом nmap (требуются права root'а):

      $ sudo nmap -sSU -p 53 --script dns-nsid k.root-servers.net
      
      Starting Nmap 6.40 ( http://nmap.org ) at 2015-10-16 14:56 MSK
      Nmap scan report for k.root-servers.net (193.0.14.129)
      Host is up (0.0016s latency).
      PORT   STATE SERVICE
      53/tcp open  domain
      | dns-nsid: 
      |   NSID: ns1.ru-led.k.ripe.net (6e73312e72752d6c65642e6b2e726970652e6e6574)
      |   id.server: ns1.ru-led.k.ripe.net
      |_  bind.version: NSD 4.1.3
      53/udp open  domain
      | dns-nsid: 
      |   NSID: ns1.ru-led.k.ripe.net (6e73312e72752d6c65642e6b2e726970652e6e6574)
      |   id.server: ns1.ru-led.k.ripe.net
      |_  bind.version: NSD 4.1.3
      
      Nmap done: 1 IP address (1 host up) scanned in 1.55 seconds
      

      ns1.ru-led.k.ripe.net — хостнейм узла в нашем ДЦ


      1. pavelodintsov
        16.10.2015 15:02
        +1

        Оно!

        dig @k.root-servers.net +nsid +norec  | grep NSID
        ; NSID: 6e 73 31 2e 72 75 2d 6c 65 64 2e 6b 2e 72 69 70 65 2e 6e 65 74  (n) (s) (1) (.) (r) (u) (-) (l) (e) (d) (.) (k) (.) (r) (i) (p) (e) (.) (n) (e) (t)