DNS-записи: A, CNAME, MX, TXT и другие — что к чему
Как домен превращается в IP, зачем нужна каждая запись и что сломается, если удалить не ту
Почта перестала ходить после смены хостинга
Июнь 2024. Компания «ЛогистикаПро» переезжала с одного хостинга на другой. Системный администратор обновил A-запись — домен стал указывать на новый сервер. Сайт заработал, все обрадовались.
На следующее утро директор спросил: «Почему мне никто не пишет?» Проверили корпоративную почту — входящих писем за сутки: ноль. Исходящие уходили, но ответов не было.
Причина: при переезде забыли перенести MX-записи. Они всё ещё указывали на старый сервер, где почтовый сервис был отключен. Вся входящая корреспонденция уходила в никуда — без ошибок, без отказов, просто тихо исчезала. Заметить подобное вовремя помогает мониторинг DNS-записей.
Эта история показывает главный принцип: DNS — это не только про сайт. Это про почту, про защиту от спуфинга, про подтверждение владения доменом, про CDN и многое другое. Удалить или изменить «не ту» запись — значит сломать то, о чём вы даже не подумали.
Что такое DNS-записи
DNS (Domain Name System) — это распределённая база данных, которая хранит информацию о доменах. DNS-запись — это одна строка в этой базе: тип, имя, значение и параметры.
Когда браузеру нужно открыть сайт, он спрашивает DNS: «Какой IP у prufen.ru?». DNS отвечает: «185.165.123.10». Браузер открывает соединение с этим IP.
Но DNS отвечает не только на вопрос «какой IP». Он также говорит:
- Куда доставлять почту (MX)
- Как подтвердить владение доменом (TXT)
- Кто отвечает за зону (NS)
- Где находится IPv6-адрес (AAAA)
- Какой сервер обрабатывает голосовые вызовы (SRV)
Каждая запись имеет TTL (Time To Live) — время в секундах, которое резолвер может кэшировать ответ. TTL=3600 означает: резолвер запомнит ответ на 1 час и в течение этого часа не будет переспрашивать.
Основные типы записей
A-запись — IPv4-адрес
Самая распространённая запись. Сопоставляет домен или поддомен с IPv4-адресом.
www.prufen.ru. 3600 IN A 185.165.123.10
mail.prufen.ru. 3600 IN A 185.165.123.20
Если удалить A-запись — домен перестанет резолвиться в IP. Сайт не откроется. Ping скажет «Unknown host».
Особенность: можно иметь несколько A-записей для одного домена. Это простейший способ балансировки нагрузки (round-robin DNS) — запросы распределяются между IP по очереди.
AAAA-запись — IPv6-адрес
То же самое, что A, но для IPv6. Современный протокол с адресами длиной 128 бит (вместо 32 у IPv4).
Если сайт имеет только A-запись, но не AAAA — пользователи с IPv6-only соединением (некоторые мобильные сети) не смогут открыть сайт. Google рекомендует иметь обе записи.
CNAME — каноническое имя (алиас)
CNAME делает один домен псевдонимом другого. Запрос к CNAME возвращает целевой домен, который затем резолвится в IP.
cdn.prufen.ru. 3600 IN CNAME prufen.cdn.cloudflare.net.
Если IP изменится, достаточно обновить A-запись в одном месте — все CNAME подхватят изменение автоматически.
Важное ограничение: CNAME нельзя ставить на корневой домен (prufen.ru). Только на поддомены (www.prufen.ru). Для корня используйте ALIAS или ANAME, если регистратор поддерживает.
MX — почтовый обменник
Указывает, какие серверы принимают почту для домена. Может быть несколько MX с приоритетами.
prufen.ru. 3600 IN MX 20 backup-mx.provider.ru.
Число (10, 20) — приоритет. Меньше = выше приоритет. Почта сначала пытается доставиться на сервер с приоритетом 10. Если он недоступен — на 20.
Если удалить MX-запись — почта не будет доставляться. Отправитель получит ошибку «MX record not found» или «Domain not found» через несколько часов.
TXT — текстовая запись
Произвольный текст, который хранится в DNS. Используется для подтверждения владения, настройки почтовой безопасности, справочной информации.
prufen.ru. 3600 IN TXT "google-site-verification=abc123..."
; SPF — разрешённые серверы для отправки почты
prufen.ru. 3600 IN TXT "v=spf1 include:_spf.google.com ~all"
; DKIM — цифровая подпись писем
selector._domainkey.prufen.ru. 3600 IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC..."
TXT-записи часто используются в связке с MX для защиты от спуфинга:
- SPF — указывает, какие серверы могут отправлять почту от имени домена
- DKIM — цифровая подпись, подтверждающая, что письмо не было изменено
- DMARC — политика обработки писем, не прошедших SPF/DKIM
NS — серверы имён
Указывает, какие DNS-серверы являются авторитетными для домена. Это главная запись — без неё никакая другая не будет работать.
prufen.ru. 3600 IN NS ns2.beget.com.
Если изменить NS-записи — домен перестанет использовать текущие DNS-серверы и переключится на новые. Это распространённый способ переноса домена между хостингами. Но изменение NS требует 24-48 часов на распространение (propagation).
SRV — сервисная запись
Указывает адрес и порт для конкретного сервиса. Используется для SIP-телефонии, XMPP, Minecraft, Microsoft 365 и других сервисов.
_sip._tls.prufen.ru. 3600 IN SRV 100 1 443 sipdir.online.lync.com.
PTR — обратная запись
Сопоставляет IP-адрес с доменом (обратно A-записи). Не хранится в зоне домена, а в специальных зонах in-addr.arpa.
10.123.165.185.in-addr.arpa. 3600 IN PTR prufen.ru.
PTR важна для почты: многие почтовые серверы отклоняют письма с IP, у которых нет PTR или PTR не совпадает с доменом отправителя.
Таблица: все записи в одном месте
| Тип | Зачем | Если удалить | TTL обычно |
|---|---|---|---|
| A | IPv4-адрес сайта | Сайт не откроется | 300–3600 |
| AAAA | IPv6-адрес сайта | IPv6-пользователи не зайдут | 300–3600 |
| CNAME | Алиас на другой домен | Поддомен перестанет работать | 300–3600 |
| MX | Почтовые серверы | Почта не будет доставляться | 3600–86400 |
| TXT | Текст, SPF, DKIM, DMARC | Почта в спам, нет верификации | 300–3600 |
| NS | DNS-серверы домена | Домен перестанет резолвиться | 86400–172800 |
| SRV | Адрес сервиса и порт | Сервис (SIP, XMPP) не найдёт сервер | 3600 |
| PTR | Обратная запись IP→домен | Почта может уходить в спам | 3600 |
DNS propagation: почему изменения не работают сразу
Когда вы меняете A-запись в панели управления, изменение применяется мгновенно на авторитетных DNS-серверах. Но пользователи по всему миру продолжают видеть старый IP — потому что их провайдеры и устройства кэшировали предыдущий ответ.
Сколько ждать:
| TTL | Время | Где применяется |
|---|---|---|
| 300 | 5 минут | Динамические записи, CDN |
| 3600 | 1 час | Стандарт для A, CNAME, MX |
| 86400 | 24 часа | NS-записи |
| 172800 | 48 часов | Корневые NS-записи в TLD |
Лайфхак перед переездом: за 24 часа до смены IP уменьшите TTL записи до 300 (5 минут). После переезда подождите старый TTL, затем верните TTL обратно. Так переезд пройдёт быстрее для всех пользователей.
Мониторинг DNS-записей
DNS-записи меняются редко, но последствия ошибки — катастрофические. Поэтому достаточно проверять их 1 раз в день — это поймёт любое несанкционированное изменение за сутки, а не через неделю.
Как мониторить
- Свой скрипт — bash/Python, который делает dig/nslookup и сравнивает с эталонными значениями. Запуск по cron раз в день.
- Внешние сервисы — Пруфен, Pingdom, UptimeRobot, StatusCake — многие умеют проверять DNS-записи
- Ручная проверка — whois + dig перед и после любых работ с доменом
Что проверять
Что проверяется:
- A-запись — совпадает ли IP с ожидаемым
- MX-записи — не пропали ли, не изменился ли приоритет
- TXT (SPF) — присутствует ли запись, корректна ли директива
- NS-записи — не были ли подменены
- Изменения — если любая запись изменилась с прошлой проверки — алерт
Проверка важна, потому что изменения DNS часто происходят «молча» — хостер обновил IP, коллега экспериментировал с записями, злоумышленник получил доступ к панели управления. Мониторинг заметит это за сутки, а не через неделю, когда потерянная почта станет критичной. Проще всего вести такой контроль в сервисе мониторинга сайтов вместе с проверками доступности.
Комбинация проверок
| Проверка | Частота | Зачем |
|---|---|---|
| DNS-записи | 1 раз/день | Контроль A, MX, TXT, NS |
| Домен | 1 раз/день | Срок действия домена |
| Доступность (Ping) | 2–15 мин | IP доступен |
| HTTP GET | 2–15 мин | Сайт отвечает на HTTP |
Частые ошибки с DNS-записями
Ошибка 1: CNAME на корневом домене
Пытаетесь сделать prufen.ru. CNAME target.com. — это нарушает RFC. На корне нельзя CNAME, потому что CNAME не может сосуществовать с другими записями (а на корне всегда есть NS и SOA).
Решение: используйте ALIAS/ANAME, если регистратор поддерживает. Или A-запись на IP CDN.
Ошибка 2: Забыли точку в конце
Запись mail.prufen.ru CNAME gmail.com без точки в конце превратится в gmail.com.prufen.ru — несуществующий домен.
Решение: всегда ставьте точку в конце FQDN в DNS-записях: gmail.com.
Ошибка 3: Разные MX и A для mail
MX указывает на mail.prufen.ru, но A-запись для mail.prufen.ru отсутствует или указывает на другой сервер. Почта уходит на сервер без почтового сервиса.
Решение: убедитесь, что домен в MX имеет A-запись, и на этом IP работает почтовый сервер (25 порт открыт).
Ошибка 4: Слишком длинный TTL перед переездом
TTL=86400 (24 часа). Меняете IP. Ждёте 3 дня — половина пользователей всё ещё на старом сервере.
Решение: за сутки до переезда снизьте TTL до 300. После переезда — верните обратно.
Заключение
DNS-записи — это не «техническая магия для сисадминов». Это инфраструктура вашего присутствия в интернете. A-запись — это адрес, MX — почта, TXT — доверие, NS — авторитет.
Любая из этих записей может измениться случайно, злонамеренно или по невнимательности. Мониторинг DNS-записей — cron-скрипт или внешний сервис — стоит копейки по сравнению с восстановлением домена из Redemption Period или судом за украденный домен.
Проверьте свои DNS-записи: Пруфен → «Проверки» → «Добавить проверку» → «DNS-записи». Нужна помощь — пишите на support@prufen.ru.