15%

Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код:

Skills
Начать
09.10.2024

Что такое DNS и иерархия DNS? Полное техническое руководство

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

По своей сути DNS функционирует как глобально распределённая база данных. Запросы разрешаются через структурированную цепочку делегирования — от корневых серверов на вершине, через серверы доменов верхнего уровня (TLD), вплоть до авторитативных серверов имён, которые хранят фактические записи для конкретного домена. Именно эта архитектура делает DNS одновременно быстрым, отказоустойчивым и расширяемым.

Почему DNS — это больше, чем просто «телефонная книга»

Аналогия с «телефонной книгой» — полезная отправная точка, но она существенно преуменьшает то, что DNS реально делает в производственных средах. DNS лежит в основе:

  • Разрешения имён — преобразования FQDN (полностью определённых доменных имён) в адреса IPv4 и IPv6
  • Маршрутизации электронной почты — MX-записи направляют SMTP-трафик к правильной почтовой инфраструктуре
  • Обнаружения сервисов — SRV-записи позволяют приложениям динамически находить сервисы (широко используется в SIP, XMPP и Kubernetes)
  • Управления трафиком — Geo-DNS и записи с взвешенной маршрутизацией обеспечивают глобальную балансировку нагрузки и переключение при сбоях на основе задержки
  • Обеспечения безопасности — TXT-записи содержат политики SPF, DKIM и DMARC; DNSSEC добавляет криптографическую проверку
  • Оркестрации CDN — выравнивание CNAME и Anycast-маршрутизация позволяют CDN прозрачно обслуживать ближайший граничный узел

Для тех, кто управляет средой VPS Хостинга или Выделенного сервера, понимание DNS на этом уровне не является опциональным — неправильно настроенный DNS является одной из наиболее распространённых первопричин сбоев приложений, проблем с доставляемостью электронной почты и ошибок при выпуске SSL-сертификатов.

Процесс разрешения DNS: пошаговое описание

Когда пользователь вводит `www.example.com` в браузер, происходит следующая последовательность действий. Понимание каждого шага критически важно для диагностики сбоев разрешения и оптимизации стратегий TTL.

Шаг 1: Проверка локального кэша

Операционная система сначала проверяет свой локальный кэш DNS (заполненный из предыдущих запросов). В Linux это может включать `systemd-resolved` или `nscd`. В Windows этот кэш поддерживает служба DNS Client. Если в кэше существует действительная запись в пределах её TTL, разрешение останавливается на этом шаге.

Шаг 2: От заглушки-резолвера к рекурсивному резолверу

Если в локальном кэше нет совпадения, заглушка-резолвер ОС перенаправляет запрос к рекурсивному DNS-резолверу — как правило, это резолвер вашего интернет-провайдера или настроенный публичный резолвер, например:

  • Google Public DNS: `8.8.8.8` / `8.8.4.4`
  • Cloudflare: `1.1.1.1` / `1.0.0.1`
  • Quad9: `9.9.9.9`

Рекурсивный резолвер выполняет основную работу по обходу иерархии DNS от имени клиента.

Шаг 3: Запрос к корневому серверу

Если у рекурсивного резолвера нет кэшированного ответа, он запрашивает один из 13 кластеров корневых серверов (адресованных как `a.root-servers.net` по `m.root-servers.net`). Это не 13 отдельных машин — это 13 групп Anycast-адресов, управляемых такими организациями, как ICANN, Verisign, NASA и RIPE NCC, с более чем 1 500 физическими экземплярами, распределёнными по всему миру.

Корневой сервер не возвращает IP-адрес. Он возвращает перенаправление — адрес авторитативного TLD-сервера для запрошенного суффикса (например, `.com`).

Шаг 4: Запрос к TLD-серверу

Рекурсивный резолвер запрашивает соответствующий сервер имён TLD. Для `.com` им управляет Verisign. TLD-сервер возвращает ещё одно перенаправление — авторитативные серверы имён для конкретного домена второго уровня (например, `ns1.example.com`).

Шаг 5: Запрос к авторитативному серверу имён

