Как развивалась DNS — система доменных имен

0
280
views

Свое начало система доменных имен берет в 50-х — 60-х годах прошлого века. Тогда она помогла упростить адресацию хостов в сети ARPANET и очень быстро перешла от обслуживания сотен компьютеров к работе с сотнями миллионов, — пишет сайт proglib.io.

DNS — система доменных имен

Появление ARPANET

В 1958 году правительство США основало Агентство передовых исследовательских проектов (ARPA). Усилия организации направили на разработку технологий в сфере хранения и передачи данных. В 60-х годах агентство получило новое аппаратное обеспечение — компьютер Q-32 — одну из крупнейших вычислительных систем на транзисторах весом более 60 тонн.

Она имела сразу два запоминающих устройства на магнитных барабанах, каждое из которых считывало и записывало по 50 бит информации. В то время Q-32 использовали для решения задач Министерства обороны США. Тогда данные между вычислительными системами переносили с помощью перфокарт, что существенно усложняло и замедляло расчёты.

Поиск нового решения военные доверили агентству ARPA в 1968 году. Его инженеры объединились с коллегами из MIT и разработали протокол пакетной коммутации. С его помощью они «связали» Q-32 с университетской машиной TX-2 (именно на ней пионер интернета Айвен Сазерленд написал Sketchpad — прародителя современных CAD).

Протокол совершенствовали всю первую половину 1969 года. Специалисты работали над уровнями взаимодействия компьютеров в сети: аппаратным, программным и модемным. Во второй половине года провели первое испытание технологии. Сеть состояла из двух терминалов, установленных на расстоянии 600 км в Калифорнийском и Стэнфордском университетах.

В качестве терминалов выступили 16-разрядные мини-компьютеры Honeywell DDP-316 с 12 кибибайтами оперативной памяти. Во время теста первый оператор вводил слово login на одной машине, а второй подтверждал, что видит его на экране другой.

Эксперимент прошел удачно, положив начало сети ARPANET.

Проблема адресации в сети

Сеть ARPANET стали использовать университеты, телекоммуникационные компании и учёные из разных областей науки. В 80-х к ней были подключены целых 320 компьютеров. Такое количество устройств породило проблему — стало сложно работать с адресами.

Для обмена данными каждый из подключенных компьютеров скачивал файл HOSTS.TXT с информацией об остальных хостах. Этот файл существовал в единственном экземпляре на сервере, размещенном в Стэнфордском исследовательском институте. Пользователям становилось все сложнее работать с раздутым списком, учитывая тот факт, что идентификаторы при подключении приходилось прописывать вручную.

Apranet
Фото — UCLA and BBN — CC BY-SA

Особенно сильно проблема была заметна во время отправки электронных писем. Чтобы переслать сообщение с одного компьютера на другой, пользователь должен был сам указать путь для его передачи между системами. Задачу усложнял тот факт, что отдельные устройства могли выходить в сеть в разное время дня. Выглядел коммуникационный путь следующим образом:

utzoo!decvax!harpo!eagle!mhtsa!ihnss!ihuxp!grg

Путь представлял собой цепочку из хостов, разделённых служебным символом (!). В конце последовательности прописывалось имя системы получателя сообщения. Если пользователь не знал коммуникационный путь, то он не мог отправить электронное письмо.

И в 1982 году группа специалистов из компании Network Working Group (NWG), возглавляемая Стивом Крокером (Steve Crocker), который изобрел Request For Comments, представила решение — концепцию доменных имен (RFC805). Инженеры разработали специальное программное обеспечение, которое автоматизировало поиск маршрутов и позволило адресовать сообщения любому хосту напрямую. Базовые принципы, заложенные в RFC805, стали отправной точкой для запуска привычной нам системы доменных имен.

Рождение DNS

В 1983 году инженеры Пол Мокапетрис (Paul Mockapetris) и Джон Постел (Jon Postel) решили распространить концепцию, описанную в RFC805, на всю сеть ARPANET. Они подготовили два новых RFC, в которых изложили основы DNS. В RFC882 «Domain Names: Concepts and Facilities» были описаны возможности системы доменных имен, а в RFC883 «Domain Names: Implementation and Specification» приведена детализация спецификации и методы внедрения.

Пол Мокапетрис
Фото — Jordiipa — CC BY-SA / На фото: Пол Мокапетрис

В частности, Мокапетрис предложил структуру идентификаторов хостов, содержащую имя и специальную тематическую категорию. Спустя год на основе спецификации Мокапетриса родилась классификация gTLD (generic Top-Level Domains), куда вошли домены .com, .edu, .net, .org, .int, .gov и .mil. Первое время ими управляла компания Network Solutions Inc., которую для этих целей наняло американское правительство.

