DNS (Domain Name System) — это фундаментальная система, на которой держится весь современный интернет. Это не просто «телефонная книга», а сложная, распределенная база данных, которая переводит человекочитаемые имена (например, google.com) в технические идентификаторы, такие как IP-адреса, почтовые сервера, политики безопасности и даже географические координаты. Неправильная настройка DNS — одна из самых частых причин недоступности сайтов, проблем с доставкой почты и уязвимостей безопасности.
Этот гид объединяет в себе все аспекты DNS: от базовых записей, которые используются ежедневно, до сложных механизмов вроде DNSSEC и DANE. Мы рассмотрим каждый тип записи, ее назначение, синтаксис, практические примеры, распространенные ошибки, команды для диагностики и готовые шаблоны для развертывания. Информация структурирована так, чтобы вы могли использовать этот материал как учебное пособие, справочник администратора и чек-лист для продакшн-среды.
- 1. Терминология
- 2. Подробный разбор всех типов записей
- A — Address Record (IPv4)
- AAAA — IPv6 Address Record
- CNAME — Canonical Name Record
- MX — Mail Exchange Record
- TXT — Text Record
- NS — Name Server Record
- SOA — Start of Authority Record
- PTR — Pointer Record (Reverse DNS)
- SRV — Service Record
- CAA — Certification Authority Authorization
- NAPTR — Naming Authority Pointer Record
- TLSA — TLSA Certificate Association Record (DANE)
- Записи DNSSEC (DNSKEY, DS, RRSIG, NSEC, NSEC3)
- SSHFP — SSH Public Key Fingerprint
- Редкие и служебные записи
- 3. Практические рекомендации и тонкости настройки
- 4. Полные шаблоны зонных файлов (BIND style)
- 5. Пошаговая настройка почтового домена (PTR, SPF, DKIM, DMARC)
- 6. Команды для проверки и отладки DNS
- 7. Безопасность и best practices
- 8. Частые ошибки и как их избежать
- 9. Чек-лист перед продакшн-релизом или миграцией
- 10. Дополнительные примеры и пояснения полей
- 11. Полезные сценарии
- 12. Готовый JSON для импорта в панель провайдера
1. Терминология
Прежде чем погрузиться в типы записей, важно понять ключевые термины, используемые в DNS. Это создаст единую языковую базу и поможет избежать путаницы.
- DNS (Domain Name System): Система доменных имен. Глобальная распределенная база данных, преобразующая доменные имена в IP-адреса и другую связанную информацию.
- Доменное имя (Domain Name): Человекочитаемый адрес в интернете, например,
example.com. Состоит из меток, разделенных точками. - FQDN (Fully Qualified Domain Name): Полное доменное имя, однозначно определяющее узел в иерархии DNS. Всегда заканчивается точкой, обозначающей корень DNS (например,
www.example.com.). - Зона (Zone): Административная единица в DNS. Часть пространства имен, которой управляет один авторитетный сервер (или группа серверов). Обычно соответствует домену или поддомену.
- Зонный файл (Zone File): Текстовый файл, хранящийся на DNS-сервере, который содержит все записи для конкретной зоны. Использует синтаксис, определенный в стандарте BIND.
- Запись (Record / Resource Record, RR): Основная единица данных в DNS. Каждая запись имеет тип, имя, значение и TTL.
- Тип записи (Record Type): Определяет, какую информацию содержит запись (например,
A,MX,TXT). Каждому типу соответствует уникальный числовой код (например, 1 дляA, 15 дляMX). - TTL (Time To Live): Время жизни записи. Указывается в секундах. Определяет, как долго резолверы и другие DNS-серверы могут кешировать запись перед тем, как запросить ее снова у авторитетного сервера.
- Резолвер (Resolver): DNS-клиент или сервер, который получает запрос от приложения (например, браузера) и выполняет необходимые запросы для получения ответа. Может быть рекурсивным (выполняет полную цепочку запросов) или нерекурсивным.
- Авторитетный сервер (Authoritative Server): DNS-сервер, который хранит оригинальные записи для определенной зоны и отвечает за них. Отвечает на запросы, используя данные из зонного файла.
- Рекурсивный сервер (Recursive Server): Сервер, который получает запрос от клиента и, если у него нет ответа в кеше, выполняет цепочку запросов, начиная с корневых серверов, чтобы найти авторитетный сервер и получить ответ.
- Корневой сервер (Root Server): Один из 13 групп серверов (обозначаемых буквами от
a.root-servers.net.доm.root-servers.net.), которые являются отправной точкой для разрешения любого доменного имени. Они знают, где находятся серверы для доменов верхнего уровня (TLD). - TLD (Top-Level Domain): Домен верхнего уровня. Последняя часть доменного имени (например,
.com,.org,.ru,.io). - Регистратор (Registrar): Компания, через которую регистрируются доменные имена. Управляет информацией о делегировании (какие NS-серверы обслуживают домен) в родительской зоне (например, в зоне
.comдля доменаexample.com). - Регистрант (Registrant): Владелец доменного имени.
- Делегирование (Delegation): Процесс передачи управления поддоменом (или доменом) от родительской зоны дочерней. Осуществляется с помощью
NS-записей в родительской зоне. - Glue Record (Клеевая запись):
AилиAAAAзапись, которая публикуется у регистратора для сервера имен, чье доменное имя находится внутри делегируемой зоны. Необходима для разрыва циклической зависимости. - SOA (Start of Authority): Запись, содержащая административную информацию о зоне, включая основной сервер, контакт администратора и параметры, управляющие передачей зоны вторичным серверам.
- Серийный номер (Serial Number): Поле в записи
SOA, которое указывает версию зоны. Вторичные серверы используют его для определения необходимости обновления. - Прямое разрешение (Forward Resolution): Процесс преобразования доменного имени в IP-адрес (например,
example.com→192.0.2.1). - Обратное разрешение (Reverse Resolution): Процесс преобразования IP-адреса в доменное имя (например,
192.0.2.1→example.com). Управляется через зоныin-addr.arpa(для IPv4) иip6.arpa(для IPv6). - Кеш (Cache): Временное хранилище DNS-записей на резолвере или DNS-сервере для ускорения последующих запросов.
- Кеширование (Caching): Процесс сохранения DNS-записей в кеше.
- Отрицательное кеширование (Negative Caching): Кеширование информации о том, что запрашиваемая запись не существует.
- RFC (Request for Comments): Официальный документ, описывающий стандарты, протоколы и процедуры в интернете. Все основные аспекты DNS описаны в серии RFC.
- BIND (Berkeley Internet Name Domain): Самая распространенная реализация DNS-сервера. Синтаксис его зонных файлов стал де-факто стандартом.
- MTA (Mail Transfer Agent): Почтовый сервер, отвечающий за передачу электронной почты (например, Postfix, Exim, Sendmail).
- FCrDNS (Forward-Confirmed Reverse DNS): Механизм проверки, при котором IP-адрес имеет
PTR-запись, которая разрешается в доменное имя, а это доменное имя, в свою очередь, имеетA-запись, ведущую обратно к исходному IP-адресу. Критически важен для репутации почтовых серверов. - DNSSEC (Domain Name System Security Extensions): Набор расширений, добавляющих криптографическую подпись к DNS-записям для обеспечения их подлинности и целостности.
- DANE (DNS-based Authentication of Named Entities): Стандарт, позволяющий привязывать TLS-сертификаты к DNS-именам с помощью записей
TLSA. Требует включения DNSSEC. - CAA (Certification Authority Authorization): Механизм, позволяющий владельцу домена указать, какие центры сертификации (CA) имеют право выпускать для него сертификаты.
- SPF (Sender Policy Framework): Механизм, позволяющий владельцу домена указать, какие серверы имеют право отправлять почту от его имени.
- DKIM (DomainKeys Identified Mail): Механизм, позволяющий подписывать исходящие письма цифровой подписью, которую получатель может проверить с помощью публичного ключа, опубликованного в DNS.
- DMARC (Domain-based Message Authentication, Reporting & Conformance): Политика, определяющая, как почтовые серверы должны обрабатывать письма, не прошедшие проверки SPF или DKIM, и настраивающая отправку отчетов владельцу домена.
- ALIAS / ANAME: Нестандартные типы записей, предлагаемые некоторыми DNS-провайдерами. Позволяют создавать псевдонимы для корневого домена (apex), что невозможно с помощью стандартного
CNAME. - CNAME Flattening: Технология, используемая некоторыми DNS-провайдерами. При запросе
CNAMEна apex-домене сервер автоматически разрешает цепочкуCNAMEи возвращает конечныеA/AAAAзаписи клиенту, избегая нарушения RFC.
2. Подробный разбор всех типов записей
Все примеры приведены в формате BIND-style zone-file. Имена, заканчивающиеся точкой (например, example.com.), являются FQDN (Fully Qualified Domain Name). TTL (Time To Live) указывается в секундах и определяет, как долго запись может кешироваться резолверами.
A — Address Record (IPv4)
- Назначение: Связывает доменное имя с 32-битным IPv4-адресом. Самая базовая и часто используемая запись.
- Формат:
имя TTL IN A IPv4-адрес - Пример:
example.com. 3600 IN A 192.0.2.1 www.example.com. 3600 IN A 192.0.2.1 - Когда используется: Для указания IP-адреса веб-сервера, API, игрового сервера или любого другого сервиса, доступного по IPv4.
- Проверка:
dig +short example.com A - Лучшие практики:
- Для корневого домена (apex,
@) использованиеA-записи — стандартная и корректная практика. - TTL следует выбирать в зависимости от стабильности IP-адреса. Для стабильных адресов — 3600 (1 час) или 86400 (1 день). Перед миграцией — уменьшить до 300 (5 минут).
- Для корневого домена (apex,
AAAA — IPv6 Address Record
- Назначение: Аналог
A-записи, но для 128-битных IPv6-адресов. Критически важен для будущего интернета. - Формат:
имя TTL IN AAAA IPv6-адрес - Пример:
example.com. 3600 IN AAAA 2001:db8::1 - Когда используется: Для обеспечения доступности сервиса по протоколу IPv6.
- Проверка:
dig +short example.com AAAA
CNAME — Canonical Name Record
- Назначение: Создает псевдоним (алиас) для доменного имени. Любой запрос к CNAME автоматически преобразуется в запрос к его целевому (каноническому) имени.
- Формат:
имя TTL IN CNAME цель. - Пример:
www.example.com. 3600 IN CNAME example.com. blog.example.com. 3600 IN CNAME blog-hosting.example.net. - Важные ограничения:
- Конфликт записей: Для одного и того же имени нельзя одновременно иметь
CNAMEи любую другую запись (A,MX,TXTи т.д.). Это нарушение RFC. - Apex-домен: Стандарт RFC запрещает использование
CNAMEдля корневого домена (например,example.com.), так как он уже содержитNSиSOAзаписи. Для решения этой проблемы DNS-провайдеры (Cloudflare, AWS Route 53) предлагают нестандартные расширения:ALIASилиANAME, которые на лету разрешают алиас вA/AAAAзаписи.
- Конфликт записей: Для одного и того же имени нельзя одновременно иметь
- Практическое применение: Подключение CDN (делаем
wwwCNAME на адрес CDN), использование SaaS-платформ (блог, магазин). - Проверка:
dig +short www.example.com CNAME
MX — Mail Exchange Record
- Назначение: Указывает серверы, которые принимают входящую почту для домена. Запись содержит приоритет: чем меньше число, тем выше приоритет.
- Формат:
имя TTL IN MX приоритет почтовый_сервер. - Пример:
example.com. 3600 IN MX 10 mail1.example.com. example.com. 3600 IN MX 20 mail2.example.com.- Почта будет сначала отправляться на
mail1.example.com.. Если он недоступен, MTA (Mail Transfer Agent) попробуетmail2.example.com..
- Почта будет сначала отправляться на
- Ключевые требования:
- Почтовый сервер (
mail1.example.com.) должен иметь своюAилиAAAAзапись. - Для IP-адреса почтового сервера обязательно должна быть настроена
PTR-запись, и она должна соответствовать имени сервера, указанному вMX. Это критически важно для репутации сервера и доставки почты.
- Почтовый сервер (
- Проверка:
dig +short example.com MX
TXT — Text Record
- Назначение: Хранит произвольные текстовые данные. Широко используется для политик безопасности электронной почты (SPF, DKIM, DMARC), верификации владения доменом (Google, Microsoft, Yandex) и других целей.
- Формат:
имя TTL IN TXT "текст" - Примеры:
- SPF (Sender Policy Framework): Определяет, какие серверы имеют право отправлять почту от имени домена.
example.com. 3600 IN TXT "v=spf1 ip4:192.0.2.0/24 include:_spf.google.com ~all"ip4:192.0.2.0/24— разрешает всю подсеть.include:_spf.google.com— включает правила из зоны Google (для Gmail).~all— «мягкий» отказ для всех остальных (softfail).-all— строгий отказ (fail).
- DKIM (DomainKeys Identified Mail): Публикует открытый ключ для проверки цифровой подписи, добавленной к исходящим письмам. Обычно создается для поддомена вида
селектор._domainkey.домен.default._domainkey.example.com. 3600 IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQ..."v=DKIM1— версия.k=rsa— тип ключа.p=...— сам открытый ключ в формате base64.
- DMARC (Domain-based Message Authentication, Reporting & Conformance): Задает политику обработки писем, не прошедших проверки SPF или DKIM, и настраивает отправку отчетов.
_dmarc.example.com. 3600 IN TXT "v=DMARC1; p=reject; rua=mailto:dmarc@example.com; ruf=mailto:forensics@example.com; pct=100"p=reject— отклонять письма, не прошедшие проверку.rua=mailto:...— адрес для агрегированных отчетов.ruf=mailto:...— адрес для отчетов о конкретных сбоях (forensic).pct=100— применять политику ко 100% писем.
- Верификация:
example.com. 3600 IN TXT "google-site-verification=abc123..."
- SPF (Sender Policy Framework): Определяет, какие серверы имеют право отправлять почту от имени домена.
- Заметки:
- Если текстовая строка длиннее 255 байт, ее можно разбить на несколько частей в зонном файле, заключив каждую в кавычки. DNS-сервер автоматически их склеит.
example.com. IN TXT ("v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com; " "pct=100; fo=1")
- Если текстовая строка длиннее 255 байт, ее можно разбить на несколько частей в зонном файле, заключив каждую в кавычки. DNS-сервер автоматически их склеит.
- Проверка:
dig +short example.com TXT
NS — Name Server Record
- Назначение: Указывает DNS-серверы, которые являются авторитетными для данной зоны. Эти записи — основа для делегирования управления доменом.
- Формат:
имя TTL IN NS сервер_имен. - Пример:
example.com. 3600 IN NS ns1.example.net. example.com. 3600 IN NS ns2.example.net. - Важные моменты:
- Записи
NSв зоне должны точно совпадать с серверами имен, указанными у регистратора домена. - Glue Records: Если сервер имен (например,
ns1.example.com.) находится внутри той же зоны, которую он обслуживает (example.com.), возникает циклическая зависимость. Чтобы ее разорвать, у регистратора необходимо добавить «клеевые» (glue) записи —AилиAAAAзаписи для этих серверов имен.
- Записи
- Проверка:
dig +short example.com NS
SOA — Start of Authority Record
- Назначение: Главная служебная запись DNS-зоны. Содержит информацию об основном сервере, администраторе, а также параметры, управляющие синхронизацией между основным и вторичными серверами.
- Формат:
имя TTL IN SOA первичный_сервер. email_администратора. ( серийный_номер ; Serial интервал_обновления ; Refresh интервал_повтора ; Retry срок_годности ; Expire мин_TTL ) ; Minimum TTL - Пример:
example.com. 3600 IN SOA ns1.example.net. admin.example.com. ( 2025092201 ; Serial (YYYYMMDDNN) 7200 ; Refresh (2 часа) 3600 ; Retry (1 час) 1209600 ; Expire (14 дней) 86400 ) ; Minimum TTL (1 день) - Пояснения полей:
Serial: Версия зоны. Крайне важно увеличивать это число при каждом изменении зоны. Вторичные серверы сравнивают свойSerialсSerialна первичном сервере и, если он меньше, запрашивают обновление. Рекомендуемый формат:YYYYMMDDNN(год, месяц, день, номер редакции за день).Refresh: Интервал (в секундах), через который вторичные серверы должны проверять первичный сервер на наличие обновлений.Retry: Интервал, через который вторичный сервер должен повторить попытку, если первая попытка обновления не удалась.Expire: Время (в секундах), после которого вторичный сервер перестанет отвечать на запросы, если не сможет связаться с первичным сервером. Зона считается «устаревшей».Minimum TTL: Изначально задавал минимальный TTL для всех записей в зоне. Сейчас чаще используется как TTL для негативного кеширования (как долго кешировать ответ «запись не найдена»).
- Проверка:
dig +short example.com SOA
PTR — Pointer Record (Reverse DNS)
- Назначение: Обеспечивает обратное разрешение — преобразует IP-адрес в доменное имя. Управляется владельцем IP-адреса (ISP, хостинг-провайдер), а не владельцем домена.
- Формат для IPv4: IP-адрес записывается в обратном порядке, и к нему добавляется суффикс
.in-addr.arpa..- IP
192.0.2.5→5.2.0.192.in-addr.arpa.
- IP
- Формат для IPv6: Каждая 4-битная часть (nibble) адреса записывается в обратном порядке, и добавляется суффикс
.ip6.arpa..- IPv6
2001:db8::1→1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa.
- IPv6
- Пример (IPv4):
5.2.0.192.in-addr.arpa. 3600 IN PTR mail.example.com. - Практическое значение: Критически важно для почтовых серверов. Большинство почтовых систем проверяют, чтобы PTR-запись IP-адреса отправителя совпадала с именем, которое сервер представляет в команде
HELO/EHLO. Несоответствие — частая причина попадания писем в спам. - Проверка:
dig -x 192.0.2.5 +shortилиhost 192.0.2.5
SRV — Service Record
- Назначение: Указывает расположение серверов для конкретных сервисов, включая протокол и порт. Позволяет клиентам автоматически находить нужный сервер.
- Формат имени:
_сервис._протокол.домен.- Сервис:
sip,xmpp-server,_minecraftи т.д. - Протокол:
tcp,udp.
- Сервис:
- Формат записи:
имя TTL IN SRV приоритет вес порт цель. - Пример:
_sip._tcp.example.com. 3600 IN SRV 10 60 5060 sipserver.example.com. _minecraft._tcp.example.com. 3600 IN SRV 5 0 25565 mc1.example.com. - Пояснения полей:
Priority(Приоритет): Чем меньше число, тем выше приоритет. Клиент сначала попытается подключиться к серверу с наименьшим приоритетом.Weight(Вес): Используется для балансировки нагрузки между серверами с одинаковым приоритетом. Вероятность выбора сервера пропорциональна его весу. Если все веса одинаковы, выбор происходит случайно.Port(Порт): Порт, на котором работает сервис.Target(Цель): FQDN сервера, на который следует направить запрос. Этот сервер должен иметьAилиAAAAзапись.
- Применение: VoIP (SIP), мгновенные сообщения (XMPP), игры (Minecraft), каталоги (LDAP).
- Проверка:
dig +short _sip._tcp.example.com SRV
CAA — Certification Authority Authorization
- Назначение: Позволяет владельцу домена указать, какие центры сертификации (CA) имеют право выпускать SSL/TLS-сертификаты для этого домена. Это важный механизм безопасности, предотвращающий несанкционированный выпуск сертификатов.
- Формат:
имя TTL IN CAA флаги тег значение - Пример:
example.com. 3600 IN CAA 0 issue "letsencrypt.org" example.com. 3600 IN CAA 0 iodef "mailto:security@example.com" - Пояснения:
Флаги: Обычно0. Флаг128(critical) означает, что CA, не понимающий этот тег, должен отказаться от выпуска сертификата.Теги:issue: Разрешает указанному CA выпускать сертификаты. Пустое значение (;) запрещает выпуск всем.issuewild: Разрешает выпуск wildcard-сертификатов (*.example.com).iodef: URL (обычноmailto:илиhttp(s):) для отправки отчетов о попытках нарушения политики CAA.
- Проверка:
dig +short example.com CAA
NAPTR — Naming Authority Pointer Record
- Назначение: Используется для сложных правил переписывания (rewriting) имен и URI. Чаще всего применяется в телекоммуникационных системах (ENUM для преобразования телефонных номеров в SIP URI) и для динамического обнаружения сервисов.
- Формат:
имя TTL IN NAPTR порядок предпочтение флаги сервис регулярное_выражение замена. - Пример (упрощенный для ENUM):
4.3.2.1.5.5.5.1.e164.arpa. IN NAPTR 100 10 "U" "E2U+sip" "!^.*$!sip:info@example.com!" . - Пояснения:
Order(Порядок): Обрабатывается от меньшего к большему.Preference(Предпочтение): АналогweightвSRVдля записей с одинаковымorder.Flags:Uозначает, что результат — URI (например,sip:).Service: Тип сервиса (например,E2U+sip— преобразование в SIP URI).Regexp: Регулярное выражение для преобразования входной строки.Replacement: Альтернатива регулярному выражению (обычно пустая, если используетсяregexp).
- Применение: Сложные сценарии маршрутизации в VoIP, ENUM.
TLSA — TLSA Certificate Association Record (DANE)
- Назначение: Привязывает TLS-сертификат (или его часть) к DNS-имени с помощью записи в DNS. Это часть стандарта DANE (DNS-based Authentication of Named Entities). Требует включения DNSSEC для обеспечения доверия, иначе запись можно подделать.
- Формат имени:
_порт._протокол.имя. - Формат записи:
имя TTL IN TLSA использование селектор тип_сопоставления данные - Пример:
_443._tcp.www.example.com. 3600 IN TLSA 3 1 1 d2abde...f21 - Пояснения полей:
Usage(Использование):3(DANE-EE): Сертификат конечной точки (end entity). Самый распространенный.1(PKIX-EE): Сертификат конечной точки, должен быть подписан доверенным CA.2(DANE-TA): Доверенный (trusted) сертификат удостоверяющего центра.0(PKIX-TA): Сертификат CA, должен быть в цепочке доверия.
Selector(Селектор):0: Полный сертификат.1: Только открытый ключ сертификата.
Matching Type(Тип сопоставления):0: Точные данные (не используется).1: SHA-256 хеш.2: SHA-512 хеш.
Data: Хеш сертификата или его открытого ключа в hex-формате.
- Применение: Повышение безопасности TLS, особенно в средах, где нельзя доверять публичным CA.
- Проверка:
dig +short _443._tcp.www.example.com. TLSA
Записи DNSSEC (DNSKEY, DS, RRSIG, NSEC, NSEC3)
DNSSEC (DNS Security Extensions) — это набор расширений, добавляющих криптографическую подпись к DNS-записям для защиты от подделки (спуфинга) и атак «отравления кеша».
- Общий принцип: Зона подписывается приватным ключом. Публичный ключ публикуется в записи
DNSKEY. Для создания цепочки доверия хеш этого ключа (DS-запись) публикуется в родительской зоне (например, дляexample.com— в зоне.com). Клиенты, поддерживающие DNSSEC, могут проверить подпись (RRSIG) каждой записи, используя открытый ключ, и убедиться в ее подлинности. DNSKEY: Публичный ключ зоны.- Пример:
example.com. 3600 IN DNSKEY 257 3 13 AwEAAa3d...9QAB257— флаги (257 = KSK, 256 = ZSK).3— протокол (всегда 3).13— алгоритм (13 = ECDSA/SHA256).- Последнее поле — ключ в base64.
- Пример:
DS(Delegation Signer): Хеш открытого ключа (DNSKEY) дочерней зоны, который публикуется в родительской зоне для создания цепочки доверия.- Пример:
example.com. 3600 IN DS 54517 13 2 84C8...D34F54517— Key Tag (идентификатор ключа).13— Алгоритм.2— Тип дайджеста (SHA-256).- Последнее поле — хеш в hex.
- Пример:
RRSIG(Resource Record Signature): Цифровая подпись для набора DNS-записей.- Пример (подпись для
A-записи):example.com. 3600 IN RRSIG A 13 2 3600 20251001000000 20250901000000 54517 example.com. oNvL...7Q==A— тип записей, которые подписаны.13— алгоритм.2— количество меток в имени.3600— оригинальный TTL.20251001000000— время окончания действия подписи.20250901000000— время начала действия подписи.54517— Key Tag подписавшего ключа.example.com.— имя подписавшего.- Последнее поле — подпись в base64.
- Пример (подпись для
NSEC/NSEC3: Используются для аутентификации отрицательных ответов (доказательство того, что записи с таким именем или типом не существует).NSEC3дополнительно хеширует имена для защиты от «выгуливания зоны» (zone walking).- Включение DNSSEC: Это отдельный, сложный процесс:
- Генерация пар ключей (KSK и ZSK) на DNS-сервере.
- Публикация
DNSKEYзаписей в зоне. - Генерация
DS-записи из KSK. - Публикация
DS-записи у регистратора домена (в родительской зоне). - Включение подписывания зоны на DNS-сервере (автоматическая генерация
RRSIG,NSEC/NSEC3). - Тестирование с помощью
dig +dnssecи онлайн-инструментов (например, Verisign DNSSEC Debugger).
- Проверка:
dig +dnssec example.com A(покажетRRSIGдляA-записи, если DNSSEC включен и работает).dig +short example.com DNSKEYdig +short example.com DS
SSHFP — SSH Public Key Fingerprint
- Назначение: Публикует хеш (отпечаток) SSH-ключа хоста в DNS. Клиенты SSH могут использовать эту запись для автоматической проверки подлинности сервера при первом подключении, предотвращая атаки «человек посередине» (MITM). Рекомендуется использовать с DNSSEC для гарантии подлинности записи.
- Формат:
имя TTL IN SSHFP алгоритм тип_дайджеста отпечаток - Пример:
example.com. 3600 IN SSHFP 4 2 356a192b7913b04c54574d18c28d46e6395428ab - Пояснения:
Алгоритм:1— RSA2— DSA3— ECDSA4— ED25519
Тип дайджеста:1— SHA-12— SHA-256
Отпечаток: Хеш открытого ключа в hex-формате.
- Генерация: На сервере можно сгенерировать запись командой:
ssh-keygen -r example.com - Проверка:
dig +short example.com SSHFP
Редкие и служебные записи
HINFO(Host Information): Хранит информацию о типе процессора и операционной системе хоста. Не рекомендуется к использованию, так как раскрывает потенциально чувствительную информацию о системе.- Пример:
server1.example.com. 3600 IN HINFO "Intel Xeon" "Ubuntu 22.04"
- Пример:
LOC(Location): Хранит географические координаты (широта, долгота, высота) хоста.- Пример:
example.com. 3600 IN LOC 55 45 21.000 N 37 37 03.000 E 15m
- Пример:
RP(Responsible Person): Указывает контактное лицо, ответственное за зону. Email указывается в формате hostname (точка вместо@).- Пример:
example.com. 3600 IN RP admin.example.com. txt-record.example.com.
- Пример:
SPF(устаревшая): Раньше существовала как отдельный тип записи, но сейчас полностью замененаTXT. Не следует использовать.- Пример (не использовать):
example.com. IN SPF "v=spf1 ..."
- Пример (не использовать):
3. Практические рекомендации и тонкости настройки
- Управление TTL:
- Стандартное значение: 3600 секунд (1 час) — хороший баланс между производительностью (кеширование) и гибкостью.
- Перед миграцией: За 24-72 часа до планируемого изменения (например, смены IP-адреса) уменьшите TTL для соответствующих записей до 300 секунд (5 минут). Это сократит время распространения изменений.
- После миграции: Когда изменения стабилизируются, верните TTL к более высокому значению (например, 3600 или 86400) для уменьшения нагрузки на DNS-серверы.
- SOA Serial:
- Обязательно увеличивайте серийный номер при каждом изменении зоны. Если этого не сделать, вторичные серверы не узнают об обновлениях.
- Рекомендуемый формат:
YYYYMMDDNN(например,2024051701). Это наглядно и позволяет легко отслеживать, когда было последнее изменение.
- CNAME на Apex (корневом домене):
- Проблема: Стандарт RFC запрещает
CNAMEна apex-домене (например,example.com.), потому что он конфликтует с другими обязательными записями (NS,SOA). - Решение: Используйте функции, предоставляемые вашим DNS-провайдером:
ALIAS/ANAME: Нестандартные типы записей, которые ведут себя какCNAME, но разрешаются на стороне DNS-сервера провайдера вA/AAAAзаписи для ответа клиенту. Это позволяет использовать алиасы на apex.- CNAME Flattening: Технология (например, в Cloudflare), при которой
CNAMEна apex автоматически «выравнивается» — DNS-сервер возвращаетA/AAAAзаписи целевого хоста вместоCNAME.
- Проблема: Стандарт RFC запрещает
- Glue Records:
- Когда нужны: Если ваши серверы имен (например,
ns1.example.com.) находятся в той же зоне, которую они обслуживают (example.com.). - Что делать: У регистратора домена найдите раздел для настройки glue-записей и добавьте
A(и/илиAAAA) записи для ваших серверов имен. Это разрывает циклическую зависимость.
- Когда нужны: Если ваши серверы имен (например,
- Настройка PTR для почты:
- Требование: IP-адрес вашего почтового сервера должен иметь
PTR-запись, которая разрешается в его полное доменное имя (FQDN, например,mail.example.com.). - Согласованность: Имя, которое почтовый сервер передает в команде
HELO/EHLO, должно совпадать с именем изPTR-записи, а это имя, в свою очередь, должно иметьA-запись, ведущую обратно к тому же IP-адресу. Это называется «Forward-Confirmed Reverse DNS» (FCrDNS) и критически важно для репутации. - Где настраивать: У вашего хостинг-провайдера или владельца IP-адреса, а не в DNS-зоне вашего домена.
- Требование: IP-адрес вашего почтового сервера должен иметь
- Разбиение длинных TXT-записей:
- Если строка в
TXT-записи превышает 255 байт, ее необходимо разбить на несколько частей в зонном файле. Каждая часть заключается в кавычки, и DNS-сервер автоматически их объединит. - Пример:
example.com. IN TXT ( "v=DMARC1; p=reject; rua=mailto:dmarc@example.com,mailto:dmarc@thirdparty.com; " "ruf=mailto:forensics@example.com; fo=1; adkim=s; aspf=s; pct=100" )
- Если строка в
4. Полные шаблоны зонных файлов (BIND style)
Ниже приведены готовые шаблоны для трех распространенных сценариев. Замените example.com, example.net, IP-адреса и ключи на свои значения.
a) Простой сайт (статический, без почты)
$TTL 3600
@ IN SOA ns1.hosting.net. hostmaster.example.com. (
2025092201 ; serial (YYYYMMDDNN)
7200 ; refresh (2 hours)
3600 ; retry (1 hour)
1209600 ; expire (14 days)
86400 ) ; minimum TTL (1 day)
; Authoritative Name Servers
@ IN NS ns1.hosting.net.
@ IN NS ns2.hosting.net.
; Web Server (IPv4 and IPv6)
@ IN A 192.0.2.10
@ IN AAAA 2001:db8::10
; WWW subdomain (alias to apex)
www IN CNAME @
; Security: Restrict Certificate Authorities
@ IN CAA 0 issue "letsencrypt.org"
@ IN CAA 0 iodef "mailto:security@example.com"
b) Сайт + собственный почтовый сервер
$TTL 3600
@ IN SOA ns1.example.net. admin.example.com. (
2025092201 ; serial
7200 ; refresh
3600 ; retry
1209600 ; expire
86400 ) ; minimum
; Name Servers
@ IN NS ns1.example.net.
@ IN NS ns2.example.net.
; --- Web Section ---
@ IN A 192.0.2.10
www IN CNAME @
; --- Mail Section ---
; A record for the mail server
mail IN A 192.0.2.20
; MX record pointing to the mail server
@ IN MX 10 mail.example.com.
; --- Email Authentication ---
; SPF: Allow mail server IP and Google Workspace
@ IN TXT "v=spf1 ip4:192.0.2.20 include:_spf.google.com ~all"
; DKIM: Public key for 'default' selector
default._domainkey IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQ..."
; DMARC: Policy to quarantine failures and send reports
_dmarc IN TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com; pct=100"
; --- Security ---
@ IN CAA 0 issue "letsencrypt.org"
c) Сайт + CDN + Почта + DNSSEC (комплексный пример)
$TTL 300 ; Lower TTL for flexibility with CDN
@ IN SOA ns1.example.net. hostmaster.example.com. (
2025092201 ; serial
7200 ; refresh
3600 ; retry
1209600 ; expire
3600 ) ; minimum (also used for negative caching)
; Name Servers
@ IN NS ns1.example.net.
@ IN NS ns2.example.net.
; --- Web Section (with CDN) ---
; Apex domain: Use ALIAS/ANAME (provider-specific) to point to origin or CDN edge
; If your provider supports ALIAS:
; @ IN ALIAS origin.examplehost.net.
; If using CNAME flattening for apex (e.g., Cloudflare):
@ IN A 192.0.2.10 ; Temporary or fallback IP, often managed by provider
; WWW subdomain: CNAME to CDN provider
www IN CNAME cdn-provider.example.net.
; --- Mail Section ---
mail IN A 192.0.2.20
@ IN MX 10 mail.example.com.
; --- Email Authentication ---
@ IN TXT "v=spf1 include:_spf.google.com include:spf.protection.outlook.com -all"
default._domainkey IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQ..."
_dmarc IN TXT "v=DMARC1; p=reject; rua=mailto:dmarc@example.com; ruf=mailto:abuse@example.com; pct=100"
; --- Security ---
@ IN CAA 0 issue "letsencrypt.org"
@ IN CAA 0 issuewild "letsencrypt.org"
@ IN CAA 0 iodef "mailto:security@example.com"
; --- DNSSEC (Example keys - REPLACE WITH YOURS) ---
; DNSKEY records (usually auto-generated by DNS server when signing is enabled)
@ IN DNSKEY 257 3 13 ( ; KSK
AwEAAbOv...QAB )
@ IN DNSKEY 256 3 13 ( ; ZSK
AwEAAa3d...9QAB )
; RRSIG records are automatically generated by the DNS server during signing and are not manually added to the zone file.
; NSEC/NSEC3 records are also automatically generated.
; --- Additional Services (Example) ---
; SRV record for SIP service
_sip._tcp IN SRV 10 50 5060 sip1.example.com.
5. Пошаговая настройка почтового домена (PTR, SPF, DKIM, DMARC)
Настройка почты — это комплексная задача. Следуйте этим шагам для обеспечения максимальной доставляемости и защиты от спама.
Шаг 1: Настройка A/AAAA для почтового сервера
Убедитесь, что ваш почтовый сервер имеет запись A (и желательно AAAA).
mail.example.com. 3600 IN A 192.0.2.20
Шаг 2: Настройка MX-записей
Укажите, что почта для example.com должна доставляться на mail.example.com..
example.com. 3600 IN MX 10 mail.example.com.
Шаг 3: Настройка PTR (обратного DNS)
Это самый важный и часто упускаемый шаг. Обратитесь к вашему хостинг-провайдеру или владельцу IP-адреса (192.0.2.20) и запросите настройку PTR-записи, чтобы она указывала на mail.example.com..
- Проверка:
dig -x 192.0.2.20 +shortдолжен вернутьmail.example.com..
Шаг 4: Настройка SPF (через TXT)
Определите, какие серверы могут отправлять почту от имени example.com. Включите свой сервер и любые сторонние сервисы (Gmail, SendGrid и т.д.).
example.com. 3600 IN TXT "v=spf1 ip4:192.0.2.20 include:_spf.google.com -all"
- Начните с
~all(softfail) для тестирования, затем перейдите на-all(hard fail).
Шаг 5: Настройка DKIM
- Сгенерируйте пару ключей (приватный и публичный) на вашем почтовом сервере (MTA). Выберите «селектор» (например,
default,202405). - Настройте MTA на подпись исходящих писем с использованием приватного ключа и выбранного селектора.
- Опубликуйте публичный ключ в DNS в виде
TXT-записи для поддоменаселектор._domainkey.example.com..default._domainkey.example.com. 3600 IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQ..."
Шаг 6: Настройка DMARC
Определите политику обработки писем, не прошедших SPF/DKIM, и настройте получение отчетов.
_dmarc.example.com. 3600 IN TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com; ruf=mailto:forensics@example.com; pct=100"
- Стратегия развертывания:
- Начните с
p=none— письма не блокируются, вы только получаете отчеты. - Анализируйте отчеты, исправляйте ошибки в SPF/DKIM.
- Перейдите на
p=quarantine— подозрительные письма попадают в спам. - Перейдите на
p=reject— подозрительные письма отклоняются.
- Начните с
Дополнительные советы:
- Убедитесь, что имя в команде
HELO/EHLO, которую ваш почтовый сервер отправляет при подключении, совпадает с именем изPTR-записи (mail.example.com.). - Используйте онлайн-инструменты для проверки конфигурации: mail-tester.com, mxtoolbox.com, dmarcian.com.
6. Команды для проверки и отладки DNS
Инструменты командной строки — незаменимы для администратора.
dig(Domain Information Groper) — самый мощный и рекомендуемый инструмент.- Базовые запросы:
dig +short example.com A— получить только IPv4-адрес.dig +short example.com AAAA— получить только IPv6-адрес.dig +short example.com MX— получить MX-записи.dig +short example.com TXT— получить TXT-записи (SPF, DKIM, DMARC).dig +short www.example.com CNAME— получить CNAME.dig +short _sip._tcp.example.com SRV— получить SRV-запись.
- Обратный DNS:
dig -x 192.0.2.1 +short— получить PTR для IP.
- Трассировка делегирования:
dig +trace example.com— показывает весь путь от корневых серверов до авторитетных серверов вашей зоны. Отлично подходит для диагностики проблем с делегированием.
- Запрос к конкретному серверу:
dig @ns1.example.net example.com SOA— запросить SOA-запись у конкретного сервера имен.
- Проверка DNSSEC:
dig +dnssec example.com A— выполнить запрос с флагом DO (DNSSEC OK) и показатьRRSIG-записи, если они есть.dig +short example.com DNSKEY— получить DNSKEY-записи.dig +short example.com DS— получить DS-запись (из родительской зоны).
- Проверка TLSA (DANE):
dig +short _443._tcp.www.example.com. TLSA
- Проверка SSHFP:
dig +short example.com SSHFP
- Базовые запросы:
nslookup— старый, но все еще встречающийся инструмент.nslookup -type=MX example.comnslookup -type=TXT example.comnslookup 192.0.2.1(для PTR)
host— простой и удобный для базовых запросов.host -t A example.comhost -t MX example.comhost -t TXT example.comhost 192.0.2.1(для PTR)host -t sshfp example.com
7. Безопасность и best practices
- DNSSEC: Включите DNSSEC для критически важных доменов. Это защищает ваших пользователей от поддельных DNS-ответов. Начните с тестового домена, чтобы освоить процедуру (генерация ключей, публикация
DSу регистратора). Используйте онлайн-валидаторы для проверки. - CAA: Всегда настраивайте
CAA-записи. Это простой и эффективный способ предотвратить выпуск сертификатов для вашего домена неавторизованными центрами сертификации. Укажите только тех CA, которыми вы пользуетесь (например,letsencrypt.org). - Управление ключами DKIM: Регулярно (например, раз в год) генерируйте новые пары ключей DKIM. Опубликуйте новый публичный ключ в DNS, настройте MTA на использование нового селектора, а через несколько недель (убедившись, что все старые письма с подписью старого ключа обработаны) удалите старую
TXT-запись. - Конфиденциальность: Не публикуйте
HINFO-записи, так как они раскрывают информацию об оборудовании и ПО, что может быть полезно злоумышленникам. - ANY-запросы: Многие публичные DNS-резолверы (например, Google Public DNS, Cloudflare) больше не обрабатывают
ANY-запросы из-за их использования в DDoS-атаках. Не полагайтесь на них.
8. Частые ошибки и как их избежать
- CNAME конфликтует с другими записями: Нельзя иметь
CNAMEи, например,AилиMXдля одного и того же имени. Решение: Пересмотрите структуру зоны. ИспользуйтеA-записи илиALIAS/ANAMEдля apex. - Отсутствие PTR для почтового сервера: Это главная причина, по которой почта попадает в спам. Решение: Всегда настраивайте
PTRу вашего хостинг-провайдера. - Неизменяемый SOA Serial: Если не увеличивать серийный номер, вторичные серверы не узнают об обновлениях. Решение: Всегда увеличивайте
Serialпосле любого изменения в зоне. Автоматизируйте этот процесс, если возможно. - Неправильное форматирование длинных TXT-записей: Если строка длиннее 255 байт и не разбита на части, она может быть обрезана или вызвать ошибку. Решение: Всегда разбивайте длинные строки в
TXT-записях, заключая каждую часть в кавычки. - Неправильный DS при включении DNSSEC: Если
DS-запись, опубликованная у регистратора, не соответствует вашемуDNSKEY, зона станет «недоверенной», и клиенты с включенным DNSSEC не смогут получить из нее записи. Решение: Тщательно следуйте инструкциям вашего DNS-сервера и регистратора. Дважды проверяйте хеши. - Высокий TTL перед миграцией: Если TTL большой (например, 86400), после смены IP-адреса пользователи будут попадать на старый адрес в течение суток. Решение: Всегда снижайте TTL за день-два до запланированной миграции.
- CNAME на apex-домене: Прямое использование
CNAMEдляexample.com.нарушает RFC и может вызвать непредсказуемое поведение. Решение: ИспользуйтеALIAS/ANAMEилиCNAME flattening, предоставляемые вашим DNS-провайдером.
9. Чек-лист перед продакшн-релизом или миграцией
Используйте этот список для финальной проверки перед запуском или переносом сайта/сервиса.
- [ ] Основные записи:
A/AAAAдля всех ключевых хостов (веб, почта) настроены и ведут на правильные IP-адреса. - [ ] Почта:
MX-записи настроены и указывают на хосты, имеющиеA/AAAAзаписи. - [ ] Обратный DNS:
PTR-записи для всех IP-адресов почтовых серверов настроены и корректны (проверено черезdig -x). - [ ] SPF:
TXT-запись SPF настроена, включает все разрешенные источники и имеет правильный механизм завершения (-allили~all). - [ ] DKIM: Публичный ключ опубликован в DNS, MTA настроен на подпись писем. Проверена подпись на тестовом письме.
- [ ] DMARC:
TXT-запись DMARC опубликована. Для нового развертывания рекомендуется начать сp=none. - [ ] Серверы имен:
NS-записи в зоне совпадают с серверами, указанными у регистратора. Настроеныglue-записи, если необходимо. - [ ] SOA Serial: Серийный номер был увеличен после всех последних изменений.
- [ ] CAA: Настроены
CAA-записи для ограничения выпуска сертификатов. - [ ] TTL: TTL был уменьшен заранее (если планировалась миграция).
- [ ] Проверка: Выполнены проверки с помощью
dig +trace,dig MX,dig TXTи онлайн-инструментов (например, MXToolbox). - [ ] DNSSEC (если включен):
DS-запись корректно добавлена у регистратора, проверки DNSSEC проходят успешно. - [ ] Резервное копирование: Экспорт текущей зоны сохранен.
- [ ] План отката: Четко прописаны шаги для отката изменений в случае сбоя.
- [ ] Мониторинг: Настроены системы мониторинга для отслеживания доступности DNS-серверов и изменений в зоне.
10. Дополнительные примеры и пояснения полей
- SRV — Глубокое погружение:
_xmpp-client._tcp.example.com. 3600 IN SRV 5 20 5222 xmpp1.example.com. _xmpp-client._tcp.example.com. 3600 IN SRV 5 30 5222 xmpp2.example.com. _xmpp-client._tcp.example.com. 3600 IN SRV 10 100 5222 backup.example.com.- Клиент сначала обратится к серверам с приоритетом
5(xmpp1иxmpp2). - Между
xmpp1иxmpp2выбор будет происходить пропорционально их весу:xmpp1имеет 40% шанс (20/(20+30)),xmpp2— 60% (30/(20+30)). - Сервер
backup.example.com.(приоритет10) будет использоваться только если оба сервера с приоритетом5недоступны.
- Клиент сначала обратится к серверам с приоритетом
- TLSA — Расшифровка примера:
_443._tcp.www.example.com. IN TLSA 3 1 1 d2abde...f213(DANE-EE): Клиент должен использовать именно этот сертификат (или его открытый ключ), независимо от цепочки доверия CA.1(Selector): В записи хранится хеш не всего сертификата, а только его открытого ключа. Это удобнее, так как при перевыпуске сертификата с тем же ключом менятьTLSA-запись не нужно.1(Matching Type): Используется хеш SHA-256.
- SSHFP — Расшифровка примера:
example.com. IN SSHFP 4 2 356a192b7913b04c54574d18c28d46e6395428ab4: Алгоритм — ED25519 (современный и безопасный).2: Тип дайджеста — SHA-256.356a19...28ab: SHA-256 хеш открытого ключа ED25519.
11. Полезные сценарии
- Подключение сайта к CDN:
- Обычно CDN-провайдер просит сделать
CNAMEдля поддомена (например,www) на их адрес (например,example.cdnprovider.com). - Если вы хотите использовать CDN для корневого домена (
example.com), используйте функциюALIAS/ANAMEилиCNAME flatteningвашего DNS-провайдера. - Убедитесь, что CDN правильно настроен для работы с вашим SSL-сертификатом (часто CDN берет на себя терминацию SSL). Учет
CAA-записей в этом случае важен.
- Обычно CDN-провайдер просит сделать
- Перемещение хоста (миграция):
- За 48-72 часа до миграции: Уменьшите TTL для
A/AAAAзаписей вашего сайта до 300 секунд. - Подождите: Дождитесь, пока старый TTL «пропагируется» (пройдет срок, равный старому TTL, например, 3600 секунд).
- В день миграции: Измените
A/AAAAзаписи, указав новые IP-адреса. - Проверка: Используйте
dig +short example.com Aс разных публичных DNS (Google8.8.8.8, Cloudflare1.1.1.1) для проверки распространения изменений. - После стабилизации (через 24-48 часов): Увеличьте TTL обратно до оптимального значения (например, 3600).
- За 48-72 часа до миграции: Уменьшите TTL для
12. Готовый JSON для импорта в панель провайдера
Ниже приведен расширенный JSON-шаблон, содержащий практически все типы записей, рассмотренные в этом гиде. Этот формат является обобщенным и может потребовать адаптации под конкретный API вашего DNS-провайдера (Cloudflare, AWS Route 53, DigitalOcean и т.д.).
{
"zone": "example.com",
"records": [
{
"type": "A",
"name": "@",
"value": "192.0.2.10",
"ttl": 3600
},
{
"type": "AAAA",
"name": "@",
"value": "2001:db8::10",
"ttl": 3600
},
{
"type": "CNAME",
"name": "www",
"value": "example.com.",
"ttl": 3600
},
{
"type": "MX",
"name": "@",
"value": "mail.example.com.",
"priority": 10,
"ttl": 3600
},
{
"type": "MX",
"name": "@",
"value": "backup-mail.example.com.",
"priority": 20,
"ttl": 3600
},
{
"type": "TXT",
"name": "@",
"value": "v=spf1 ip4:192.0.2.20 include:_spf.google.com -all",
"ttl": 3600
},
{
"type": "TXT",
"name": "default._domainkey",
"value": "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQA...",
"ttl": 3600
},
{
"type": "TXT",
"name": "_dmarc",
"value": "v=DMARC1; p=reject; rua=mailto:dmarc@example.com; pct=100",
"ttl": 3600
},
{
"type": "NS",
"name": "@",
"value": "ns1.example.net.",
"ttl": 3600
},
{
"type": "NS",
"name": "@",
"value": "ns2.example.net.",
"ttl": 3600
},
{
"type": "SOA",
"name": "@",
"primary_ns": "ns1.example.net.",
"admin_email": "admin.example.com.",
"serial": 2025092201,
"refresh": 7200,
"retry": 3600,
"expire": 1209600,
"minimum": 86400,
"ttl": 3600
},
{
"type": "PTR",
"name": "20.2.0.192.in-addr.arpa.",
"value": "mail.example.com.",
"ttl": 3600
},
{
"type": "SRV",
"name": "_sip._tcp",
"target": "sipserver.example.com.",
"port": 5060,
"priority": 10,
"weight": 60,
"ttl": 3600
},
{
"type": "CAA",
"name": "@",
"value": "letsencrypt.org",
"flags": 0,
"tag": "issue",
"ttl": 3600
},
{
"type": "CAA",
"name": "@",
"value": "mailto:security@example.com",
"flags": 0,
"tag": "iodef",
"ttl": 3600
},
{
"type": "TLSA",
"name": "_443._tcp.www",
"usage": 3,
"selector": 1,
"matching_type": 1,
"value": "d2abde240d7cd3ee6b4b28c54df034b97983a1d16e8a410e4561cb106618e971",
"ttl": 3600
},
{
"type": "SSHFP",
"name": "@",
"algorithm": 4,
"digest_type": 2,
"value": "356a192b7913b04c54574d18c28d46e6395428ab",
"ttl": 3600
},
{
"type": "HINFO",
"name": "server1",
"cpu": "Intel Xeon",
"os": "Ubuntu 22.04 LTS",
"ttl": 3600
},
{
"type": "LOC",
"name": "@",
"latitude": "55.7558 N",
"longitude": "37.6176 E",
"altitude": 150,
"ttl": 3600
},
{
"type": "RP",
"name": "@",
"mbox": "admin.example.com.",
"txt": "Technical Support",
"ttl": 3600
},
{
"type": "NAPTR",
"name": "4.3.2.1.5.5.5.1.e164.arpa.",
"order": 100,
"preference": 10,
"flags": "U",
"service": "E2U+sip",
"regexp": "!^.*$!sip:info@example.com!",
"replacement": ".",
"ttl": 3600
},
{
"type": "DS",
"name": "@",
"key_tag": 54517,
"algorithm": 13,
"digest_type": 2,
"digest": "84C84478D00A57973FC5D3E32F7E2BF539FB697D2660874C6D33A3313872D34F",
"ttl": 3600
},
{
"type": "DNSKEY",
"name": "@",
"flags": 257,
"protocol": 3,
"algorithm": 13,
"public_key": "AwEAAbOv...QAB",
"ttl": 3600
},
{
"type": "DNSKEY",
"name": "@",
"flags": 256,
"protocol": 3,
"algorithm": 13,
"public_key": "AwEAAa3d...9QAB",
"ttl": 3600
}
]
}
Cloudflare:
{
"zone_name": "example.com",
"zone_type": "full",
"records": [
{
"type": "A",
"name": "@",
"content": "192.0.2.10",
"ttl": 3600,
"proxied": false
},
{
"type": "AAAA",
"name": "@",
"content": "2001:db8::10",
"ttl": 3600,
"proxied": false
},
{
"type": "CNAME",
"name": "www",
"content": "example.com",
"ttl": 3600,
"proxied": false
},
{
"type": "MX",
"name": "@",
"content": "mail.example.com",
"priority": 10,
"ttl": 3600
},
{
"type": "TXT",
"name": "@",
"content": "v=spf1 ip4:192.0.2.20 include:_spf.google.com ~all",
"ttl": 3600
},
{
"type": "TXT",
"name": "_dmarc",
"content": "v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com; pct=100",
"ttl": 3600
},
{
"type": "NS",
"name": "@",
"content": "ns1.example.net",
"ttl": 3600
},
{
"type": "NS",
"name": "@",
"content": "ns2.example.net",
"ttl": 3600
},
{
"type": "SRV",
"name": "_sip._tcp",
"data": {
"target": "sipserver.example.com",
"port": 5060,
"priority": 10,
"weight": 60
},
"ttl": 3600
},
{
"type": "CAA",
"name": "@",
"data": {
"flags": 0,
"tag": "issue",
"value": "letsencrypt.org"
},
"ttl": 3600
},
{
"type": "TLSA",
"name": "_443._tcp",
"data": {
"usage": 3,
"selector": 1,
"matching_type": 1,
"certificate": "<hex-of-cert-hash>"
},
"ttl": 3600
},
{
"type": "SSHFP",
"name": "@",
"data": {
"algorithm": 4,
"digest_type": 2,
"fingerprint": "d6f8..."
},
"ttl": 3600
},
{
"type": "HINFO",
"name": "@",
"data": {
"cpu": "INTEL",
"os": "Linux"
},
"ttl": 3600
},
{
"type": "LOC",
"name": "@",
"data": {
"latitude": "37.7749N",
"longitude": "122.4194W",
"altitude": 30
},
"ttl": 3600
},
{
"type": "RP",
"name": "admin",
"data": {
"mbox": "admin.example.com",
"txt": "Responsible person for the domain"
},
"ttl": 3600
},
{
"type": "NAPTR",
"name": "_sip._tcp",
"data": {
"order": 100,
"preference": 10,
"flags": "U",
"service": "SIP+D2U",
"regexp": "",
"replacement": "_sip._udp.example.com"
},
"ttl": 3600
},
{
"type": "DS",
"name": "@",
"data": {
"key_tag": 12345,
"algorithm": 8,
"digest_type": 2,
"digest": "<hex-digest>"
},
"ttl": 3600
},
{
"type": "DNSKEY",
"name": "@",
"data": {
"flags": 256,
"protocol": 3,
"algorithm": 8,
"public_key": "<base64-key>"
},
"ttl": 3600
},
{
"type": "RRSIG",
"name": "@",
"data": {
"type_covered": "A",
"algorithm": 8,
"labels": 1,
"original_ttl": 3600,
"signature_expiration": 1700000000,
"signature_inception": 1690000000,
"key_tag": 12345,
"signer_name": "example.com",
"signature": "<base64-signature>"
},
"ttl": 3600
},
{
"type": "NSEC",
"name": "@",
"data": {
"next_domain": "example.net",
"types": ["A","AAAA","MX","TXT","NS"]
},
"ttl": 3600
}
]
}
Route 53:
{
"Comment": "Full DNS cheat sheet import",
"Changes": [
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "example.com.",
"Type": "A",
"TTL": 3600,
"ResourceRecords": [{"Value": "192.0.2.10"}]
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "example.com.",
"Type": "AAAA",
"TTL": 3600,
"ResourceRecords": [{"Value": "2001:db8::10"}]
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "www.example.com.",
"Type": "CNAME",
"TTL": 3600,
"ResourceRecords": [{"Value": "example.com"}]
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "example.com.",
"Type": "MX",
"TTL": 3600,
"ResourceRecords": [{"Value": "10 mail.example.com"}]
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "example.com.",
"Type": "TXT",
"TTL": 3600,
"ResourceRecords": [{"Value": "\"v=spf1 ip4:192.0.2.20 include:_spf.google.com ~all\""}]
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "_dmarc.example.com.",
"Type": "TXT",
"TTL": 3600,
"ResourceRecords": [{"Value": "\"v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com; pct=100\""}]
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "example.com.",
"Type": "NS",
"TTL": 3600,
"ResourceRecords": [
{"Value": "ns1.example.net"},
{"Value": "ns2.example.net"}
]
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "_sip._tcp.example.com.",
"Type": "SRV",
"TTL": 3600,
"ResourceRecords": [{"Value": "10 60 5060 sipserver.example.com"}]
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "example.com.",
"Type": "CAA",
"TTL": 3600,
"ResourceRecords": [{"Value": "0 issue \"letsencrypt.org\""}]
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "_443._tcp.example.com.",
"Type": "TLSA",
"TTL": 3600,
"ResourceRecords": [{"Value": "3 1 1 <hex-of-cert-hash>"}]
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "example.com.",
"Type": "SSHFP",
"TTL": 3600,
"ResourceRecords": [{"Value": "4 2 d6f8..."}]
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "example.com.",
"Type": "HINFO",
"TTL": 3600,
"ResourceRecords": [{"Value": "\"INTEL\" \"Linux\""}]
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "example.com.",
"Type": "LOC",
"TTL": 3600,
"ResourceRecords": [{"Value": "37.7749N 122.4194W 30m"}]
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "admin.example.com.",
"Type": "RP",
"TTL": 3600,
"ResourceRecords": [{"Value": "admin.example.com Responsible person for the domain"}]
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "_sip._tcp.example.com.",
"Type": "NAPTR",
"TTL": 3600,
"ResourceRecords": [{"Value": "100 10 U SIP+D2U "" _sip._udp.example.com"}]
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "example.com.",
"Type": "DS",
"TTL": 3600,
"ResourceRecords": [{"Value": "12345 8 2 <hex-digest>"}]
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "example.com.",
"Type": "DNSKEY",
"TTL": 3600,
"ResourceRecords": [{"Value": "256 3 8 <base64-key>"}]
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "example.com.",
"Type": "RRSIG",
"TTL": 3600,
"ResourceRecords": [{"Value": "A 8 1 3600 1700000000 1690000000 12345 example.com <base64-signature>"}]
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "example.com.",
"Type": "NSEC",
"TTL": 3600,
"ResourceRecords": [{"Value": "example.net A AAAA MX TXT NS"}]
}
}
]
}
Полная поддержка всех типов записей: A, AAAA, CNAME, MX, TXT, NS, SRV, CAA, TLSA, SSHFP, HINFO, LOC, RP, NAPTR, DS, DNSKEY, RRSIG, NSEC. TTL и приоритеты уже заданы, можно адаптировать под нужды. Использует ResourceRecords для каждой записи, как требует AWS.
Прямой импорт через AWS CLI командой:
aws route53 change-resource-record-sets --hosted-zone-id ZONE_ID --change-batch file://dns_records.json
Планируйте изменения: Всегда снижайте TTL перед миграцией.
Тестируйте: Используйте dig, nslookup и онлайн-инструменты для проверки каждой настройки.
Безопасность прежде всего: Настройте SPF, DKIM, DMARC для почты. Включите CAA для контроля сертификатов. Рассмотрите возможность использования DNSSEC для критически важных доменов.
Документируйте: Ведите чек-листы и храните резервные копии зон.
Этот материал призван быть вашим универсальным справочником. Сохраните его, и он поможет вам решить любую задачу, связанную с DNS.ниверсальным справочником. Сохраните его, и он поможет вам решить любую задачу, связанную с DNS.