Рекурсивный резолвер запрашивает авторитативный сервер имён, который хранит файл зоны для `example.com`. Этот сервер возвращает фактическую DNS-запись — например, A-запись, сопоставляющую `www.example.com` с `93.184.216.34`.

Шаг 6: Кэширование ответа и доставка

Рекурсивный резолвер кэширует ответ в соответствии со значением TTL (Time to Live) записи, затем возвращает IP-адрес заглушке-резолверу клиента, которая передаёт его браузеру. Затем браузер открывает TCP-соединение (или QUIC для HTTP/3) с этим IP-адресом.

Важный нюанс: значения TTL устанавливаются владельцем домена на авторитативном сервере. TTL в 300 секунд означает, что запись может быть кэширована в течение 5 минут перед повторным запросом. Во время миграции или реагирования на инцидент заблаговременное снижение TTL (до 60–300 секунд) является стандартной операционной практикой для минимизации задержек распространения.

Иерархия DNS: архитектура и компоненты

Пространство имён DNS структурировано как перевёрнутое дерево. Каждый узел дерева является меткой, а полный путь от листа до корня образует доменное имя. Завершающая точка в `www.example.com.` представляет корень.

Уровень 1: Корневая зона

Корневая зона является вершиной иерархии DNS, представленной пустой меткой (`.`). Она содержит NS-записи, указывающие на TLD-серверы для каждого существующего домена верхнего уровня. Файл корневой зоны поддерживается IANA (Internet Assigned Numbers Authority) и в настоящее время содержит делегирования для более чем 1 500 TLD.

Корневые серверы работают по модели якоря доверия — цепочки проверки DNSSEC в конечном счёте завершаются на Ключе подписи ключей (KSK) корневой зоны, управление которым осуществляется через строго контролируемый церемониальный процесс.

Уровень 2: Домены верхнего уровня (TLD)

TLD-серверы являются авторитативными для всех доменов, зарегистрированных под их суффиксом. Существует несколько категорий:

Тип TLDПримерыТип оператора
Общий TLD (gTLD)`.com`, `.net`, `.org`, `.edu`Реестры, аккредитованные ICANN
Спонсируемый TLD (sTLD)`.gov`, `.mil`, `.edu`Ограниченные, спонсируемые организации
Национальный TLD (ccTLD)`.uk`, `.de`, `.jp`, `.io`Национальные реестры
Новый gTLD`.app`, `.tech`, `.cloud`, `.shop`Частные операторы реестров
Инфраструктурный`.arpa`IANA (используется для обратного DNS)

Уровень 3: Домены второго уровня (SLD) и поддомены

Домен второго уровня — это метка непосредственно левее TLD: `example` в `example.com`. Это единица, которую регистранты доменов приобретают и которой управляют. Когда вы регистрируете домен через такой сервис, как Регистрация доменов, вы приобретаете право управлять делегированием DNS для этого SLD.

Поддомены — это метки, добавляемые перед SLD (`www`, `mail`, `api`, `blog`). Они настраиваются полностью в файле зоны авторитативного сервера имён — дополнительная регистрация не требуется. Глубина поддоменов теоретически не ограничена, хотя существуют практические ограничения (общая длина FQDN не должна превышать 253 символа; каждая метка не должна превышать 63 символа).

Уровень 4: Авторитативные серверы имён и файлы зон

Авторитативные серверы имён являются источником истины для DNS-записей домена. Они отвечают на запросы с установленным флагом AA (Authoritative Answer). Файл зоны — это текстовая база данных, содержащая все ресурсные записи для домена.

Ключевые типы DNS-записей, которые должен знать каждый администратор:

