Открыть сервис

Протокол DNS

DNS (Domain Name System, система доменных имён) — это иерархическая распределённая система, предназначенная для преобразования доменных имён (например, www.example.com) в IP-адреса (например, 192.0.2.1) и обратно, а также для хранения и предоставления других типов данных, связанных с доменными именами. DNS является фундаментальным компонентом интернета, обеспечивающим удобную навигацию для пользователей, избавляя их от необходимости запоминать числовые IP-адреса.

История

Ранние этапы

До появления DNS в середине 1970-х годов в сети ARPANET использовался единый файл hosts.txt, который размещался на центральном сервере и содержал таблицу соответствия имён хостов и их IP-адресов. Администраторы вручную отправляли изменения на этот сервер, после чего все остальные хосты периодически загружали обновлённую версию файла. С ростом сети такой подход стал неустойчивым: частые обновления, задержки в распространении, а главное — невозможность масштабирования привели к необходимости создания децентрализованной системы.

Разработка протокола

В 1983 году Пол Мокапетрис (Paul Mockapetris) из Университета Южной Калифорнии опубликовал спецификации DNS в RFC 882 и RFC 883 (позже заменённые на RFC 1034 и RFC 1035). Предложенная архитектура предусматривала иерархическое дерево пространства имён, децентрализованное администрирование с помощью зон ответственности и распределённую базу данных, доступную по запросам «клиент-сервер». Первые реализации были выполнены на операционной системе Berkeley Software Distribution (BSD).

Развитие и стандартизация

В 1980-е и 1990-е годы DNS превратился в глобальную инфраструктуру. Были введены новые типы записей, такие как MX для почтовых обменников и CNAME для псевдонимов. В 1999 году создана Международная корпорация по распределению доменных имён и номеров (ICANN), которая координирует администрирование корневой зоны DNS и политики делегирования доменов верхнего уровня. В начале 2000-х годов добавлены протоколы безопасности DNSSEC (DNS Security Extensions) для защиты от подмены данных.

Архитектура и принципы работы

Иерархическая структура

Пространство имён DNS организовано в виде дерева. Корнем является корневая зона (.), которая не имеет имени. Ниже располагаются домены верхнего уровня (Top-Level Domains, TLD), такие как .com, .org, .ru, .рф, и национальные коды (.us, .de, .cn). Внутри каждого TLD могут быть вложенные домены (например, .yandex.ru). Каждый узел дерева может быть в свою очередь разделён на поддомены. Администрирование каждой зоны (например, .ru) осуществляется уполномоченными организациями — регистраторами.

Компоненты системы

DNS-серверы — это компьютеры, хранящие записи о части пространства имён и отвечающие на запросы. Делятся на несколько типов:

  • Авторитативные серверы — содержат окончательные (authoritative) данные о конкретной зоне. Они хранят оригинальные записи и выдают их в ответе.
  • Рекурсивные серверы — выполняют запросы от имени клиента, последовательно опрашивая авторитативные серверы от корня до целевого домена, и возвращают результат.
  • Кэширующие серверы — частный случай рекурсивных, которые временно сохраняют ответы для ускорения повторных запросов.

DNS-резолверы — клиентские библиотеки или программы (например, в операционных системах или браузерах), которые формируют запросы к DNS-серверам и обрабатывают ответы.

Корневые серверы DNS — 13 логических групп серверов, обслуживающих корневую зону. Их физическое количество значительно больше (используется технологика Anycast), и они распределены по всему миру.

Процесс разрешения имени

Когда пользователь вводит доменное имя в браузере, происходит последовательность шагов:

  1. Резолвер проверяет локальный кэш операционной системы и браузера.
  2. Если записи нет, запрос направляется к настроенному DNS-серверу (часто от интернет-провайдера).
  3. DNS-сервер проверяет собственный кэш; при отсутствии начинает рекурсивное разрешение:
  • Запрос к корневому серверу — сервер отвечает списком серверов TLD, например, для зоны .com.
  • Запрос к серверу TLD — он указывает на авторитативный сервер домена (например, ns1.example.com).
  • Запрос к авторитативному серверу — возвращает IP-адрес для запрашиваемого имени.
  1. Ответ передаётся резолверу и клиенту, а также кэшируется на заданное время (TTLTime To Live).

Типы DNS-записей

Каждая ресурсная запись DNS содержит имя, тип, класс (обычно IN — Internet) и значение. Основные типы:

Тип записиОбозначениеНазначение
AAddressОтображает доменное имя на IPv4-адрес
AAAAIPv6 AddressОтображает доменное имя на IPv6-адрес
CNAMECanonical NameЗадаёт псевдоним имени, указывая на каноническое имя
MXMail ExchangeОпределяет почтовый сервер для домена
NSName ServerУказывает авторитативные серверы имён для зоны
TXTTextХранит произвольные текстовые данные (часто используется для SPF, DKIM, DMARC)
SOAStart of AuthorityСодержит административную информацию о зоне
SRVServiceУказывает сервера для определённых служб (например, SIP, LDAP)
PTRPointerИспользуется для обратного разрешения (IP → имя)

