Принцип работы DNS, основные типы записей и настройка

27 февраля 2020 246 DNS

Покупая домен, по сути Вы покупаете просто красивый адрес для Вашего сайта или сервиса. Вместе с этим Вы получаете возможность редактировать параметры DNS этого домена и его поддоменов. Что такое DNS и зачем оно нужно разберемся ниже.

Что такое DNS

Во времена зарождения интернета к различным ресурсам обращались по IP адресу. Внедрение доменных имен позволило обращаться к ресурсам по удобному и запоминающемуся имени. Именно это стало возможно благодаря DNS.

DNS (Domain Name System) — система для получения информации о доменах. Чаще всего DNS используется для получения IP адреса по имени домена, чтобы указать на какой сервер ссылаться при обращении к домену.

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

Принцип работы DNS

Базу данных DNS можно сравнить с контактами на мобильнике. Только вместо имен там прописаны домены сайтов, а вместо номеров — IP адреса.

Рассмотрим простой пример. Мы переходим на какой-то сайт, вводя адрес страницы. Браузер смотрит на введенный адрес, видит указание домена в адресе и запрашивает информацию об этом домене у ближайшего DNS-сервера, который потом по иерархии запрашивает данные у других DNS-серверов. Запрос по цепочке добирается до сервера, который обслуживает домен и хранит информацию о домене. Этот DNS-сервер отправляет обратно браузеру IP сервера, на котором находится сайт. Браузер в свою очередь, уже зная IP адрес веб-сервера, обращается напрямую к нему. Веб-сервер согласно запросу генерирует готовую страничку и отправляет обратно браузеру.

Аналогичным образом идут запросы любой другой информации о доменах.

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

Структура DNS записей

DNS записи могут состоять из следующих полей:

  • Хост, к которому относится запись. Это может быть сам домен (site.com.) либо поддомен (subdomain.site.com.). Адрес должен быть с точкой на конце. В большинстве DNS редакторов для упрощения вместо домена указывается @, а вместо поддомена только имя поддомена (subdomain). Также можно использовать звездочку (*) для указания значения для всех поддоменов домена. Если имеется такая запись и такого же типа конкретно для отдельного поддомена, то приоритет будет у записи для конкретного поддомена. Например, если Вы хотите, чтобы все поддомены ссылались на один IP адрес, а конкретно какой-то домен на другой IP адрес.
  • Тип записи — A / TXT / CNAME и т.д.
  • Приоритет (MX preference) — приоритет MX записи.
  • Значение записи.
  • TTL (Time To Live) — время жизни кэша записи в секундах.

Основные типы DNS записей

Ниже опишу основные типы частоиспользуемых записей DNS. Остальные типы записей можно посмотреть на странице в Википедии. В примерах буду использовать упрощенную запись поля хоста.

Важно: если для поддомена создана отдельная зона DNS, то записи для этого поддомена в зоне основного домена будут проигнорированы.

NS-запись

NS-запись (Authoritative name server) необходима для указания DNS-сервера / DNS-серверов, которые будут отвечать за доменную зону (делегирование домена). Именно эта запись необходима для функционирования механизма DNS. Обычно у регистраторов и хостингов она находится отдельно от остальных записей домена.

Чаще всего хостинги и DNS-провайдеры предоставляется несколько равнозначных серверов DNS-серверов, чтобы записи были актуальны при выходе из строя одного из них. Желательно прописать их все.

A-запись

A-запись (Address) необходима, чтобы прописать IP адрес сервера, к которому нужно привязать домен или поддомен.

Пример 1:

У нас есть домен domain.com и место на хостинге с IP адресом 123.123.123.123. Нам нужно привязать наш домен к этому IP адресу. Для этого в зоне DNS домена domain.com добавляем запись с таким содержимым:

  • хост — @;
  • тип записи — A;
  • значение записи — 123.123.123.123.

Пример 2:

У нас есть домен domain.com, поддомен sub.domain.com и место на хостинге с IP адресом 123.123.123.123. Нам нужно привязать поддомен sub.domain.com к этому IP адресу. Для этого в зоне DNS домена domain.com добавляем запись с таким содержимым:

  • хост — subdomain;
  • тип записи — A;
  • значение записи — 123.123.123.123.

