Что такое запись CNAME?
CNAME, или canonical name, создаёт DNS-псевдоним: одно имя указывает на другое доменное имя, а не непосредственно на IP-адрес. Резолвер сначала получает целевое имя, затем продолжает разрешение его A или AAAA. Такой подход удобен для CDN, внешнего хостинга, SaaS и распределённых сервисов, где адреса могут меняться без обновления каждого клиентского имени.
Как работают записи CNAME
Пользователь обращается к www.example.com, но DNS направляет его к app.hosting.example. Целевое имя должно существовать и в итоге разрешаться в адрес. CNAME не является HTTP-редиректом: браузер сохраняет исходный URL, а изменение происходит на уровне DNS.
www.example.com. IN CNAME example.com.
Распространённые сценарии использования CNAME
По правилам DNS имя с CNAME обычно не должно одновременно содержать A, AAAA, MX, TXT или другие обычные записи. Поэтому CNAME нельзя бездумно ставить на корневом домене, где нужны MX для почты и TXT для SPF. Некоторые DNS-провайдеры предлагают собственные механизмы flattening для apex, но их поведение нужно проверять отдельно.
Поддомен WWW
TTL определяет, как долго ответ может храниться в кэше. После смены цели часть пользователей ещё будет обращаться к прежнему значению до истечения TTL. Очень маленький TTL ускоряет изменения, но увеличивает число запросов к DNS, а большой TTL повышает стабильность, но замедляет переключение.
www IN CNAME example.com.
Интеграция с CDN
Проверяйте сам CNAME, целевое имя, цепочку CNAME, конечные A и AAAA, NXDOMAIN и циклы. Цепочка не должна быть бесконечной, а цель не должна быть недоступна только из-за локального DNS-кэша. Для HTTPS дополнительно проверьте сертификат исходного имени, маршрутизацию и Host-заголовок.
CNAME хорошо отделяет пользовательское имя от инфраструктуры, но не скрывает от владельца DNS саму целевую платформу и не гарантирует доступность приложения.
cdn.example.com IN CNAME d111111abcdef8.cloudfront.net.
Платформенный хостинг
CNAME возвращает каноническое имя, которое затем разрешается отдельно. Это DNS-алиас, а не HTTP-redirect: браузер сохраняет исходный URL.
blog.example.com IN CNAME yoursite.wordpress.com.
shop.example.com IN CNAME shops.myshopify.com.
SaaS-приложения
CNAME удобен для внешнего хостинга и сервисов, но целевое имя должно существовать и оставаться под контролем владельца.
docs.example.com IN CNAME example.gitbook.io.
status.example.com IN CNAME stats.uptimerobot.com.
CNAME и A-запись
Проверьте www, корневой домен, TLS, canonical и redirect отдельно. CNAME на www не исправляет делегацию apex.
\n| Сценарий | Используйте CNAME | Используйте A-запись |\n|----------|-------------------|----------------------|\n| Корневой домен (@) | ❌ Не разрешено | ✅ Обязательно |\n| Поддомен со статическим IP | Подойдут оба | ✅ Напрямую |\n| Поддомен у провайдера | ✅ Предпочтительно | ❌ IP может измениться |\n| Настройка CDN | ✅ Обычно | Зависит от сервиса |\n| Балансировка нагрузки | ❌ Нельзя несколько | ✅ Несколько IP |
| Сценарий | Используйте CNAME | Используйте A-запись |
|---|---|---|
| Корневой домен (@) | ❌ Не разрешено | ✅ Обязательно |
| Поддомен со статическим IP | Подойдут оба | ✅ Напрямую |
| Поддомен у провайдера | ✅ Предпочтительно | ❌ IP может измениться |
| Настройка CDN | ✅ Обычно | Зависит от сервиса |
| Балансировка нагрузки | ❌ Нельзя несколько | ✅ Несколько IP |
Почему корневой домен не может использовать CNAME
Используйте точное имя, выданное CDN, и подтвердите ownership через предусмотренный TXT или другой официальный механизм.
Цепочки CNAME
При удалении проекта уберите CNAME и сертификат, иначе старое имя может остаться направленным на неуправляемый ресурс.
blog.example.com → myblog.host.com
myblog.host.com → lb-1234.hosting.com
lb-1234.hosting.com → 203.0.113.50 (A record)
Настройка записи CNAME
Следуйте инструкции SaaS по DNS, валидации и TLS. Общий target не доказывает, что разные домены принадлежат одной организации.
Базовый синтаксис
A возвращает IPv4, CNAME указывает на имя. Выбор зависит от контракта сервиса, а не от желаемого визуального redirect.
subdomain IN CNAME target.domain.com.
Учет TTL
В apex обычно нужны SOA и NS, поэтому классический CNAME может конфликтовать с обязательными записями. Используйте поддерживаемый ALIAS или ANAME только по правилам провайдера.
www 300 IN CNAME example.com.
Проверка записей CNAME
Цепочка увеличивает задержку и может закончиться циклом или лимитом разрешения. Сокращайте её и проверяйте каждый target.
dig www.example.com CNAME
; ANSWER SECTION:
www.example.com. 300 IN CNAME example.com.
dig +trace www.example.com
Типичные проблемы CNAME
Записывайте полное целевое имя с нужной конечной точкой согласно синтаксису зоны и не добавляйте URL-схему или путь.
CNAME на корневом домене
Проверьте имя, target, TTL, NS и ответ авторитетного сервера. Сохраняйте canonical identifier каждой стороны.
example.com IN CNAME other.com. ; INVALID
CNAME вместе с другими записями
Кэш target и самой CNAME-записи могут истекать в разное время. Планируйте миграцию с учётом обоих значений.
blog.example.com IN CNAME host.com.
blog.example.com IN MX mail.host.com. ; INVALID
Отсутствующие целевые записи
Диагностируйте apex, конфликт с A/AAAA/MX, отсутствующий target, цикл, NXDOMAIN, TLS и takeover-риск как отдельные состояния.
Рекомендации
Ограничивайте доступ к DNS, включайте MFA, мониторьте target и удаляйте записи при закрытии сервиса. Не объявляйте домен свободным или безопасным по одному DNS-ответу.