Добавление записей DNS CNAME и TXT для одного поддомена

Вопрос или проблема

У меня есть приложение на Heroku, и мне нужно настроить для него домен. Обычный способ настройки – использовать CNAME-запись, чтобы указать, что этот домен является псевдонимом для <your-domain-name>.herokuapp.com. Дело в том, что я также хочу добавить интеграции с Google Webmasters и Яндекс.Метрикой, и самый простой способ – добавить две TXT-записи для домена. Я настроил его так:enter image description here
Мне нужно иметь 2 TXT-записи на http://www.cscombo.com, но, по всей видимости, это не сработает из-за этого: https://stackoverflow.com/questions/34613083/cname-and-txt-record-for-same-subdomain-not-working

Моя текущая настройка работает неправильно, потому что добавление http://www.cscombo.com в Google Webmasters не сработает (поскольку TXT-запись для субдомена www не существует), а добавление http://cscombo.com (версия без www) сработает (TXT-запись для этого субдомена существует), но в этом случае Google Webmasters не сможет прочитать sitemap.txt и robots.txt (потому что они оба перенаправляются на www-версию сайта). Та же история с Яндекс.Метрикой.

Итак, вопрос: есть ли способ добавить CNAME и TXT-записи для одного и того же субдомена?

Вы не можете. Как говорится в RFC1034 в s3.6.2,

Если CNAME RR присутствует в узле, другие данные присутствовать не должны

Если вам нужна запись TXT для (например) www.example.com, вы не можете иметь запись CNAME для www.example.com и должны найти другой способ достичь желаемого. Это может означать мониторинг example.herokuapp.com самостоятельно, и при изменении IP-адреса обновление ваших собственных записей A для www.example.com.

Редактирование из будущего: в своем (отличном) блоге системного администратора, Крис Зибенман дает очень хороший анализ почему это запрещено, плюс плюсы и минусы обходных путей, специфичных для поставщика, таких как записи ALIAS (оказывается, они делают именно то, что я описал выше).

Лично мне потому что RFC так говорят кажется более приемлемым ответом, чем Крису, но, с другой стороны, я подозреваю, что мой мозг хранит нечеткий образ Джона Постела, регулярно поднимающегося на гору Синай, каждый раз возвращаясь с последними RFC в полу-переносимом формате.

Обходным решением может быть использование записи ALIAS, если ваш регистратор поддерживает ее. Это тип записей, который обеспечивает поведение, похожее на CNAME, на доменах верхнего уровня. Подробнее читайте: https://support.dnsimple.com/articles/alias-record/#whats-an-alias-record

Например, вы можете создать запись ALIAS для @, которая указывает на myapp.herokuapp.com. Это позволит вам также иметь записи TXT для @ в том же доменном имени.

.

Ответ или решение

Добавление обеих CNAME и TXT записей DNS для одного поддомена может вызвать определенные сложности, учитывая, что существует правило, согласно которому поддомен, имеющий CNAME-запись, не может содержать другие типы записей, включая TXT. Это ограничение связано с механикой работы самого DNS-сервиса, как подробно описано в RFC1034, разделе 3.6.2.

Проблема:

У вас есть приложение на Heroku, которое требует добавления CNAME-записи для домена, чтобы указать, что этот домен является алиасом для <ваш-домен>.herokuapp.com. Однако вы также хотите интегрировать Google Webmasters и Yandex.Metrika, что требует добавления TXT-записей для того же поддомена.

Причина:

Когда CNAME-запись присутствует в узле DNS, любая другая тип записи в этом же узле запрещена. Это значит, что попытка добавить TXT-запись наряду с CNAME-записью для поддомена ведёт к конфликту и недоступности необходимых записей для сервисов, таких как Google или Yandex.

Возможные решения:

  1. Использование ALIAS-записи:

    • Если ваш регистратор поддерживает ALIAS-записи, они могут выступать как аналог CNAME-записей, но без ограничения на добавление других записей. Это может решить вашу задачу. ALIAS-записи обрабатываются на уровне провайдера DNS, предоставляя необходимое поведение CNAME для API или приложения в контексте имени домена.
    • Вы можете создать ALIAS-запись для корня домена (@), направляющую на myapp.herokuapp.com. Это устранит конфликт и обеспечит возможность добавления TXT-записей для домена.
  2. Настройка A-записи вручную:

    • Если ALIAS-записи недоступны, другой вариант заключается в отслеживании IP-адреса домена example.herokuapp.com и добавлении A-записей. Это потребует периодического обновления записей при изменении IP-адреса, что может быть неудобно, но будет работать.
  3. Создание отдельных поддоменов:

    • Другой подход — использование разных поддоменов для различных целей (например, verify.example.com для TXT-проверок), однако это может потребовать дополнительной настройки и редиректов.

Заключение:

Для вашей задачи рекомендовано исследовать возможность использования ALIAS-записей, что в большинстве случаев решит проблему с минимальными усилиями. Не забудьте проверить, поддерживает ли ваш текущий регистратор этот тип записи. При необходимости, обновите или перенесите DNS на провайдера, предоставляющего такие функции.

Оцените материал
Добавить комментарий

Капча загружается...