Пример 3:

У нас есть домен domain.com, поддомены sub1.domain.com, sub2.domain.com, sub3.domain.com, место на хостинге с IP адресом 123.123.123.123 и место на на другом хостинге с другим IP адресом 111.222.111.222 для третьего поддомена. Нам нужно привязать первые два поддомена к первому IP адресу, а третий поддомен ко второму IP адресу. При этом планируется добавление дополнительных поддоменов и привязка их к первому IP адресу, но добавлять каждый поддомен в DNS не хочется. Для этого в зоне DNS домена domain.com прописываем 2 записи:

  • хост — *;
  • тип записи — A;
  • значение записи — 123.123.123.123.

и

  • хост — subdomain3;
  • тип записи — A;
  • значение записи — 111.222.111.222.

MX-запись

MX-запись (Mail Exchanger) необходима для указания адреса почтового сервера, который обслуживает доменую почту. Сервер-отправитель обращается к этой записи для получения адреса почтового сервера, куда нужно направить почту.

Запись состоит из двух частей:

  • адрес почтового сервера;
  • приоритет (MX preference). Чем меньше число, тем запись выше в приоритете. Если указана только одна запись, то любое произвольное число (по-умолчанию — 10).

Пример:

Нам нужно, чтобы доменной почтой основного домена управлял почтовый сервер mx.mail.com. Добавляем следующую запись в зону нашего домена:

  • хост — @;
  • тип записи — MX;
  • значение записи — mx.mail.com;
  • приоритет — 10.

Подобных записей может быть несколько, если домен обслуживают несколько почтовых серверов. В этом случае отправляющий сервер устанавливает SMTP соединение с указанными почтовыми серверами в порядке указанного приоритета, пока успешно не отправит почту. Если у нескольких записей будет одинаковый приоритет, то будет производится соединение сразу со всеми.

TXT-запись

TXT-запись (Text string) — это универсальная запись для указания различной текстовой информации, для которых нет отдельных типов DNS записей. Например, SPF, DKIM, подтверждение владением домена на различных ресурсах и т.д.

Подробнее о настройке текстовых записей SPF, DKIM, DMARC, ADSP можно прочитать в соседней статье.

CNAME-запись

CNAME-запись (Canonical name) позволяет сделать для поддомена ссылку на любой другой домен. Запись полезна, когда Вы хотите, чтобы для определенного поддомена были актуальны все записи от основного, либо чтобы при переходе на поддомен отображалось содержимое другого ресурса (например, интерфейс стороннего почтового сервиса на поддомене mail Вашего домена).

Важно: в значении записи точка на конце адреса обязательна, но некоторые панели ставят ее автоматически.

Пример 1:

У нас есть основной домен domain.com и поддомен ru.domain.com. Нам необходимо, чтобы все записи основного домена были актуальны для поддомена. Создаем запись в зоне домена domain.com со следующими параметрами:

  • хост — ru;
  • тип записи — CNAME;
  • значение записи — domain.com. (точка на конце обязательна).

Пример 2:

У нас есть домен mydomain.com. Нам необходимо на поддомене mail.mydomain.com открывать веб-интерфейс почтового сервиса нашей доменной почты mydomain.mail.com. Создаем запись в зоне домена mydomain.com со следующими параметрами:

  • хост — mail;
  • тип записи — CNAME;
  • значение записи — mydomain.mail.com. (точка на конце обязательна).

Важно: если для поддомена задана CNAME запись, то больше никаких записей не должно быть для этого поддомена.

PTR-запись

PTR-запись (pointer) предназначена для обратного преобразования IP в доменное имя. Сама запись прописывается не в DNS домена, а на той стороне, кто выдает Вам IP адрес (хостинг). Подробнее о записи и ее настройке можно почитать в этом посте.

TTL

TTL (Time To Live) в DNS — время жизни кэша записи в секундах на каждом промежуточном DNS-сервере. Например, если значение TTL составляет 3600 секунд (1 час), а цепочка DNS-серверов до Вас состоит из 5 звеньев, полное распространение изменений должно занять не более 18 000 секунд (5 часов).

