DNS
DNS (Domain Name System, система доменных имён) — это распределённая иерархическая система, предназначенная для преобразования удобных для человека символьных доменных имён (например, ru.wikipedia.org) в машинные IP-адреса (например, 185.15.59.224), необходимые для установления соединения с узлами в компьютерных сетях, прежде всего в сети Интернет. DNS также выполняет обратную функцию — преобразование IP-адресов в доменные имена, а также обеспечивает работу других записей, связанных с маршрутизацией электронной почты, проверкой подлинности и распределением нагрузки.
История
До появления DNS в 1980-х годах для сопоставления имён компьютеров с IP-адресами в сети ARPANET использовался единый файл hosts.txt, который централизованно обновлялся и распространялся администраторами. С ростом сети этот подход стал непрактичным из-за задержек при обновлении и единственной точки отказа.
В 1983 году Пол Мокапетрис (Paul Mockapetris) разработал спецификации DNS, опубликованные в RFC 882 и RFC 883 (позже заменённые RFC 1034 и RFC 1035). Система была внедрена в 1984 году и заменила файл hosts.txt. Изначально DNS проектировалась как распределённая база данных с иерархической структурой, устойчивая к сбоям отдельных узлов и масштабируемая для глобальной сети.
Ключевым нововведением стало делегирование ответственности за отдельные зоны (домены) разным администраторам, что позволило децентрализовать управление именами. В 1987 году были опубликованы протоколы динамического обновления и инкрементальной передачи зон, расширившие возможности системы.
Принцип работы
DNS работает по модели «клиент-сервер» на основе протоколов UDP (порт 53) и TCP (порт 53). Процесс разрешения имени включает несколько этапов:
- Запрос от приложения — программа (браузер, почтовый клиент) отправляет запрос на преобразование доменного имени в IP-адрес локальному резолверу (обычно встроенному в операционную систему).
- Проверка кэша — резолвер сначала проверяет локальный кэш (временное хранилище ранее полученных ответов). Если запись найдена и не устарела (срок жизни TTL не истёк), ответ возвращается немедленно.
- Обращение к рекурсивному серверу — если записи в кэше нет, резолвер отправляет рекурсивный запрос DNS-серверу провайдера или публичному DNS-серверу (например, Google Public DNS —
8.8.8.8). - Рекурсивный поиск — рекурсивный сервер последовательно обращается к корневым серверам, серверам доменов верхнего уровня (TLD) и авторитетным серверам запрашиваемого домена, пока не получит искомую запись.
- Возврат ответа — найденный IP-адрес передаётся обратно резолверу, который кэширует его и возвращает приложению.
Типы DNS-серверов
- Корневые серверы — 13 логических корневых зон (обозначаемых буквами от A до M), управляемых разными организациями. Они хранят информацию о серверах всех доменов верхнего уровня (TLD).
- Серверы TLD — отвечают за домены верхнего уровня (например,
.com,.org,.ru,.рф). Хранят записи о серверах, авторитетных для доменов второго уровня. - Авторитетные серверы — содержат фактические DNS-записи для конкретного домена (например, записи A, AAAA, MX, CNAME). Могут быть первичными (мастер) и вторичными (слейв) для обеспечения отказоустойчивости.
- Рекурсивные серверы — выполняют полный поиск от имени клиента, кэшируют результаты и обслуживают множество пользователей.
Структура доменного имени
Доменное имя представляет собой иерархическую последовательность меток, разделённых точками. Читается справа налево:
- Корневой домен — невидимая точка в конце имени (часто опускается).
- Домен верхнего уровня (TLD) —
.com,.org,.ru,.eduи другие. Делятся на общие (gTLD), национальные (ccTLD) и инфраструктурные (.arpa). - Домен второго уровня — основное имя, регистрируемое владельцем (например,
wikipediaвwikipedia.org). - Поддомены — дополнительные уровни слева (например,
ruвru.wikipedia.org).
Максимальная длина полного доменного имени — 255 символов, каждой метки — 63 символа. Допустимые символы: буквы латиницы, цифры и дефис (для национальных доменов — также символы национальных алфавитов в кодировке Punycode).
Типы DNS-записей
DNS-зона содержит набор ресурсных записей (RR), каждая из которых имеет тип, класс, TTL и данные. Основные типы:
- A (Address) — сопоставляет домен с IPv4-адресом (32 бита).
- AAAA (IPv6 Address) — сопоставляет домен с IPv6-адресом (128 бит).
- CNAME (Canonical Name) — создаёт псевдоним для другого доменного имени (используется для перенаправления).
- MX (Mail Exchange) — указывает почтовый сервер для обработки электронной почты домена с приоритетом.
- NS (Name Server) — задаёт авторитетные серверы для зоны.
- TXT (Text) — хранит произвольные текстовые данные (часто используется для SPF, DKIM, DMARC и других проверок).
- SOA (Start of Authority) — содержит административную информацию о зоне (первичный сервер, контактный email, серийный номер, таймеры).
- SRV (Service) — указывает местоположение конкретных служб (например, SIP, LDAP).
- PTR (Pointer) — используется для обратного разрешения (IP → домен).
Протокол и безопасность
Базовый протокол DNS не обеспечивает шифрования и аутентификации, что делает его уязвимым для атак типа «человек посередине», подмены ответов (DNS spoofing) и кэш-отравления. Для повышения безопасности разработаны расширения:
- DNSSEC (DNS Security Extensions) — добавляет цифровые подписи к DNS-записям, позволяя проверять их подлинность и целостность. Реализован через добавление записей RRSIG, DNSKEY, DS и NSEC/NSEC3.
- DNS over HTTPS (DoH) — шифрует DNS-запросы через протокол HTTPS (порт 443), скрывая их от перехвата.
- DNS over TLS (DoT) — шифрует DNS-запросы через протокол TLS (порт 853).
- DNSCrypt — проприетарный протокол для шифрования трафика между клиентом и резолвером.
Применение
DNS является критически важной инфраструктурой Интернета. Основные сценарии использования:
- Разрешение имён — обеспечение доступа к веб-сайтам, почтовым серверам, FTP и другим сервисам по удобным именам.
- Балансировка нагрузки — использование нескольких записей A/AAAA с разными IP-адресами для распределения трафика (round-robin DNS).
- Гео-маршрутизация — возврат разных IP-адресов в зависимости от географического положения клиента (используется CDN-провайдерами).
- Проверка подлинности почты — записи SPF, DKIM и DMARC в TXT-записях помогают бороться со спамом и фишингом.
- Сервисная ориентация — записи SRV позволяют клиентам находить серверы определённых служб (например, для VoIP или Active Directory).
Критика и ограничения
- Уязвимость к DDoS-атакам — корневые и TLD-серверы являются точками концентрации трафика; атаки на них могут нарушить работу значительной части Интернета.
- Задержки при разрешении — рекурсивный поиск может занимать до нескольких секунд, особенно при отсутствии кэша.
- Проблемы с конфиденциальностью — незашифрованные DNS-запросы могут перехватываться провайдерами и третьими лицами для анализа трафика.
- Сложность управления — для крупных организаций поддержка DNS-зон, DNSSEC и миграция между серверами требуют квалифицированного администрирования.
- Зависимость от централизованных регистраторов — домены верхнего уровня контролируются ICANN и национальными регистратурами, что создаёт риски цензуры и захвата имён.
Интересные факты
- Корневых серверов физически 13, но они дублированы по всему миру с помощью anycast-маршрутизации — на 2025 год насчитывается более 1500 экземпляров корневых серверов.
- Первый корневой сервер (A) управляется компанией Verisign с 1993 года.
- Максимальное количество уровней вложенности домена не ограничено протоколом, но на практике редко превышает 5–6.
- Протокол DNS был одним из первых, где использовался UDP для запросов и TCP для передачи больших ответов (например, зон с DNSSEC).
- В 2018 году Google и Mozilla начали внедрять DoH в браузерах Chrome и Firefox, что вызвало дискуссии о централизации DNS-трафика и обходе провайдерского контроля.
Источники
- RFC 1034 — Domain Names — Concepts and Facilities (1987)
- RFC 1035 — Domain Names — Implementation and Specification (1987)
- RFC 4033–4035 — DNS Security Extensions (DNSSEC) (2005)
- RFC 8484 — DNS Queries over HTTPS (DoH) (2018)
- RFC 7858 — Specification for DNS over Transport Layer Security (TLS) (2016)
- P. Mockapetris, K. Dunlap — «Development of the Domain Name System» (1988)
- ICANN — «DNS Glossary» (icann.org)
- Verisign — «The Root Zone» (verisign.com)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →