что это и когда использовать / Хабр
Привет, Хабр! Меня зовут Виктор, я разработчик в Selectel. Часто ко мне обращаются клиенты и спрашивают, в каких ситуациях использовать DNS-записи типа alias. Вопросы появляются на почве ограничений и нюансов RFC. Пора разложить все по полочкам!
Дисклеймер: большую часть информации из статьи можно найти в RFC по каждому из типов записей. В статье дали выдержку самого важного и показали варианты практического применения. Материал поможет нашим клиентам правильно настроить DNS-записи.
Какие DNS-записи бывают?
DNS-записи позволяют протянуть взаимосвязи между IP-адресами и доменами. Именно с помощью них серверы делятся информацией о доменах с другими серверами. Поэтому важно ответственно подойти к настройкам — они разные, в зависимости от типов записей.
Например, есть A-записи, которые нужны исключительно для связи IP с доменом, CNAME, которые работают с поддоменами, MX, позволяющие настроить почтовые домены, и другие.
Записи типа alias
Всего существует пять основных записей типа alias — CNAME, ALIAS, ANAME, BNAME и DNAME. Но больше всего работают именно с ALIAS и CNAME. В Selectel DNS есть только эти два типа — это связано с тем, что ANAME, BNAME и DNAME оказались неудачными попытками и не смогли найти массового практического применения.
Теперь разберемся, когда эти записи нужны. За отправную точку возьмем самую популярную запись из этого класса — CNAME.
CNAME: запись для перенаправления поддоменов
CNAME позволяет установить связь, например, между www.google.com и google.com. Но этим список возможностей этой записи не ограничивается: с помощью CNAME можно, например, перенаправить с storage.example.com на 123456.selcdn.ru, чтобы получить «красивую» ссылку.
CNAME — это запись, отвечающая за привязку поддоменов к каноническим доменам. Она дублирует все ресурсные записи домена для поддоменов таким образом, чтобы при обращении к последнему был проброс на соответствующие адреса и настройки.
По сути, запись CNAME состоит из пары значений. Первое определяет псевдоним — например, субдомен вроде
Принципиальное отличие CNAME от A-записи в том, что она связывает сервисы с доменными именами, а не с физическими IP-адресами. В случае изменения адреса не нужно переписывать все записи CNAME, достаточно изменить А-запись у оригинального домена. Несмотря на это, у CNAME есть ограничения:
- Запись CNAME нельзя добавить для домена второго уровня вроде selectel.ru или google.com. Для таких целей нужно использовать ALIAS.
- Если для поддомена добавлена запись CNAME, то другую запись для него добавить нельзя. Это связано с особенностями технической реализации CNAME: она заставляет провайдеров «копировать» все записи у оригинальных доменов.
- Если для поддомена добавлены другие записи, то добавить CNAME нельзя. Причина та же, что в предыдущем пункте.
- CNAME невозможно использовать для «перенаправления», так как HTTP-редирект в рамках системы DNS организовать нельзя.
Если помнить об этих ограничениях, проблем с CNAME не будет.
Когда использовать CNAME
Разберем сценарий на примере CDN-ресурса в панели управления. К нему по умолчанию мы предоставляем домены вот такого вида:
Допустим, домен по умолчанию не нравится и вы хотите, чтобы сайт CDN был доступным через собственный (cdn.tarrydvcie.ru) — без использования домена Selectel. Для этого вы решаете создать А-запись следующего вида:
cdn.tarrydvice.ru. IN A 92.53.68.16
Здесь cdn. tarrydvice.ru — нужный поддомен, A — тип записи, 92.53.68.16 — адрес сервера CDN.
Наиболее простое и удобное решение в этой ситуации — использовать CNAME-запись. Тогда при изменении IP-адреса на 92.53.68.17 для домена по умолчанию автоматически подтянутся и для cdn.tarrydvice.ru.
Подключение и настройка записи в панели
Чтобы решить задачу с доступом через «красивый» домен cdn.tarrydvice.ru, нужно добавить CNAME-запись и сослаться на стандартный домен. Это можно сделать через панель управления доменами.
После добавления CNAME, новую запись можно увидеть с помощью команды
----------- dig cdn.tarrydvice.ru CNAME ;; QUESTION SECTION: ;cdn. tarrydvice.ru. IN CNAME ;; ANSWER SECTION: cdn.tarrydvice.ru. 3600 IN CNAME ab7b4245-9d7a-4b1b-90ba-d4115b72d63e.selcdn.net. ...
В качестве последнего действия нужно добавить новый домен во вкладке CDN.
Супер — все готово, теперь к CDN можно подключиться по «красивому» домену.
ALIAS: как CNAME, только выше
Принцип работы ALIAS похож на механику CNAME: она также копирует данные целевого домена. Однако не может быть добавлена для основного и «существовать» с другими записями в пределах одного поддомена.
Каждый раз, когда на серверы DNS поступает запрос типа записи A или AAAA, вызывается специальный обработчик, который преобразует ALIAS в адрес IPv4 или IPv6 соответственно.
При подключении ALIAS есть несколько ограничений, которые нужно учитывать:
- Для домена / поддомена с ALIAS-записью не может быть записи A или AAAA.
- Запись ALIAS нарушит DNSSEC на основном домене (@), поскольку в ответах @ A и @ AAAA будут отсутствовать записи RRSIG.
Нет какого-либо «черновика» и стандарта в RFC по подключению ALIAS-записи, поэтому от провайдера к провайдеру наблюдается разное поведение этой записи. Например, некоторые провайдеры умеют отправлять только типы записи A.
Когда использовать ALIAS
Теперь разберем сценарий на базе настройки объектного хранилища. Во вкладке «Хранилище» можно увидеть домен вида 288028.selcdn.ru — это персональный домен, который используется в публичных ссылках для доступа к файлам.
Здесь ситуация аналогична CNAME: нам выгоднее использовать ALIAS-запись на красивый домен tarrydvcie.ru, ведь изменения IP-адреса на 92.53.68.17 для 288028.selcdn.ru автоматически подтянутся и для tarrydvice.ru.
Подключение и настройка записи в панели
Для создания ALIAS-записи перейдем во вкладку «Cетевые сервисы» → «DNS-хостинг» и откроем домен tarrydvice. ru.
Далее нужно добавить запись и заполнить соответствующие поля:
После этого в списке записей появится ALIAS — это можно также увидеть с помощью команды
dig tarrydvice.ru ALIAS ;; QUESTION SECTION: ;tarrydvice.ru. IN A ;; ANSWER SECTION: tarrydvice.ru. 563 IN A 92.53.68.16
Для удобства получения ссылок в объектном хранилище осталось выполнить последний шаг: в управлении доменами нужно добавить tarrydvice.ru.
Теперь при получении ссылки на файл можно увидеть дополнительную URL с «красивым» доменом.
Поделитесь в комментариях, с какими трудностями вы сталкивались при подключении DNS-записей. Мы выберем интересные случаи и постараемся их разобрать.
Возможно, эти тексты тоже вас заинтересуют:→ SD – это Linux, а Midjourney – Mac: краткое полное руководство по Stable Diffusion
→ Расширяем возможности «малинки» в 2023 году: дополнительные модули и аксессуары для Raspberry Pi Pico
→ «Крутое пике» для жестких дисков: продажи упали почти вдвое, но растут продажи ленточных накопителей. Что происходит?
Ресурсные записи — документация Cloud DNS. Руководство пользователя
Перечень ресурсных записей
A-запись (Address record)
AAAA-запись (Address record to IPv6)
CNAME-запись (Canonical name)
MX-запись (Mail exchanger)
NS-запись (Name Server)
TXT-запись (Text String)
SPF (Sender Policy Framework)
DMARC (Domain-based Message Authentication, Reporting and Conformance)
DKIM (Domain Keys Identified Mail)
SOA-запись (Start of Authority)
SRV-запись (Service record)
PTR-запись (Reverse DNS)
DNAME-запись (Domain Name)
CAA-запись (Certification Authority Authorization)
HINFO-запись (Host Information)
WKS-запись (Well Known Service)
RP-запись (Responsible person)
LOC-запись (Location information)
Address record указывает на конкретный IP-адрес домена. Без нее сайт не будет работать. По этой записи система определяет к какому серверу обращаться за получением информации, когда пользователь вводит название сайта в адресную строку веб-браузера.
Пример:
Имя | Тип записи | Значение записи |
---|---|---|
sbercloud.ru | A | 178.248.232.192 |
AAAA запись DNS — аналог предыдущей А-записи. В значении указывается внешний IP-адрес в формате IPv6.
Пример:
Имя | Тип записи | Значение записи |
---|---|---|
sbercloud.ru | AААА | 212:14:2127:1:211:4eef:fe10:b17 |
CNAME («каноническое имя») указывает на расположение хостов на одном сервере. С ее помощью можно прописать несколько доменов и поддоменов в рамках одного сервера.
Каноническое имя позволяет создать наследование, при котором поддомен получает свойства всех ресурсных записей одного домена (кроме NS), через псевдоним (алиас).
Перед ее заполнением надо прописать A-запись. После можно создавать псевдонимы, их количество не ограничено.
Пример:
Имя | Тип записи | Значение записи |
---|---|---|
www.sbercloud.ru | CNAME | sbercloud.ru. |
Каждое значение обязательно должно заканчиваться точкой. Таким образом, можно привязывать разные хосты к одному серверу или выполнять редирект.
MX-запись задает почтовый сервер, который будет принимать и отправлять почту для данного домена. Запись может указывать на внутренний или внешний почтовый сервер. Значение для MX-записи должно состоять из приоритета и адреса почтового сервера, например: 10 mx.example.ru.
Пример:
Имя | Тип записи | Значение записи |
---|---|---|
sbercloud. ru. | MX | 10 mx1.sbercloud.ru. |
При обработке электронной почты на внутреннем сервере должна присутствовать A-запись.
Пример:
Имя | Тип записи | Значение записи |
---|---|---|
sbercloud.ru | A | 178.248.232.192 |
Например, для привязки почты для домена на серверы Яндекс-почты, надо указать следующие записи:
Имя | Тип записи | Значение записи |
---|---|---|
sbercloud.ru. | MX | 10 mx.yandex.net. |
Привязка почты для домена к Google, Mail.ru и другим почтовым сервисам осуществляется по такому же принципу.
Этой записью определяется доменный адрес DNS-сервера, обслуживающий конкретный домен. Интернет-соединение с доменом не функционирует, если не указана NS-запись.
Пример:
Имя | Тип записи | Значение записи |
---|---|---|
sbercloud.ru. | NS | ns1.sbercloud.ru. |
TXT-запись используется для хранения текстовых данных о домене. Применяется также для подтверждения прав на владение доменом. Например, когда осуществляется привязка к стороннему почтовому серверу, а также при подключении метрик и т.д.
Запись для зоны может быть только одна, а значений этой записи — несколько. При этом действуют следующие ограничения:
В последующем, отредактировав запись, можно добавить новые значения.
Более подробно о TXT-записях смотрите в RFC-1035 и RFC-1464.
Пример:
Имя | Тип записи | Значение записи |
---|---|---|
sbercloud. ru. | TXT | record1 |
Представляет из себя TXT-запись DNS домена. Запись содержит информацию о списке серверов, которые имеют право отправлять письма от имени этого домена и механизм обработки писем, отправленных от других серверов.
Пример:
Имя | Тип записи | Значение записи |
---|---|---|
sbercloud.ru. | TXT | v=spf1 +a +mx ~all |
См. RFC-7208.
Представляет из себя TXT-запись DNS домена. Запись содержит информацию о политике работы с письмами: пропустить, поместить в спам или отклонить.
Пример:
Имя | Тип записи | Значение записи |
---|---|---|
sbercloud.ru. | TXT | v=DMARC1; p=reject; sp=reject; aspf=s; adkim=s |
См. RFC-7489.
Представляет из себя TXT-запись DNS домена. Запись содержит информацию о подписи для проверки подлинности отправителя и целостности доставленного письма.
Пример:
Имя | Тип записи | Значение записи |
---|---|---|
sbercloud.ru. | TXT | v=DKIM1; k=rsa; p=public-key |
См. RFC-6376.
Указывает местоположение сервера с эталонной информацией о домене. Запись создается автоматически в самом начале и не может быть отредактирована или удалена.
Пример:
Имя | Тип записи | Serial number | TTL | Refresh | Retry | Expire | Minimum TTL |
---|---|---|---|---|---|---|---|
Контактный адрес администратора файловой зоны | SOA | 1812191123 | 3600 | 7200 | 540 | 604800 | 86400 |
Указывает расположение серверов (имя хоста, № порта) для определенных сервисов. Выполняет ассоциативную роль. Например, через него можно задать: IMAP-сервер для sbercloud.ru. (находится по адресу mail.sbercloud.ru). При этом, sbercloud.ru — веб-сервер.
Значение для SRV-записи заполняется согласно RFC: priority weight port target
.
Пример:
Имя | Тип записи | Значение записи |
---|---|---|
sbercloud.ru. | SRV | 0 5 5060 srv.example.ru. |
Обратная запись DNS служит для связывания отдельного IP-адреса с доменным именем. В основном, запись используется для отправки почты с домена. Если PTR-запись совпадет с именем почтового сервера из параметра HELO (EHLO), повысится шанс обойти спам-фильтры почтовых серверов на стороне получателя письма.
Пример:
Имя записи | Тип записи | Значение записи |
---|---|---|
178. 248.232.in-addr.arpa | PTR | mail.sbercloud.ru |
Запись используется для создания алиасов (псевдонимов) для всего дерева поддоменов, не затрагивая основной домен. В этом заключается отличие DNAME от CNAME-записи, которая создает псевдонимы только для одного домена, без его поддоменов.
Запись определяет, SSL/TLS-сертификаты каких центров сертификации могут применяться для указанного домена или поддомена. Обычно она генерируется на хостинге автоматически. Если CAA-запись не указана, это будет интерпретировано центром, как разрешение на выпуск сертификата.
Ассоциация hostname с конкретным портом и протоколом. Может задавать хост для обработки почты клиентов. На практике, почтовые сервисы почти никогда не запрашивают этих данных.
В записи прописаны реквизиты ответственных за домен. Указать можно как одного человека, так группу людей. Поле «Text Record Name» хранит ФИО ответственного работника, а поле «E-mail Address» — его электронную почту.
Что такое запись CNAME? — Справка DNSimple
Содержание
- Что такое запись CNAME?
- Ограничения
- Формат записи CNAME
- CNAME и перенаправление
- Запрос записей CNAME
- Управление записями CNAME
Что такое запись CNAME?
Записи CNAME можно использовать для присвоения одного имени другому. CNAME означает каноническое имя.
Обычный пример, когда у вас есть оба example.com
и www.example.com
указывают на одно и то же приложение и размещаются на одном сервере. Чтобы избежать ведения двух разных записей, обычно создается:
- Запись
Запись
дляexample.com
, указывающая на IP-адрес сервера - A
Запись CNAME
дляwww.example.com
, указывающая наexample.com
В результате example.com
указывает на IP-адрес сервера, а www. example.com
указывает на тот же адрес через example.com
. Если IP-адрес изменится, вам нужно обновить его только в одном месте: просто отредактируйте запись A для example.com
, и www.example.com
автоматически унаследует изменения.
Запись CNAME всегда должна указывать на другое доменное имя, а не напрямую на IP-адрес. Редактор записей DNSimple предупредит вас, если вы попытаетесь указать запись CNAME на IP-адрес. Боковая панель справа от редактирования CNAME предлагает вам посетить статью поддержки, чтобы узнать разницу между записями A, CNAME, ALIAS и URL. Он также предупреждает вас, что CNAME должны быть уникальными для других записей.
Запись A DNS указана в RFC 1035.
Ограничения
- Запись CNAME всегда должна указывать на другое доменное имя и никогда напрямую на IP-адрес.
- Запись CNAME не может сосуществовать с другой записью с тем же именем. Невозможно иметь запись CNAME и TXT для
www. example.com
. - CNAME может указывать на другой CNAME, хотя эта конфигурация обычно не рекомендуется из соображений производительности. Когда это применимо, CNAME должен указывать как можно ближе к целевому имени, чтобы избежать ненужных накладных расходов на производительность.
Формат записи CNAME
Структура записи CNAME соответствует стандартному определению формата верхнего уровня, определенному в RFC 1035. Раздел RDATA состоит из одного элемента:
Элемент | Описание |
---|---|
доменное имя | Доменное имя, указывающее каноническое или основное имя записи. |
Каноническое представление:
CNAME <имя домена>
, где
— это полное доменное имя, например example.com
.
В DNSimple запись CNAME представлена следующими настраиваемыми элементами:
Элемент | Описание |
---|---|
Имя | Имя хоста для записи без имени домена. Обычно это называется «поддомен». Мы автоматически добавляем доменное имя. |
ТТЛ | Время жизни в секундах. Это количество времени, в течение которого запись может кэшироваться распознавателем. |
Содержимое | Имя домена, на которое сопоставляется CNAME. |
CNAME и перенаправление
Запись CNAME иногда ошибочно называют перенаправлением , как правило, в контексте веб-перенаправлений (HTTP).
Прямой связи между CNAME и перенаправлением HTTP нет, и настройка CNAME не приводит к автоматическому перенаправлению HTTP.
Чтобы выполнить перенаправление HTTP, сервер, отвечающий на HTTP-запрос, должен быть настроен на возврат соответствующего HTTP-ответа. Это невозможно напрямую с помощью CNAME.
Вы можете узнать больше, прочитав различия между записями A, CNAME, ALIAS и URL. DNSimple предоставляет специальную запись URL, которую можно использовать для настройки перенаправления HTTP.
Запрос записей CNAME
Вы можете использовать dig
в своем терминале, чтобы определить запись CNAME, связанную с доменным именем. Результат содержится в ОТВЕТ
Раздел содержит полное доменное имя (FQDN), оставшееся время жизни (TTL) и доменное имя.
$ копать CNAME www.dnsimple.com ; <<>> DiG 9.10.6 <<>> CNAME www.dnsimple.com ;; глобальные параметры: +cmd ;; Получил ответ: ;; ->>HEADER<<- код операции: QUERY, статус: NOERROR, id: 5274 ;; флаги: qr rd ra; ЗАПРОС: 1, ОТВЕТ: 1, ПОЛНОМОЧИЯ: 0, ДОПОЛНИТЕЛЬНО: 1 ;; ДОПОЛНИТЕЛЬНЫЙ ПСЕВДОРАЗДЕЛ: ; ЭДНС: версия: 0, флаги:; UDP: 512 ;; РАЗДЕЛ ВОПРОСОВ: ;www.dnsimple.com. В CNAME ;; РАЗДЕЛ ОТВЕТОВ: www.dnsimple.com. 3599 В CNAME dnsimple.com. ;; Время запроса: 52 мс ;; СЕРВЕР: 8.8.8.8#53(8.8.8.8) ;; КОГДА: пятница, 2 ноября, 20:33:09 CET 2018 ;; РАЗМЕР MSG rcvd: 59
Управление записями CNAME
В редакторе записей DNSimple вы можете добавлять, удалять и обновлять записи CNAME.
Что такое запись CNAME? - Справка DNSimple
Содержание
- Что такое запись CNAME?
- Ограничения
- Формат записи CNAME
- CNAME и перенаправление
- Запрос записей CNAME
- Управление записями CNAME
Что такое запись CNAME?
Записи CNAME можно использовать для присвоения одного имени другому. CNAME означает каноническое имя.
Обычный пример: example.com
и www.example.com
указывают на одно и то же приложение и размещаются на одном сервере. Чтобы избежать ведения двух разных записей, обычно создается:
- Запись
Запись
дляexample.com
, указывающая на IP-адрес сервера - A
Запись CNAME
дляwww.example.com
, указывающая наexample.com
В результате example.com
указывает на IP-адрес сервера, а www. example.com
указывает на тот же адрес через example.com
. Если IP-адрес изменится, вам нужно обновить его только в одном месте: просто отредактируйте запись A для example.com
и www.example.com
автоматически наследует изменения.
Запись CNAME всегда должна указывать на другое доменное имя, а не напрямую на IP-адрес. Редактор записей DNSimple предупредит вас, если вы попытаетесь указать запись CNAME на IP-адрес. Боковая панель справа от редактирования CNAME предлагает вам посетить статью поддержки, чтобы узнать разницу между записями A, CNAME, ALIAS и URL. Он также предупреждает вас, что CNAME должны быть уникальными для других записей.
Запись A DNS указана в RFC 1035.
Ограничения
- Запись CNAME всегда должна указывать на другое доменное имя и никогда напрямую на IP-адрес.
- Запись CNAME не может сосуществовать с другой записью с тем же именем. Невозможно иметь запись CNAME и TXT для
www. example.com
. - CNAME может указывать на другой CNAME, хотя эта конфигурация обычно не рекомендуется из соображений производительности. Когда это применимо, CNAME должен указывать как можно ближе к целевому имени, чтобы избежать ненужных накладных расходов на производительность.
Формат записи CNAME
Структура записи CNAME соответствует стандартному определению формата верхнего уровня, определенному в RFC 1035. Раздел RDATA состоит из одного элемента:
Элемент | Описание |
---|---|
доменное имя | Доменное имя, указывающее каноническое или основное имя записи. |
Каноническое представление:
CNAME <имя домена>
, где
— это полное доменное имя, например example.com
.
В DNSimple запись CNAME представлена следующими настраиваемыми элементами:
Элемент | Описание |
---|---|
Имя | Имя хоста для записи без имени домена. Обычно это называется «поддомен». Мы автоматически добавляем доменное имя. |
ТТЛ | Время жизни в секундах. Это количество времени, в течение которого запись может кэшироваться распознавателем. |
Содержимое | Имя домена, на которое сопоставляется CNAME. |
CNAME и перенаправление
Запись CNAME иногда ошибочно называют перенаправлением , как правило, в контексте веб-перенаправлений (HTTP).
Прямой связи между CNAME и перенаправлением HTTP нет, и настройка CNAME не приводит к автоматическому перенаправлению HTTP.
Чтобы выполнить перенаправление HTTP, сервер, отвечающий на HTTP-запрос, должен быть настроен на возврат соответствующего HTTP-ответа. Это невозможно напрямую с помощью CNAME.
Вы можете узнать больше, прочитав различия между записями A, CNAME, ALIAS и URL. DNSimple предоставляет специальную запись URL, которую можно использовать для настройки перенаправления HTTP.