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

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). Процесс разрешения имени включает несколько этапов:

  1. Запрос от приложения — программа (браузер, почтовый клиент) отправляет запрос на преобразование доменного имени в IP-адрес локальному резолверу (обычно встроенному в операционную систему).
  2. Проверка кэшарезолвер сначала проверяет локальный кэш (временное хранилище ранее полученных ответов). Если запись найдена и не устарела (срок жизни TTL не истёк), ответ возвращается немедленно.
  3. Обращение к рекурсивному серверу — если записи в кэше нет, резолвер отправляет рекурсивный запрос DNS-серверу провайдера или публичному DNS-серверу (например, Google Public DNS — 8.8.8.8).
  4. Рекурсивный поиск — рекурсивный сервер последовательно обращается к корневым серверам, серверам доменов верхнего уровня (TLD) и авторитетным серверам запрашиваемого домена, пока не получит искомую запись.
  5. Возврат ответа — найденный 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 →