Протокол DNS

Формат сообщений

DNS-сообщения передаются по протоколу UDP (порт 53) или TCP (порт 53) в случае, когда ответ превышает 512 байт (или 4096 байт при использовании EDNS). Сообщение имеет фиксированный заголовок (12 байт), включающий идентификатор запроса, флаги (например, рекурсия желаема, ответ без ошибок), количество записей в секциях вопроса, ответа, обновлений и дополнительных секциях.

Типы запросов

  • Прямые запросы — поиск IP-адреса по доменному имени.
  • Обратные запросы — поиск доменного имени по IP-адресу (через зону in-addr.arpa).
  • Запросы типа ANY — получение всех записей одного имени (в современных реалиях часто отключены из-за уязвимости к DDoS).
  • Динамические обновления — изменение записей без ручного редактирования файлов зоны (DDNS).

Расширения

DNSSEC (RFC 4033-4035) добавляет цифровые подписи к DNS-записям, позволяя резолверам проверять подлинность ответов. Это защищает от атак «человек посередине» и подмены кэша.

EDNS0 (Extension Mechanisms for DNS) увеличивает максимальный размер UDP-пакета, добавляет поддержку меток DNSSEC и новых опций.

DNS over HTTPS (DoH) и DNS over TLS (DoT) — протоколы для шифрования DNS-запросов, предотвращающие прослушивание и модификацию трафика.

Классификация по уровню управления

Корневые домены

Администрируются корневыми серверами, которые управляются 12 организациями (включая Verisign, ICANN, Университет Южной Калифорнии). В России корневой сервер имеется в нескольких точках, включая Москву и Санкт-Петербург.

Домены верхнего уровня (TLD)

Подразделяются на:

  • Общие (gTLD): .com, .org, .net, .info, .biz и др.
  • Страновые (ccTLD): .ru (Россия), .us, .de, .cn.
  • Инфраструктурные: .arpa для обратного разрешения.
  • Интернационализированные (IDN): .рф, .дети, .онлайн.

Регистраторы

Организации, аккредитованные ICANN для продажи доменных имён пользователям. В России крупными регистраторами являются RU-CENTER, REG.RU, R01, Webnames.

Применение

Основные функции

  • Преобразование имён — основная задача, обеспечивающая доступ к веб-сайтам, почтовым серверам, FTP-ресурсам.
  • Балансировка нагрузки — с помощью циклической записи A (round-robin) можно назначать несколько IP-адресов одному имени.
  • Географическое распределение — использование GeoDNS позволяет направлять клиентов на ближайший сервер по IP-адресу.
  • Аутентификация электронной почты — записи SPF, DKIM, DMARC, хранящиеся в DNS, проверяют легитимность отправителя.
  • Идентификация служб — записи SRV используются для указания порта и приоритета служб (например, для VoIP, XMPP).

Примеры в российской инфраструктуре

Российские интернет-провайдеры (Ростелеком, МТС, Билайн) эксплуатируют собственные DNS-серверы, часто с кэшированием. Крупные компании (Яндекс, ВКонтакте) используют DNS для CDN и балансировки. В 2019 году в России был введён реестр запрещённых сайтов, доступ к которым блокируется на уровне DNS-резолверов провайдеров.

Проблемы и уязвимости

DDoS-атаки

DNS-инфраструктура подвержена распределённым атакам на отказ в обслуживании. Например, крупная атака на Dyn в 2016 году привела к недоступности многих сайтов (Twitter, Netflix).

Подмена кэша (Cache poisoning)

Злоумышленник внедряет поддельные ответы в кэш DNS-сервера, направляя трафик на мошеннические ресурсы. DNSSEC уменьшает риск, но не все серверы его поддерживают.

Фишинг через DNS

Атаки с использованием схожих доменных имён (typosquatting) или подмена записей для перенаправления на поддельные страницы банков, платежных систем.

Утечки данных

При использовании обычного DNS трафик передаётся в открытом виде, что позволяет провайдерам и злоумышленникам собирать статистику о посещаемых сайтах. DoH и DoT решают эту проблему частично.

Перспективы развития

Развитие DNS связано с повышением безопасности (повсеместное внедрение DNSSEC), распространением IPv6 (записи AAAA), шифрованием запросов (DoH/DoT), а также интеграцией с новыми протоколами и системами, такими как Blockchain DNS (например, Handshake) — хотя последние пока не получили широкого распространения. В России обсуждается возможность создания национальной системы доменных имён, не зависящей от глобальной корневой зоны, но такие решения не реализованы на практике.

Источники

  • RFC 1034 — Domain Names — Concepts and Facilities
  • RFC 1035 — Domain Names — Implementation and Specification
  • RFC 4033 — DNS Security Introduction and Requirements
  • Mockapetris, P., "The Domain Name System", Proceedings of the IEEE, 1984
  • Дж. Кумбс, "Система доменных имён DNS", 2002
  • Материалы ICANN и Координационного центра национального домена сети Интернет (КЦ .RU/.РФ)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →