Все статьи
Числа и сеть

DNS: система доменных имён explained

Как работает DNS, типы записей (A, AAAA, MX, TXT, CNAME), DNS-запросы, troubleshooting.

6 апреля 2025
9 мин чтения
ConvertHub
#dns#домены#сеть

Введение

Когда вы вводите в адресной строке example.com, в течение миллисекунд происходит сложная цепочка событий, в результате которой браузер узнаёт IP-адрес сервера и устанавливает соединение. Этим занимается DNS — система доменных имён, без которой современный интернет в привычном виде существовать не мог бы. DNS — это огромная распределённая база данных, которая переводит понятные людям доменные имена в IP-адреса, необходимые машинам.

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

Что такое DNS

DNS (Domain Name System) — это иерархическая распределённая система, которая сопоставляет доменным именам различные данные: IP-адреса, информацию о почтовых серверах, текстовые записи, ключи шифрования и многое другое. Главная задача DNS — преобразование символьного имени в IP-адрес, но функциональность системы этим не ограничивается.

До появления DNS в начале 1980-х годов для разрешения имён использовался файл HOSTS.TXT, который централизованно вёл Stanford Research Institute. С ростом сети этот подход стал невозможным, и в 1983 году Пол Мокапетрис предложил DNS в её современном виде. Сегодня система обслуживает миллиарды запросов в секунду по всему миру.

Иерархия доменных имён

DNS имеет древовидную структуру. На вершине находятся корневые серверы (root), которые знают адреса серверов доменов верхнего уровня (TLD — top-level domain): .com, .ru,.org и так далее. Ниже — серверы доменов второго уровня (example.com), третьего (api.example.com) и так далее вглубь.

        root (.)
       /         com    ru
    /       |
  google example  yandex
   /   api  www

Каждая зона делегирует ответственность за подзоны на свои авторитетные серверы. Это позволяет системе быть децентрализованной: никто не хранит всю базу целиком, но любой запрос может быть разрешён серией обращений от корня к листу дерева.

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

DNS хранит не только IP-адреса, но и множество других типов данных. Каждый тип записи обозначается латинскими буквами и имеет своё назначение. Ниже приведены самые распространённые.

ТипНазначениеПример значения
AIPv4-адрес хоста93.184.216.34
AAAAIPv6-адрес хоста2606:2800:220:1::
CNAMEКаноническое имя — алиас на другой доменwww.example.com → example.com
MXПочтовый сервер с приоритетом10 mail.example.com
TXTПроизвольный текст (SPF, DKIM, верификация)v=spf1 include:_spf.google.com ~all
NSАвторитетные серверы имён зоныns1.example.com
SOAНачало зоны — метаданныеns1.example.com admin.example.com ...
PTRОбратное разрешение (IP → имя)34.216.184.93.in-addr.arpa
SRVСервисная запись с портом и приоритетом10 60 5060 sip.example.com
CAAКаким CA разрешено выпускать сертификаты0 issue "letsencrypt.org"

Записи для защиты почты и аутентификации

  • SPF (в TXT) — список серверов, которым разрешено отправлять почту от имени домена.
  • DKIM (в TXT) — публичный ключ для проверки цифровой подписи письма.
  • DMARC (в TXT) — политика обработки писем, не прошедших SPF/DKIM.

Как проходит DNS-запрос

Когда приложение запрашивает адрес www.example.com, происходит следующая последовательность шагов (если результат ещё не в кэше):

  1. Приложение обращается к рекурсивному резолверу — обычно это сервер провайдера или публичный резолвер вроде Google DNS (8.8.8.8) или Cloudflare (1.1.1.1).
  2. Резолвер спрашивает корневой сервер: «кто отвечает за зону .com?» — получает список TLD-серверов.
  3. Резолвер спрашивает TLD-сервер: «кто отвечает за example.com?» — получает адреса авторитетных серверов.
  4. Резолвер спрашивает авторитетный сервер: «какой IP-адрес у www.example.com?» — получает A-запись.
  5. Результат кэшируется на всех уровнях: у резолвера, у ОС, у браузера — на время, указанное в поле TTL.

