Записи, которые встретятся почти в каждой зоне
CNAME или A-запись: что выбрать?
Обе записи направляют имя хоста куда-то ещё. Разница в том, на что они указывают, и от этого зависит, кто отвечает за корректность конфигурации при смене IP-адреса.
| A-запись | CNAME-запись | |
|---|---|---|
| Указывает на | IP-адрес | Другое имя хоста |
| Пример | 93.184.216.34 | myapp.herokudns.com |
| Дополнительный запрос? | Нет: это окончательный ответ | Да: нужно разрешить и целевое имя |
| Допустима в корне? | Да | Нет (см. ниже) |
| Другие записи рядом? | Да | Нет: должна быть единственной |
| Обновляется при смене IP? | Нужно править вручную | Автоматически |
Решение одним вопросом
Ключевой вывод
Вы управляете IP-адресом и знаете, что он не изменится? Используйте A-запись. Указываете на сервис, которым управляет кто-то другой? Используйте CNAME, чтобы смена его адресов вас не ломала.
Для большинства случаев это и есть всё решение. Остальная часть статьи посвящена деталям, на которых легко споткнуться.
Как разрешается CNAME
CNAME означает Canonical Name (каноническое имя). Запись говорит: это имя является псевдонимом, поищите вместо него другое.
shop.example.com. 3600 IN CNAME stores.myshopify.com.
stores.myshopify.com. 300 IN A 23.227.38.65Резолвер, запросивший shop.example.com, получает CNAME, затем разрешает stores.myshopify.com и возвращает 23.227.38.65. Два запроса вместо одного: это несколько миллисекунд, и почти всегда ответ берётся из кеша.
Преимущество в том, что когда Shopify переезжает на новый адрес, у себя они меняют одну A-запись, и ваш домен следует за ней автоматически. С A-записью вы были бы недоступны, пока сами не заметите проблему и не отредактируете запись.
Ограничение для корневого домена
Это самая частая претензия к DNS, и это правило протокола, а не ограничение вашего провайдера.
Поэтому хостинги, которые дают только имя хоста (myapp.herokuapp.com), создают проблему в корне домена. Выхода три:
ALIAS / ANAME / CNAME flattening
Многие DNS-провайдеры предлагают синтетический тип записи, который в корне ведёт себя как CNAME. Провайдер сам разрешает целевое имя и отдаёт полученный IP как обычную запись
A, так что правило протокола не нарушается. Cloudflare называет это CNAME flattening, а Route 53 — alias-записью.Перенаправьте корень на www
Направьте корень на небольшой сервис редиректа, а CNAME поставьте на
www. Это просто и поддерживается везде, но посетителям приходится делать один лишний переход.Используйте A-запись и примите затраты на поддержку
Если провайдер публикует стабильные IP-адреса и явно заявляет, что они статичны, A-запись в корне вполне допустима. Убедитесь, что он гарантирует стабильность: многие прямо отказываются это делать.
CNAME должна быть единственной
Если у имени есть CNAME, других записей быть не может: ни A, ни MX, ни TXT.
mail.example.com. IN CNAME ghs.googlehosted.com.
mail.example.com. IN TXT "v=spf1 include:_spf.google.com ~all"Одни провайдеры сразу отклоняют такую конфигурацию, а другие, что хуже, принимают её и ведут себя непредсказуемо. Если на имени нужна запись TXT, это имя не может быть CNAME.
Когда что подходит
A-запись подходит для
- Корневого домена почти во всех случаях.
- Сервера со статическим IP: VPS, выделенного сервера, зарезервированного облачного адреса.
- Любых случаев, когда на том же имени нужны другие записи.
- Целей
MX, которые должны разрешаться в адреса.
CNAME подходит для
- Поддоменов, указывающих на управляемую платформу (Shopify, Heroku, Netlify, Vercel).
www, указывающего на корень домена или на имя хоста вашего хостинга.- Поддоменов для подтверждения домена, которые просят создать провайдеры.
- Всего, чем IP-адрес вы управлять не можете.
Проверяем, что у вас настроено
dig +short www.example.com CNAME
dig +short www.example.com AИнструмент проверки показывает записи A, AAAA и CNAME для любого домена вместе, поэтому легко заметить имя, у которого есть и те и другие, хотя так быть не должно.
Нужно проверить публичные DNS-адреса домена? Воспользуйтесь инструментом Domain IP Lookup.
Бесплатные инструменты по этой теме
Часто задаваемые вопросы
Читайте также
Записи, которые встретятся почти в каждой зоне
Что такое DNS A-запись (и когда нужна AAAA)
Запись, которая на деле направляет ваш домен на сервер: её устройство, аналог AAAA и четыре ошибки, чаще всего ломающие сайты.
Записи, которые встретятся почти в каждой зоне
Типы DNS-записей: полный справочник
Каждый стоящий внимания тип записи: что он делает, как выглядит и какую ошибку с ним допускают чаще всего — на одной странице справочника.
Рекурсивный DNS-запрос: шаг за шагом
Браузер
нужен example.com
Резолвер
ваш провайдер / 1.1.1.1
Корень + TLD
кто отвечает за .com?
Авторитетный
настоящий ответ
Каждый шаг цепочки — тоже DNS-запрос, и его ответ потом кэшируется
Что такое сервер имён: как работает делегирование домена
Единственная настройка, которая решает, какой провайдер управляет вашим DNS, и причина, по которой правки записей иногда не дают вообще никакого эффекта.