Тип записиНазначениеПример
AСопоставляет имя хоста с IPv4-адресом`www 300 IN A 93.184.216.34`
AAAAСопоставляет имя хоста с IPv6-адресом`www 300 IN AAAA 2606:2800:220:1:248:1893:25c8:1946`
CNAMEПсевдоним, указывающий на другое имя хоста`blog CNAME www.example.com.`
MXПочтовый обменник с приоритетом`@ 3600 IN MX 10 mail.example.com.`
NSДелегирует зону серверу имён`@ IN NS ns1.example.com.`
TXTПроизвольный текст; используется для SPF, DKIM, DMARC`@ IN TXT "v=spf1 include:_spf.google.com ~all"`
SOAНачало авторитетности; метаданные зоныСерийный номер, обновление, повтор, истечение, минимальный TTL
SRVРасположение сервиса с портом и весом`_sip._tcp IN SRV 10 20 5060 sip.example.com.`
PTRОбратный DNS (IP в имя хоста)Используется в зонах `in-addr.arpa`
CAAОграничивает, какие центры сертификации могут выпускать SSL-сертификаты`@ IN CAA 0 issue "letsencrypt.org"`

Записи CAA заслуживают особого внимания: это часто упускаемый из виду контроль безопасности, который предотвращает выпуск SSL-сертификатов для вашего домена неавторизованными центрами сертификации. Если ваша CAA-запись не включает используемый вами центр сертификации, выпуск сертификата завершится ошибкой.

Рекурсивные резолверы и авторитативные серверы: важное различие

Эти два компонента архитектурно различны и часто путаются новичками.

АтрибутРекурсивный резолверАвторитативный сервер имён
РольВыполняет запросы от имени клиентовОтвечает на запросы о собственных зонах
Источник данныхКэш + запросы к вышестоящим серверамФайл зоны (локальная база данных)
Флаг AA в ответеНе установленУстановлен
ПримерыРезолверы ISP, 8.8.8.8, 1.1.1.1BIND, PowerDNS, NSD, Route 53
Кэширует ответыДа (соблюдает TTL)Нет (обслуживает авторитативные данные)
РазвёртываетсяISP, предприятиями, публичными провайдерамиВладельцами доменов, хостинг-провайдерами

Технически один сервер может выполнять обе роли, но в производственной среде это настоятельно не рекомендуется из соображений безопасности и производительности (открытые резолверы являются вектором для DDoS-атак с усилением DNS).

DNSSEC: криптографическая целостность цепочки DNS

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

Цепочка доверия DNSSEC работает следующим образом:

  1. Каждая зона подписывает свои записи с помощью Ключа подписи зоны (ZSK)
  2. Открытый ключ ZSK публикуется как запись DNSKEY
  3. Родительская зона подписывает хэш DNSKEY дочерней зоны, создавая запись DS (Delegation Signer)
  4. Эта цепочка простирается от корневой зоны (конечного якоря доверия) вплоть до отдельных записей

Проверка DNSSEC происходит на уровне рекурсивного резолвера. Валидаторы проверяют подписи по опубликованным ключам; если проверка не проходит, резолвер возвращает `SERVFAIL` вместо потенциально отравленного ответа.

Операционная оговорка: DNSSEC значительно увеличивает сложность управления зоной. Смена ключей, истечение срока действия подписей и синхронизация DS-записей с родительской зоной являются распространёнными причинами сбоев. Всегда проверяйте конфигурацию DNSSEC с помощью таких инструментов, как `dnsviz.net`, прежде чем включать её в производственной среде.

DNS в хостинговых средах: практические соображения

Распространение и TTL

«Распространение DNS» — широко неправильно используемый термин. На самом деле происходит истечение TTL в кэшах. Когда вы изменяете A-запись, резолверы, закэшировавшие старое значение, будут продолжать его отдавать до истечения TTL. В стандартном DNS нет активного механизма «проталкивания».

Для минимизации простоя при миграциях:

  1. Снизьте TTL затронутых записей до 300 секунд как минимум за 24–48 часов до изменения (чтобы существующие кэши успели истечь)
  2. Внесите изменение DNS
  3. После подтверждения стабильности новой конфигурации восстановите TTL до производственного значения (3600–86400 секунд)

Split-Horizon DNS

В средах с публичными и частными сетевыми сегментами — что характерно для VPS Хостинга или Выделенных серверовsplit-horizon DNS (также называемый split-brain DNS) возвращает разные ответы в зависимости от источника запроса. Внутренние клиенты разрешают `db.example.com` в частный адрес RFC 1918; внешние клиенты получают публичный IP или адрес балансировщика нагрузки. Это реализуется в BIND с помощью директив `view` или в PowerDNS через Lua-скрипты.