На время, необходимое для распространения изменений по DNS-серверам, может негативно влиять много факторов. Те же провайдеры интернета, особенно мобильные, могут спокойно повысить низкие значения TTL на своих DNS серверах до часа и более, из-за чего смена записей у пользователей будет дольше.

TTL есть у всех записей, но часто на хостингах у некоторых типов записей изменение этого параметра недоступно. Сами хостинги решают, какое там будет значение.

Какое значение указать в TTL

В современном мире рекомендую ставить TTL от 10 до 3600 секунд (1 час). В идеале считаю нормальными значения от 300 (5 минут) до 600 секунд (10 минут). Такие значения не создадут сильную нагрузку на промежуточные DNS-сервера и позволят сократить время обновления DNS в экстренных случаях. С другой стороны большие значения TTL теоретически будут полезны при временном отказе промежуточных серверов или при их DDOS’е. Большие значения актуальны только для тех записей, значения которых точно никогда не изменятся.

При добавлении новых записей в DNS домена лучше устанавливать низкое значение TTL. Если все ок, то можно повысить. Либо сразу ставить нормальное значение, если Вы на 100% уверены, что запись корректная.

Если планируются какие-то изменения в DNS, например, переезд сайта на другой сервер/хостинг, то TTL необходимых записей желательно уменьшить до минимальных значений за несколько дней. А после смены и нормальной работы можно будет увеличить обратно.

Делегирование домена

Делегирование домена — это передача прав на управление записями домена (доменной зоной).

Делегирование домена доступно сразу после покупки домена у регистратора. Большинство регистраторов помимо делегирования поддерживают управление DNS записями домена. Часть из них предоставляют это как отдельную услугу, а некоторые предоставляют это только при использовании их услуг, например, хостинга. Изначально домен делегирован на DNS-сервера регистратора и припаркован к их стандартной странице.

Также поддерживается переделегирование домена между разными DNS-серверами хостингов и DNS-провайдеров, но управлять записями будет именно тот DNS-сервер, который находится в конце этой цепочки, и редактировать записи нужно именно там. Записи в других DNS-серверах будут неактуальны.

Как делегировать домен

Рассмотрим простой пример. Вы купили домен, но хотите управлять записями домена на хостинге hosting.com. Для этого необходимо узнать у хостинга адреса их DNS-серверов. Обычно эти адреса указаны в панели хостинга или в документации хостинга. К примеру, адреса могут быть такими:

  • ns1.hosting.com.
  • ns2.hosting.com.

Идем в панель регистратора, ищем соответствующий раздел (обычно называется «DNS-сервера», «NS-сервера», делегирование и т.д.) и прописываем в полях все предоставленные адреса (необходимо указывать адреса с точкой на конце).

Куда лучше делегировать домен

Часто слышу этот вопрос, но четкого ответа на него нет. Все зависит от Ваших предпочтений, удобства панелей, функционала редактора DNS записей, количества регистраторов и хостингов. Если у Вас хостинг является и регистратором, то ответ очевиден. Никуда делегировать не нужно. Если же у Вас много хостингов и доменов, зарегистрированных у разных регистраторов, то логичнее их все делегировать в одно место, чтобы не запутаться и чтобы было удобнее управлять ими и редактировать в одном месте (например, Яндекс.Коннект).

В общем, делегируйте туда, где Вам удобнее управлять DNS записями, но не забывайте, что излишнее переделегирование может потом встать боком, если какое-то звено из этой цепочки выпадет, а информация о домене уйдет в никуда. Часто встречался с таким, что домен изначально был делегирован на один хостинг. Затем сайт переехал на другой. При этом делегирование было сделано со старого хостинга на новый. При истечении баланса на старом хостинге или при закрытии учетки услуга управления DNS закрывалась, а все DNS записи удалялись, в том числе и NS, где были прописаны NS записи нового хостинга. Результат — простой сайта, поиск причины и ожидание смены DNS. А еще будет печальнее, если домен был куплен лет на 10, потеряли все доступы, забыли, кто регистратор, и регистратор еще реселлер другого реселлера.

Комментарии (0)