Компьютерные сети
DNS записи: A, AAAA, CNAME, MX
DNS - не просто «имя → IP». Это база данных с разными типами записей: адреса серверов, почтовые шлюзы, криптографические ключи, верификационные токены. Понимание типов записей - ключ к настройке доменов.
- **Email:** без правильных MX, SPF, DKIM письма попадают в спам
- **CDN/Хостинг:** CNAME для подключения Cloudflare, Vercel, Netlify
- **Верификация:** TXT для подтверждения владения доменом в Google/AWS
Предварительные знания
A запись - IPv4 адрес
**A запись** (Address) - самый базовый тип DNS-записи. Связывает доменное имя с IPv4-адресом. При заходе на сайт браузер в первую очередь ищет A-запись.
**Round-robin DNS:** Несколько A-записей для одного домена - простейший load balancing. DNS возвращает их в разном порядке, распределяя нагрузку. Минус: не учитывает здоровье серверов.
Что хранит A-запись?
AAAA запись - IPv6 адрес
**AAAA запись** (Quad-A) - то же, что A, но для IPv6. Название «четыре A» потому что IPv6 (128 бит) в 4 раза длиннее IPv4 (32 бит). Современные сайты имеют и A, и AAAA.
**Happy Eyeballs (RFC 6555):** Браузеры запрашивают A и AAAA параллельно. Если IPv6 работает - используют его. Если IPv6 медленный или сломан - переключаются на IPv4 за миллисекунды.
Почему запись называется AAAA (четыре A)?
CNAME - каноническое имя (алиас)
**CNAME** (Canonical Name) - алиас, указывающий на другое доменное имя. Вместо IP-адреса содержит имя. Резолвер следует по цепочке CNAME, пока не найдёт A/AAAA-запись.
**Ограничение CNAME:** Нельзя ставить CNAME на apex domain (example.com без www). CNAME заменяет ВСЕ записи для имени, включая MX, NS. Для apex используйте A/AAAA или ALIAS/ANAME (нестандартные).
На что указывает CNAME?
MX - почтовые серверы
**MX** (Mail Exchanger) - указывает, какой сервер принимает почту для домена. Содержит приоритет (чем меньше - тем важнее) и имя почтового сервера. При отправке на user@example.com ищется MX для example.com.
**Без MX:** Если MX нет, почтовые серверы пробуют отправить на A-запись домена. Но это fallback - лучше всегда иметь MX. Для отключения почты: MX с приоритетом 0 и точкой (null MX, RFC 7505).
Что означает меньший приоритет в MX?
TXT - текстовые записи
**TXT** (Text) - произвольные текстовые данные. Изначально для комментариев, сейчас используется для верификации, SPF, DKIM, DMARC и других протоколов. Машины читают TXT не хуже людей.
**Лимит TXT:** Одна строка - до 255 символов. Для длинных данных (DKIM-ключи) используются несколько строк, которые конкатенируются. Общий лимит UDP-пакета - 512 байт, для больших ответов - TCP или EDNS.
TXT-записи только для людей (комментарии)
TXT активно используются машинами для SPF, DKIM, DMARC, верификации и других протоколов
Хотя TXT создавался для текстовых заметок, его гибкость сделала его универсальным хранилищем метаданных. Email без SPF/DKIM часто попадает в спам.
Для чего используется SPF в TXT-записи?
Ключевые идеи
- **A** - IPv4 адрес; **AAAA** - IPv6 адрес
- **CNAME** - алиас на другое имя (не на apex!)
- **MX** - почтовые серверы с приоритетами
- **TXT** - метаданные: SPF, DKIM, верификация
Связанные темы
Типы записей - часть большой экосистемы DNS:
- DNS резолвинг — Как записи находятся и кешируются
- NS записи — Делегирование зон и авторитетные серверы
- DNSSEC — Криптографическая подпись записей
Вопросы для размышления
- Почему нельзя поставить CNAME на apex домен (example.com)?
- Как работает email, если у домена нет MX-записи?
- Зачем нужны и A, и AAAA записи одновременно?