Обратный DNS (PTR-записи)

Обратный DNS сопоставляет IP-адреса с именами хостов, используя зоны `in-addr.arpa` (IPv4) или `ip6.arpa` (IPv6). PTR-записи критически важны для:

  • Доставляемости электронной почты — многие принимающие почтовые серверы отклоняют или существенно штрафуют почту с IP-адресов без соответствующих PTR-записей
  • Журналирования безопасности — обогащения журналов брандмауэра и журналов доступа именами хостов
  • Соответствия требованиям — некоторые нормативные базы требуют обратного DNS для аудиторских следов

Если вы используете Почтовый хостинг или самостоятельно управляемый почтовый сервер, убедитесь, что ваш хостинг-провайдер настроил PTR-запись для IP-адреса вашего сервера.

DNS и выпуск SSL-сертификатов

Проверки DNS-01 ACME (используемые Let’s Encrypt и другими центрами сертификации) требуют записи определённой TXT-записи в зону вашего домена для подтверждения контроля над доменом. Этот метод необходим для выпуска wildcard-сертификатов. Автоматизированное управление сертификатами (через `certbot` или `acme.sh`) требует API-доступа к вашему DNS-провайдеру для программного создания и удаления этих TXT-записей.

Распространённые режимы сбоев DNS и диагностика

Понимание режимов сбоев отличает опытного администратора от того, кто просто следует инструкциям.

NXDOMAIN — запрошенное имя не существует в зоне. Распространённые причины: опечатка в имени записи, зона не загружена или делегирование указывает на неправильные серверы имён.

SERVFAIL — сервер не смог выполнить запрос. Распространённые причины: сбой проверки DNSSEC, недоступные авторитативные серверы или повреждённый файл зоны (синтаксическая ошибка в записях SOA или NS).

Устаревший кэш — резолвер отдаёт устаревшую запись. Используйте `dig +nocache` или запрашивайте авторитативный сервер напрямую, чтобы обойти кэши резолверов.

Некорректное делегирование — NS-записи родительской зоны указывают на серверы имён, которые фактически не являются авторитативными для зоны (у них не загружена зона). Это скрытый режим сбоя, вызывающий периодические ошибки разрешения.

Основные диагностические команды:

“`bash

Query a specific resolver for an A record

dig @8.8.8.8 www.example.com A

Trace the full resolution path from root

dig +trace www.example.com

Check authoritative answer directly

dig @ns1.example.com www.example.com A +norec

Verify reverse DNS

dig -x 93.184.216.34

Check DNSSEC chain

dig www.example.com A +dnssec

Inspect SOA record (useful for checking serial after zone update)

dig example.com SOA

“`

Оптимизация производительности DNS

  • Развёртывание Anycast — авторитативные серверы, развёрнутые через Anycast, отвечают с географически ближайшего узла, снижая задержку запросов
  • Настройка TTL — более высокие TTL (3600–86400 с) снижают нагрузку на резолверы и улучшают частоту попаданий в кэш для стабильных записей; более низкие TTL (60–300 с) обеспечивают более быстрое переключение при сбоях для динамической инфраструктуры
  • Негативное кэширование — ответы NXDOMAIN кэшируются на время, указанное в поле минимального TTL SOA; чрезмерно длинные отрицательные TTL задерживают восстановление после неправильной конфигурации
  • EDNS Client Subnet (ECS) — позволяет рекурсивным резолверам передавать часть IP-адреса клиента авторитативным серверам, обеспечивая более точные решения по геомаршрутизации (за счёт некоторой приватности)
  • DNS over HTTPS (DoH) / DNS over TLS (DoT) — шифрует DNS-запросы при передаче, предотвращая перехват и манипуляции на уровне ISP; всё более важно для развёртываний, чувствительных к приватности

Матрица решений: выбор правильной конфигурации DNS