Позже бразды правления перешли в руки специально созданной некоммерческой организации ICANN. В 1985 году, после внедрения DNS в ARPANET, свои домены зарегистрировали сразу шесть организаций. Самый первый из них — Symbolics.com — существует до сих пор. Сегодня это цифровой музей истории интернета.

С 1985 года система доменных имен претерпела множество изменений. Например, в неё добавили поддержку механизмов NOTIFY и IXFR, упростивших процессы репликации баз DNS между различными серверами. Подробнее об этих и других модификациях, мы расскажем в следующей части материала. Также мы поговорим о первых DNS-серверах, в частности, о проекте BIND, который до сих пор остается самым популярным решением в этой сфере.

Первые DNS-серверы

После того как в 1983 году Пол Мокапетрис (Paul Mockapetris) и Джон Постел (Jon Postel) предложили концепцию доменных имен для сети ARPANET, она достаточно быстро снискала одобрение ИТ-сообщества. Одними из первых реализовать её на практике взялись инженеры из Университета в Беркли. В 1984 году четыре студента представили первый DNS-сервер — Berkeley Internet Name Domain (BIND). Они работали в рамках гранта, выданного Управлением перспективных исследовательских проектов Министерства обороны США (DARPA).

Разработанная учащимися университета система автоматически преобразовывала DNS-имя в IP-адрес и наоборот. Интересно, что когда её код загрузили на BSD (платформу распространения ПО), первые исходники уже имели номер версии 4.3.

Первое время DNS-сервером пользовались сотрудники лабораторий университета. Вплоть до версии 4.8.3 за разработку BIND отвечали члены исследовательской группы Университета в Беркли — Computer Systems Research Group (CSRG), но во второй половине 1980-х DNS-сервер вырвался за пределы вуза — его передали в руки Пола Викси (Paul Vixie) из корпорации DEC. Пол выпустил обновления 4.9 и 4.9.1, а потом основал Internet Software Consortium (ISC), который с тех пор и отвечает за поддержку BIND. По словам Пола, все предыдущие версии опирались на код студентов из Беркли, и за прошедшие пятнадцать лет он полностью исчерпал свои возможности для модернизации. Поэтому в 2000 году BIND переписали с нуля.

Сервер BIND включает в себя сразу несколько библиотек и компонентов, реализующих «клиент-серверную» архитектуру DNS и отвечающих за настройку функций DNS-сервера. BIND широко распространен, особенно на Linux, и остается популярной реализацией DNS-сервера. Это решение установлено на серверах, обеспечивающих поддержку корневой зоны.

Помимо BIND существуют и другие реализации DNS-серверов. Например, PowerDNS, идущий в комплекте с Linux-дистрибутивами. Он написан Бертом Хубертом (Bert Hubert) из голландской компании PowerDNS.COM и поддерживается open source сообществом. В 2005 году PowerDNS внедрили на серверах фонда «Викимедиа». Решением также пользуются IaaS-провайдеры, европейские телекоммуникационные компании и организации из списка Fortune 500.

Отметим, что BIND и PowerDNS одни из самых распространенных, но не единственные DNS-серверы. Также стоит отметить Unbounddjbdns и Dnsmasq.

Развитие системы доменных имен

За всю историю DNS в её спецификацию вносили множество изменений. В качестве одного из первых и крупных обновлений добавили механизмы NOTIFY и IXFR в 1996 году. Они упростили репликацию баз данных системы доменных имен между первичным и вторичным серверами. Новое решение дало возможность настраивать уведомления об изменении DNS-записей. Такой подход гарантировал идентичность вторичной и первичной DNS-зоны плюс экономил трафик — синхронизация происходила только при необходимости, а не через фиксированные интервалы.

Фото — Richard Masoner — CC BY-SA

Изначально DNS-сеть была недоступна для широкой публики и потенциальные проблемы с ИБ не являлись приоритетом при разработке системы, но такой подход дал о себе знать впоследствии. С развитием интернета уязвимости системы начали эксплуатировать — например, появились такие атаки как DNS-спуфинг. В этом случае кэш DNS-серверов наполняют данными, не имеющими авторитетного источника, и перенаправляют запросы на серверы злоумышленников.

Чтобы решить проблему, в DNS внедрили криптоподписи для DNS-ответов (DNSSEC) — механизм, позволяющий построить цепочку доверия для домена от корневой зоны. Аналогичный механизм добавили для аутентификации хостов при передаче DNS-зоны — он получил название TSIG.

Модификации, упрощающие репликацию баз DNS и исправляющие проблемы безопасности, ИТ-комьюнити всячески приветствовало. Но были и изменения, которые сообщество встретило с критикой. В частности, переход от бесплатных к платным доменным именам. И это пример лишь одной из «войн» в истории DNS. 

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here