Протокол 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), и они распределены по всему миру.
¶Процесс разрешения имени
Когда пользователь вводит доменное имя в браузере, происходит последовательность шагов:
- Резолвер проверяет локальный кэш операционной системы и браузера.
- Если записи нет, запрос направляется к настроенному DNS-серверу (часто от интернет-провайдера).
- DNS-сервер проверяет собственный кэш; при отсутствии начинает рекурсивное разрешение:
- Запрос к корневому серверу — сервер отвечает списком серверов TLD, например, для зоны .com.
- Запрос к серверу TLD — он указывает на авторитативный сервер домена (например, ns1.example.com).
- Запрос к авторитативному серверу — возвращает IP-адрес для запрашиваемого имени.
- Ответ передаётся резолверу и клиенту, а также кэшируется на заданное время (TTL — Time To Live).
¶Типы DNS-записей
Каждая ресурсная запись DNS содержит имя, тип, класс (обычно IN — Internet) и значение. Основные типы:
| Тип записи | Обозначение | Назначение |
|---|---|---|
| A | Address | Отображает доменное имя на IPv4-адрес |
| AAAA | IPv6 Address | Отображает доменное имя на IPv6-адрес |
| CNAME | Canonical Name | Задаёт псевдоним имени, указывая на каноническое имя |
| MX | Mail Exchange | Определяет почтовый сервер для домена |
| NS | Name Server | Указывает авторитативные серверы имён для зоны |
| TXT | Text | Хранит произвольные текстовые данные (часто используется для SPF, DKIM, DMARC) |
| SOA | Start of Authority | Содержит административную информацию о зоне |
| SRV | Service | Указывает сервера для определённых служб (например, SIP, LDAP) |
| PTR | Pointer | Используется для обратного разрешения (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 →