СценарийРекомендуемый подход
Простой сайт, один серверA-запись, указывающая на IP сервера; низкая сложность
Многорегиональное веб-приложениеGeo-DNS или взвешенный CNAME через управляемого DNS-провайдера
Самостоятельно управляемый почтовый серверОбязательны записи A + MX + PTR + TXT для SPF/DKIM/DMARC
Wildcard SSL-сертификатПроверка DNS-01 ACME; требуется API-доступ к DNS
Внутренние сервисы (частная сеть)Split-horizon DNS с внутренней зоной
Домен с высокими требованиями к безопасностиDNSSEC + CAA-записи + политика DMARC
Требование быстрого переключения при сбояхTTL <= 300 с для критических записей; маршрутизация на основе проверки работоспособности
Предотвращение захвата поддоменаРегулярный аудит висячих CNAME-записей

Ключевые технические выводы

  • Разрешение DNS — это многоэтапная цепочка делегирования: заглушка-резолвер > рекурсивный резолвер > корень > TLD > авторитативный сервер
  • 13 кластеров корневых серверов (не отдельных машин) используют Anycast для обслуживания более 1 500 физических экземпляров по всему миру
  • TTL управляет продолжительностью кэширования — «распространение» — это просто ожидание истечения кэшей, а не активное проталкивание
  • Авторитативные серверы хранят файлы зон; рекурсивные резолверы кэшируют и перенаправляют — никогда не путайте эти две роли
  • DNSSEC добавляет криптографическую проверку, но вносит операционную сложность; смена ключей и синхронизация DS-записей являются распространёнными точками отказа
  • PTR-записи обязательны для развёртываний почтовых серверов и журналирования безопасности
  • CAA-записи ограничивают, какие центры сертификации могут выпускать SSL-сертификаты для вашего домена
  • Некорректные делегирования и устаревшие отрицательные кэши — одни из наиболее коварных режимов сбоев DNS
  • Всегда используйте `dig +trace` для диагностики проблем разрешения от корня вниз, а не полагайтесь на вывод на уровне резолвера

Часто задаваемые вопросы

В чём разница между рекурсивным резолвером и авторитативным DNS-сервером?

Рекурсивный резолвер выполняет запросы к иерархии DNS от имени клиента и кэширует ответы. Авторитативный DNS-сервер хранит фактический файл зоны для домена и возвращает окончательные ответы с установленным флагом AA. Это архитектурно разные роли, хотя технически один демон может выполнять обе.

Почему распространение DNS занимает так много времени после изменения записи?

DNS не «распространяется» в активном смысле. Резолверы кэшируют записи на время TTL, установленного для записи. Если ваша A-запись имеет TTL 86400 секунд (24 часа), резолверы, закэшировавшие старое значение, будут продолжать его отдавать до 24 часов. Чтобы минимизировать это, снизьте TTL до 300 секунд как минимум за 24 часа до внесения изменения.

Что вызывает ответ SERVFAIL и как его исправить?

SERVFAIL чаще всего является результатом сбоя проверки DNSSEC, недоступных авторитативных серверов имён или повреждённого/некорректного файла зоны. Используйте `dig +dnssec` для проверки проблем DNSSEC, убедитесь, что ваши авторитативные серверы доступны и отвечают, и проверьте синтаксис файла зоны с помощью `named-checkzone`.

Нужен ли мне DNSSEC для моего домена?

DNSSEC настоятельно рекомендуется для доменов, обрабатывающих конфиденциальные транзакции, почтовую инфраструктуру или финансовые услуги. Он предотвращает атаки отравления кэша. Однако он добавляет операционные накладные расходы — смена ключей и управление DS-записями требуют тщательной автоматизации. Для большинства производственных доменов преимущества безопасности перевешивают сложность.

Какие DNS-записи необходимы для функционирующего почтового сервера?

Как минимум: MX-запись, указывающая на имя хоста вашего почтового сервера, A-запись, разрешающая это имя хоста, PTR-запись для IP-адреса сервера (настраивается вашим хостинг-провайдером), и TXT-записи для SPF, DKIM и DMARC. Отсутствие любой из них приведёт к проблемам с доставляемостью или прямому отклонению принимающими почтовыми серверами.

15%

Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код:

Skills
Начать