На практике большинство запросов не доходит до корневого сервера: популярные домены уже находятся в кэше. Корневые серверы обрабатывают лишь небольшую долю трафика, но без них разрешение новых имён было бы невозможно.

TTL и кэширование

TTL (Time To Live) — это время в секундах, в течение которого запись может храниться в кэше. После истечения TTL запись считается устаревшей и при следующем запросе происходит обращение к авторитетному серверу. TTL задаётся для каждой записи отдельно и может составлять от нескольких секунд до нескольких дней.

example.com.   3600  IN  A   93.184.216.34
│             │     │   │   │
│             │     │   │   └── значение
│             │     │   └── тип записи
│             │     └── класс (Internet)
│             └── TTL в секундах (1 час)
└── имя (с завершающей точкой)

Короткий TTL (60–300 секунд) удобен для быстрого переключения между серверами, но увеличивает нагрузку на резолверы. Длинный TTL (86400 — сутки) снижает нагрузку, но замедляет распространение изменений. При планировании миграции серверов TTL обычно заранее уменьшают, чтобы переключение прошло быстро.

Команды для работы с DNS

dig — универсальный инструмент

# A-запись по умолчанию
dig example.com

# Запись конкретного типа
dig example.com MX
dig example.com AAAA
dig example.com TXT

# Короткий ответ
dig +short example.com

# С указанием сервера
dig @8.8.8.8 example.com

# Только ответ, без метаданных
dig +noall +answer example.com

nslookup — для быстрого запроса

nslookup example.com
nslookup -type=MX example.com
nslookup example.com 1.1.1.1

host — максимально кратко

host example.com
host -t MX example.com
host -t NS example.com

Для веб-интерфейса используйте наш DNS-lookup — он показывает все типы записей сразу и не требует установки утилит.

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

Сайт не открывается после смены DNS

Скорее всего, изменения ещё не распространились из-за длинного TTL. Проверьте актуальную запись через разные резолверы (dig @8.8.8.8 и dig @1.1.1.1); если они показывают старый адрес, подождите или сбросьте локальный кэш.

Сброс кэша DNS

# Windows
ipconfig /flushdns

# macOS (разные версии)
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

# Linux с systemd-resolved
sudo resolvectl flush-caches

# Linux с nscd
sudo systemctl restart nscd

Почта попадает в спам

Проверьте, что у домена корректно настроены SPF, DKIM и DMARC. Без этих записей принимающий сервер не может подтвердить подлинность отправителя и склонен помечать письмо как спам. Используйте dig example.com TXT, чтобы увидеть текущие записи.

Петли CNAME

Запись CNAME не должна указывать сама на себя или образовывать кольцо — это приводит к ошибке разрешения. Также CNAME нельзя использовать вместе с другими типами записей для одного имени (например, A и CNAME одновременно на корне домена).

Безопасность DNS

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

  • DNS-spoofing / cache poisoning — подмена ответа, чтобы направить пользователя на поддельный сайт.
  • DNS-hijacking — перехват запросов на уровне провайдера или вредоносного ПО.
  • Amplification-атаки — использование открытых DNS-резолверов для DDoS через UDP-ответы большого размера.

Для защиты используются расширения: DNSSEC добавляет цифровые подписи к записям и гарантирует их подлинность, DNS-over-HTTPS (DoH) и DNS-over-TLS (DoT)шифруют трафик между клиентом и резолвером. Современные браузеры по умолчанию поддерживают DoH, что затрудняет перехват и подмену DNS-запросов.

Заключение

DNS — это невидимая инфраструктура, без которой интернет перестал бы работать за считанные минуты. Знание типов записей, понимание механизма рекурсивных запросов и умение пользоваться инструментами диагностики позволяют быстро находить причины «загадочных» проблем: недоступности сайта, попадания почты в спам, медленной загрузки ресурсов.

Для быстрой проверки DNS-записей любого домена используйте наш инструмент DNS-lookup — он показывает A, AAAA, MX, TXT, NS, CNAME и другие записи в одном отчёте и работает прямо в браузере. А если нужно определить IP-адрес посетителя или проверить географию адреса, пригодится IP-lookup.

Попробуйте эти инструменты

Похожие статьи