Введение в изучение и использование DNS-записей. Что такое ресурсные записи DNS

Что такое DNS. Сроки обновления DNS-записей. Как побыстрее начать работу с новым доменом. Типы записей DNS. Как настроить автоматические субдомены. Правильная переадресация на адрес без www в начале.

Что такое DNS

Интернет – сеть, связывающая миллионы компьютеров по всему миру. Некоторые компьютеры в этой сети включены круглосуточно – это сервера с сайтами и электронной почтой. Каждому компьютеру при подключении к интернету назначается числовой идентификатор – ip-адрес. Но обращаться к серверам по числовому идентификатору людям не удобно, поэтому были введены буквенные домены.

DNS (Domain Name System) – это система, обеспечивающая соответствие доменов ip-адресам. За хранение DNS-записей в интернете отвечает отдельный класс серверов – ns-сервера. Часть из них поддерживается администраторами доменных зон, другая – хостерами и интернет-провайдерами. У этих серверов есть своя иерархия, и обновляются записи на серверах не сразу: на некоторых – очень быстро, на других – в течение пары суток. Наиболее популярное программное обеспечение для ns-серверов называется BIND.

Сроки обновления DNS-записей

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

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

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

Что касается субдоменов, то зачастую, при их создании, они становятся доступны либо сразу, либо в течение 5-20 минут (должны обновиться записи на ns-серверах хостера).

Как побыстрее начать работу с новым доменом

Если вы зарегистрировали домен, либо изменили записи DNS, и вам срочно нужно начать работу с сайтом, вы можете добавить одну строчку в файл hosts вашей операционной системы (в Windows файл находится по адресу C:\WINDOWS\system32\drivers\etc , папка по умолчанию скрыта, и необходимо включить отображение скрытых папок в панели управления):

xxx.xxx.xxx.xxx site.ru

где xxx.xxx.xxx.xxx – ip-адрес сервера, site.ru – доменное имя вашего сайта.

Типы записей DNS

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

Запись NS необходима для указания DNS-сервера, обслуживающего ваш домен. Услуги своего DNS-сервера может предложить регистратор домена или хостинг-провайдер. Другой вариант – настроить собственный NS-сервер, и использовать его.

Запись A необходима для указания IP-адреса вашего сайта. IP-адрес предоставляет ваш хостинг-провайдер.

Запись AAAA используется для указания IP-адреса версии 6 (IPv6). На данный момент эти адреса еще не получили повсеместной поддержки.

Запись MX указывает на IP-адрес вашего почтового сервера. Необходима для доставки почты на почтовые ящики вашего домена.

Запись CNAME служит для указания одного домена в качестве адреса другого домена, то есть задает вашему домену или субдомену такой же IP-адрес, как и у домена, ссылку на который вы укажете в записи.

Запись PTR – это обратная запись, которая позволит при запросе IP-адреса вашего сайта, получить полное доменное имя. Важно, если вы используете для домена почтовый сервер, поскольку правильность PTR-записи проверяется многими почтовыми серверами (чтобы определить, не является ли письмо спамом). Эту запись устанавливает хостинг-провайдер. Проверить правильность записи можно с помощью специального сервиса . Зачастую проблем не возникает, и запись изначально установлена правильно.

Как настроить автоматические субдомены для каждого пользователя. Создание wildcard DNS-записи

Wildcard запись – это DNS-запись отвечающая за все субдомены *.site.ru . Указание такой записи может понадобиться, к примеру, для CMS (WordpressMU, Drupal), используемой для управления субдоменами.

Для создания такой записи необходимо зайти в раздел управления DNS-записями домена и добавить запись типа A, в качестве субдомена указать символ *, а в качестве адреса – IP-адрес сервера, зачастую совпадающий с IP-адресом, указанным для основного домена. Если вам не удается это сделать, нужно обратиться в техническую поддержку.

Заодно рассмотрим, как сконфигурировать Apache для работы с wildcard субдоменами. Пусть в конфигурационном файле сервера есть секция, описывающая виртуальный хост:


DocumentRoot "/home/site.ru"
ServerName "site.ru"
ServerAlias "www.site.ru"
ErrorLog logs/site.ru-error.log
CustomLog logs/site.ru-access.log common

Вам необходимо лишь добавить псевдоним *.site.ru:

ServerAlias "www.site.ru" "*.site.ru"

Правильная переадресация с www.site.ru на site.ru . Редирект 301

Часть пользователей ссылается на ваш сайт, добавляя к адресу www. Другие www не добавляют. Это может негативно сказываться на продвижении в поисковых системах. Устраним проблему на примере сервера Apache:

1. Убедитесь, что на сервере включен модуль ModRewrite: в файле httpd.conf cтрока LoadModule rewrite_module modules/mod_rewrite.so должна быть раскомментирована. Если вы его включили, то перезапустите Apache.

2. Добавьте следующие строки в файл.htaccess , заменив site.ru адресом вашего сайта:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.site.ru$

3. Попробуйте зайти на сайт, используя адрес www.site.ru в адресной строке браузера. Адрес должен измениться на site.ru .

4. Можно внести в файл.htaccess строки:

RewriteCond %{HTTP_HOST} !^site\.ru$
RewriteRule ^(.*)$ http://site.ru/$1

Это позволит правильно обработать запросы к вашему сайту, когда в конце домена стоит точка: site.ru. вместо site.ru

Надеемся, статья помогла получить представление о работе с доменами. Вопросы и замечания просьба оставлять в комментариях.

Cистема доменных имен (DNS) - это распределенная база данных, в которой хранится информация о доменах: ip-адреса домена, ns-сервера, обслуживающие домен, mx-записи для этого домена и другая служебная информация.

Информация о домене хранится в виде записей. Основные типы записей:

1. SOA-запись - содержит имя первичного ns-сервера для этой зоны, e-mail администратора этой зоны, серийный номер, значения времени кеширования для всех записей зоны по умолчанию.
Для создания SOA-записи (поднятия зон на домен) необходимо добавить домен через раздел "Перенос домена" в личном кабинете.

2. NS-запись указывает на DNS-cервер для данного домена. Например, наши NS-записи:

ns1.сайт
ns2.сайт
ns3.сайт

Через панель управления хостингом в Вашем личном кабинете Вы можете задать/изменить NS-записи только для поддоменов. Сменить NS-записи для основного домена можно через регистратора либо по запросу в «Поддержку онлайн».

3. А- и CNAME-записи .

А-запись связывает имя хоста с ip-адресом.

CNAME-запись или каноническая запись имени используется для перенаправления на другое имя.

Обе эти записи можно изменить в панели управления хостингом в разделе DNS - Alias. При задании/изменении А - записи в поле «Адрес» вводится IP-адрес;

Пример: 217.112.ХХ.ХХ

При задании/изменении CNAME-записи - каноническое имя с точкой на конце.

Пример: test.example.ru.

4. MX-запись

Указывает на серверы, принимающие почту для данного домена. MX-запись состоит из двух фрагментов данных: приоритета (чем меньше число, тем выше приоритет) и доменного имени (почтового сервера).
Изменить эту запись можно также в разделе DNS (MX). Доменное имя в поле «Адрес» всегда прописывается с точкой на конце.

Например: mail.example.ru.

5. SRV- и TXT-записи.

SRV - записи указывают месторасположение серверов для различных сервисов.

SRV запись состоит из следующих частей:

Service._proto.name TTL class SRV priority weight port target

service - имя сервиса. Например xmpp или sip.
proto - имя протокола. Обычно tcp или udp.
name - имя домена, в котором размещена данная служба.
class - стандарт DNS, поле класса
TTL - стандарт DNS, время жизни.
priority - приоритет записи. Чем меньше число, тем выше приоритет
weight - вес записи. Используется для записей с одинаковым приоритетом
port - порт, на котором размещена указанная служба на данном сервере
hostname(target) - имя сервера.

TXT-записи используются для указания дополнительной текстовой информации.

Добавить и изменить SRV-, TXT-записи можно в разделе DNS (SRV, TXT) панели управления хостингом.

6. PTR-запись

Связывает IP хоста с его каноническим именем.
Используется для уменьшения объёма нежелательной почтовой корреспонденции. Многие серверы-получатели электронной почты проверяют наличие PTR записи для хоста, с которого происходит отправка. В этом случае PTR запись для IP адреса должна соответствовать имени отправляющего почтового сервера, которым он представляется в процессе SMTP сессии.
Настраивается на стороне интернет-провайдера, предоставившего IP-адрес.

Все изменения ДНС настроек, сделанные в Вашей панели управления, будут иметь силу только для доменов делегированных на наши NS-сервера.
Если какие-либо записи меняются для основного домена, например example.ru, то поле «Название» необходимо оставить пустым, если вводится какое-либо значение, например 1, то настройки применятся для поддомена 1.example.ru

  • Перевод

Внимательный читатель найдет на этой картинке IPv6


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

Что такое DNS

DNS расшифровывается как Domain Name System . Это глобальное распределенное хранилище ключей и значений. Сервера по всему миру могут предоставить вам значение по ключу, а если им неизвестен ключ, то они попросят помощи у другого сервера.


Вот и все. Правда. Вы или ваш браузер запрашивает значение для ключа www.example.com , и получает в ответ 1.2.3.4 .

Базовые штуки

Большой плюс DNS в том, что это публичная услуга, и можно потыкать в сервера если хочется разобраться. Давайте попробуем. У меня есть домен petekeen.net , который хостится на машине web01.bugsplat.info . Команды, используемые ниже, можно запустить из командной строки OS X (ой, то есть macOS, - прим. пер. ).


Давайте взглянем на маппинг между именем и адресом:


$ dig web01.bugsplat.info

Команда dig это такой швейцарский армейский нож для DNS-запросов. Крутой, многофункциональный инструмент. Вот первая часть ответа:


; <<>> DiG 9.7.6-P1 <<>> web01.bugsplat.info ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51539 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

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


;; QUESTION SECTION: ;web01.bugsplat.info. IN A

dig по-умолчанию запрашивает A -записи. A это address (адрес), и это один из фундаментальных видов записей в DNS. A содержит один IPv4 -адрес. Есть эквивалент для IPv6 -адресов - AAAA . Давайте взглянем на ответ:


;; ANSWER SECTION: web01.bugsplat.info. 300 IN A 192.241.250.244

Оставшаяся часть ответа описывает сам ответ:


;; Query time: 20 msec ;; SERVER: 192.168.1.1#53(192.168.1.1) ;; WHEN: Fri Jul 19 20:01:16 2013 ;; MSG SIZE rcvd: 56

В частности, здесь говорится, как долго сервер откликался, какой у сервера IP-адрес (192.168.1.1), на какой порт стучался dig (53 , DNS-порт по-умолчанию), когда запрос был завершен и сколько байтов было в ответе.


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


Но в этом примере не видно, что DNS-сервер 192.168.1.1 связался с кучей других серверов чтобы ответить на простой вопрос: «куда указывает адрес web01.bugsplat.info ?». Давайте запустим трейс чтобы узнать о всей возможной цепочке, которую пришлось бы пройти dig "у, если бы информация не был закэширована:


$ dig +trace web01.bugsplat.info ; <<>> DiG 9.7.6-P1 <<>> +trace web01.bugsplat.info ;; global options: +cmd . 137375 IN NS l.root-servers.net. . 137375 IN NS m.root-servers.net. . 137375 IN NS a.root-servers.net. . 137375 IN NS b.root-servers.net. . 137375 IN NS c.root-servers.net. . 137375 IN NS d.root-servers.net. . 137375 IN NS e.root-servers.net. . 137375 IN NS f.root-servers.net. . 137375 IN NS g.root-servers.net. . 137375 IN NS h.root-servers.net. . 137375 IN NS i.root-servers.net. . 137375 IN NS j.root-servers.net. . 137375 IN NS k.root-servers.net. ;; Received 512 bytes from 192.168.1.1#53(192.168.1.1) in 189 ms info. 172800 IN NS c0.info.afilias-nst.info. info. 172800 IN NS a2.info.afilias-nst.info. info. 172800 IN NS d0.info.afilias-nst.org. info. 172800 IN NS b2.info.afilias-nst.org. info. 172800 IN NS b0.info.afilias-nst.org. info. 172800 IN NS a0.info.afilias-nst.info. ;; Received 443 bytes from 192.5.5.241#53(192.5.5.241) in 1224 ms bugsplat.info. 86400 IN NS ns-1356.awsdns-41.org. bugsplat.info. 86400 IN NS ns-212.awsdns-26.com. bugsplat.info. 86400 IN NS ns-1580.awsdns-05.co.uk. bugsplat.info. 86400 IN NS ns-911.awsdns-49.net. ;; Received 180 bytes from 199.254.48.1#53(199.254.48.1) in 239 ms web01.bugsplat.info. 300 IN A 192.241.250.244 bugsplat.info. 172800 IN NS ns-1356.awsdns-41.org. bugsplat.info. 172800 IN NS ns-1580.awsdns-05.co.uk. bugsplat.info. 172800 IN NS ns-212.awsdns-26.com. bugsplat.info. 172800 IN NS ns-911.awsdns-49.net. ;; Received 196 bytes from 205.251.195.143#53(205.251.195.143) in 15 ms

Информация выводится в иерархической последовательности. Помните как dig вставил точку. после хоста, web01.bugsplat.info ? Так вот, точка. это важная деталь, и она означает корень иерархии.


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


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


В следующем блоке видно, как dig выбрал случайный корневой сервер, и запросил у него A -запись для web01.bugsplat.info . Видно только IP-адрес корневого сервера (192.5.5.241). Так какой именно корневой сервер это был? Давайте узнаем!


$ dig -x 192.5.5.241 ; <<>> DiG 9.8.3-P1 <<>> -x 192.5.5.241 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2862 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;241.5.5.192.in-addr.arpa. IN PTR ;; ANSWER SECTION: 241.5.5.192.in-addr.arpa. 3261 IN PTR f.root-servers.net.

Флаг -x заставляет dig провести обратный поиск по IP-адресу. DNS отвечает записью PTR , которая соединяет IP и хост, в данном случае - f.root-servers.net .


Возвращаясь к нашему начальному запросу: корневой сервер F вернул другой набор NS -серверов. Он отвечает за домен верхнего уровня info . dig запрашивает у одного из этих серверов запись A для web01.bugsplat.info , и получает в ответ еще один набор NS -серверов, и потом запрашивает у одного из этих серверов запись A для web01.bugsplat.info. . И, наконец, получает ответ!


Уф! Сгенерировалось бы много трафика, но почти все эти записи были надолго закэшированы каждым сервером в цепочке. Ваш компьютер тоже кэширует эти данные, как и ваш браузер. Чаще всего DNS-запросы никогда не доходят до корневых серверов, потому что их IP-адреса почти никогда не изменяются («Наверно все таки речь идет о большом TTL для записей в их базе. Если у DNS сервера IP адрес вообще ни разу не изменялся, то это не означает, что его база навечно закеширована» - прим. от rrrav). Домены верхнего уровня com , net , org , и т.д. тоже обычно сильно закэшированы.

Другие типы

Есть еще несколько типов, о которых стоит знать. Первый это MX . Он соединяет доменное имя с одним или несколькими почтовыми серверами. Электронная почта настолько важна, что у нее есть свой тип DNS-записи. Вот значения MX для petekeen.net:


$ dig petekeen.net mx ; <<>> DiG 9.7.6-P1 <<>> petekeen.net mx ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18765 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;petekeen.net. IN MX ;; ANSWER SECTION: petekeen.net. 86400 IN MX 60 web01.bugsplat.info. ;; Query time: 272 msec ;; SERVER: 192.168.1.1#53(192.168.1.1) ;; WHEN: Fri Jul 19 20:33:43 2013 ;; MSG SIZE rcvd: 93

Заметьте, что MX -запись указывает на имя, а не на IP-адрес.


Еще один тип, который вам скорее всего знаком, это CNAME . Расшифровываетя как Canonical Name (каноническое имя). Он связывает одно имя с другим. Давайте посмотрим на ответ:


$ dig www.petekeen.net ; <<>> DiG 9.7.6-P1 <<>> www.petekeen.net ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16785 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.petekeen.net. IN A ;; ANSWER SECTION: www.petekeen.net. 86400 IN CNAME web01.bugsplat.info. web01.bugsplat.info. 300 IN A 192.241.250.244 ;; Query time: 63 msec ;; SERVER: 192.168.1.1#53(192.168.1.1) ;; WHEN: Fri Jul 19 20:36:58 2013 ;; MSG SIZE rcvd: 86

Сразу видно, что мы получили два ответа. Первый говорит, что www.petekeen.net указывает на web01.bugsplat.info . Второй возвращает запись A для того сервера. Можно считать, что CNAME это псевдоним (или алиас) для другого сервера.

Что не так с CNAME

Записи CNAME очень полезны, но есть важный момент: если есть CNAME с каким-то именем, то нельзя создать другую запись с таким же именем. Ни MX , ни A , ни NS , ничего.


Причина в том, что DNS производит замену таким образом, что все записи того места, куда указывает CNAME , также валидны для CNAME . В нашем примере, записи у www.petekeen.net и web01.bugsplat.info будут совпадать.


Поэтому нельзя делать CNAME на корневом домене вроде petekeen.net , потому что обычно там нужны другие записи, например, MX .

Запросы к другим серверам

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


$ dig www.petekeen.net @8.8.8.8

Символ @ с IP-адресом или хостом заставляет dig прозводить запрос к указанному серверу через порт по-умолчанию. Можно использовать публичный DNS-сервер Гугла или почти-публичный-сервер Level 3 по адресу 4.2.2.2 .

Типичные ситуации

Давайте рассмотрим типичные ситуации, знакомые многим веб-разработчикам.

Редирект домена на www

Часто нужно сделать редирект домена iskettlemanstillopen.com на www.iskettlemanstillopen.com . Регистраторы типа Namecheap или DNSimple называют это URL Redirect . Вот пример из админки Namecheap:



Символ @ означает корневой домен iskettlemanstillopen.com . Давайте посмотрим на запись A у этого домена:


$ dig iskettlemanstillopen.com ;; QUESTION SECTION: ;iskettlemanstillopen.com. IN A ;; ANSWER SECTION: iskettlemanstillopen.com. 500 IN A 192.64.119.118

Этот IP принадлежит Namecheap"у, и там крутится маленький веб-сервер, который просто делает перенаправление на уровне HTTP на адрес http://www.iskettlemanstillopen.com:


$ curl -I iskettlemanstillopen.com curl -I iskettlemanstillopen.com HTTP/1.1 302 Moved Temporarily Server: nginx Date: Fri, 19 Jul 2013 23:53:21 GMT Content-Type: text/html Connection: keep-alive Content-Length: 154 Location: http://www.iskettlemanstillopen.com/

CNAME для Heroku или Github

Взгляните на скриншот выше. На второй строке там CNAME . В этом случае www.iskettlemanstillopen.com указывает на приложение, запущенное на Heroku.


$ heroku domains === warm-journey-3906 Domain Names warm-journey-3906.herokuapp.com www.iskettlemanstillopen.com

С Github похожая история, но там нужно создать специальный файл в корне репозитория, и назвать его CNAME . См. документацию .dns Добавить метки

Система доменных имен (DNS) это по сути телефонный справочник интернета. Вы набираете в адресной строке браузера apple.com , чтобы купить аксессуары к Iphone, но как ваш запрос находит сервер Apple с IP-адресом 17.172.224.47? Это делает для вас система доменных имен.

Если у вас небольшой бизнес в сети или вы ведете блог на WordPress, то вы, вероятно, уже сталкивались с настройкой записей A и CNAME. А если вы пытались перенести почту со своего сайта, то и с настройкой записи MX. И, возможно, какой-нибудь веб-сервис просил настроить TXT, чтобы работать с вашим сайтом. Для чего все это нужно и какие здесь сложности?

В этой статье я опишу основы системы доменных имен и конфигурацию записей, необходимые для работы с доменами.

Серверы DNS

Когда вы покупаете доменное имя, ваш регистратор, как правило, конфигурирует для вас записи DNS по умолчанию и предоставляет серверы DNS для них. Вам необходим сервер DNS (обычно они используются в парах или тройках для надежности, например: ns1.yourregistrarserver.com , ns2.yourregistrarserver.com), чтобы сообщить каталогу DNS интернета IP-адрес вашего сервера.

Вот образец моих записей NS для сайта JeffReifman.com:

Все настройки, которые вы зададите, будут настроены и опубликованы в сети с помощью этих серверов.

Теперь перейдем к типам записей DNS, основной из них является A-запись.

Записи А

Если набрать в адресной строке jeffreifman.com , этот запрос будет направлен в каталог, в котором будет произведен поиск записи DNS соответствующей этому корню этого домена. Корень в данном случае означает без префикса www , то есть без поддомена, просто http://jeffreifman.com . Например, запись A корневого уровня может указывать на IP 107.164.32.96, значит, это тот адрес, по которому надо перейти.

Вот образец запроса A-записи на Kloth:

Записи поддомена

Вы также можете сконфигурировать A-записи для различных поддоменов. Например, если вы хотите, чтобы http://www.yourwebsite.com/ указывал на тот же адрес, просто добавьте идентичную A-запись для поддомена www , теперь у корневого домена и поддомена будет одинаковый IP.

Скоро мы запустим соответствующие сайты на доменах, относящихся к конкретным городам (portland.fleethejungle.com), я рассчитываю расположить их на разных серверах, нам надо, что бы A-записи каждого поддомена вели на уникальный IP соответствующего сервера.

Записи wildcard

В конфигурацию DNS можно добавлять записи Wildcard (с помощью астериска *), позволяющие направлять весь трафик поддоменов на один IP. Например, если я хочу, разместить все поддомены городов на одном сервере, я сделаю так:

Записи wildcard облегчают привязку нескольких поддоменов к одному серверу.

Входная маршрутизация на сервере

Когда трафик прибывает на ваш сервер от маршрутизатора DNS, вы можете сконфигурировать обработку его на сервере. Вот образец моей конфигурации для корневого и www трафика:

ServerName jeffreifman.com ServerAlias www.jeffreifman.com DocumentRoot /var/www/jeffreifman DirectoryIndex index.php AllowOverride All Order Deny,Allow Allow from all

Я также продаю домены с динамическими расценками. Вот как Apache обрабатывает трафик для всех этих доменов и записей DNS.

ServerName newscloud.com ServerAlias *acro.io ServerAlias *acroyoga.io ServerAlias *acupuncture.io ServerAlias *allmisses.com ServerAlias *amehzon.com ServerAlias *carestrategies.com ServerAlias *caringsitters.com ServerAlias *clipboards.io ServerAlias *commonbits.com ServerAlias *commonroad.com ServerAlias *commontunes.com ServerAlias *completelady.com ...

Теперь мы плавно перейдем к CNAME записям. Они полезны в разных случаях, а особенно в упрощении управления IP-адресами и миграциях с одного сервера на другой.

Записи CNAME

CNAME это по сути текстовый псевдоним для направления трафика домена и поддомена. Например, если вы сталкивались с настройкой сервиса типа WordPress или Tumblr, они могли предложить настроить домен именно с помощью записи CNAME, а A-записи c IP.

Я не часто использую Tumblr, но некоторое время я настроил для своего аккаунта адрес http://misc.jeffreifman.com/ . Вот их инструкции для настройки кастомного доменного имени - они позволяют использовать A-записи или CNAME, я выбрал CNAME.

Вот запись DNS для misc. jeffreifman.com:

Misc.jeffreifman.com CNAME domains.tumblr.com.

Примечание: обязательно ставьте точку в адресе CNAME.

Когда пользователь запросит misc.jeffreifman.com , DNS отправит его на domains.tumblr.com , а там уже будет найден IP 66.6.44.4.

Важным преимуществом записи CNAME является то, что если, например, в этом примере Tumblr сменит адрес своего сервера, вам не надо будет менять запись CNAME. Она останется прежней и Tumblr сможет управлять IP, изменяя A-запись на domains.tumblr.com .

Я использую этот подход при продаже доменных имен - большинство из них связаны с сервером через CNAME. Если мне надо поменять хостинг и изменить IP сервера, я могу просто изменить одну A-запись поддомена, используемую CNAME, вместо того чтобы менять A-записи для каждого домена.

Другим сценарием использования записей CNAME является использование CNAME с сервисами CDN, как я описал в статье о KeyCDN . Я настроил облачные поддомены c1, c2, c3, c4, привязав их все к зеркалу на jr-faf.kxcdn.com .

Что происходит, когда вы меняете записи DNS

Записи DNS для корневого домена и поддоменов, как правило, не зависимы друг от друга. Изменение A-записи корневого домена не влияет на существующий адрес CNAME поддомена. Однако недавно я регистрировался на сервисе сетевой безопасности Incapsula и обнаружил, что он требует две А-записи для одного корневого домена - это может сделать все более сложным. Другими словами, технически у вас может быть несколько А-записей для одного домена, что может породить конфликты.

Также важно осознавать, что изменения DNS не вступают в силу немедленно. Когда вы настраиваете записи DNS в первый раз (или когда меняете их), пользователям эти данные еще не доступны. Это одна из тех вещей, которые усложняют миграцию с одного сервера на другой (или смену хостинговой компании). В худшем случае это может занять более 36 часов.

Мой регистратор предложил мне использовать https://www.whatsmydns.net/ для визуального отчета о распространении моего DNS в различных областях. Ниже есть скриншот, который я сделал при смене сервера своего сайта - изменения затребовали несколько часов.

На иллюстрации ниже показаны DNS-серверы, захватившие мои последние изменения:

Записи MX

Теперь перейдем к записям MX. Эти записи сообщают системе DNS, куда слать все приходящие вам email. Поэтому, если я купли домен StarWars.io и захочу получать почту по адресу [email protected] , мне надо сделать две вещи.

Во-первых, мне нужно зарегистрироваться на почтовом сервисе типа Google Apps или FastMail, чтобы разместить там почту. Во-вторых, мне надо сконфигурировать записи MX так, чтобы почта шла на эти серверы.

Например, так будет выглядеть конфигурация Google Apps :

Priority Mail Server 1 ASPMX.L.GOOGLE.COM. 5 ALT1.ASPMX.L.GOOGLE.COM. 5 ALT2.ASPMX.L.GOOGLE.COM. 10 ALT3.ASPMX.L.GOOGLE.COM. 10 ALT4.ASPMX.L.GOOGLE.COM.

А для FastMail так:

In1-smtp.messagingengine.com (first, priority=10) in2-smtp.messagingengine.com (second, priority=20)

Вы также можете использовать записи TXT для того, чтобы сообщать о серверам, детектирующим спам, что ваш почтовый сервер пересылает только законные письма, как это я сделал на примере выше с записью SPF. Сервисы типа Mailgun используют записи SPF и DKIM при массовой рассылке.

Записи AAAA

Если вы решили поддерживать адресацию IPv6, вам надо сконфигурировать запись AAAA:

Сейчас большинство переходов с IPv4 на IPv6 происходит тихо и незаметно. Со временем, когда глобальное потепление убьет последнего полярного медведя, А-записи станут реликтовыми, а записи АААА основными записями DNS.

Как это работает система DNS?

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

DNS-сервер обращается к одному из корневых NS-серверов интернета, ip-адреса которых жестко заданы и известны и в ответ Корневой сервер отдает DNS-серверу список ip-адресов серверов, на которых расположена зона.COM Выглядит этот список примерно так:

A.gtld-servers.net. 160060 IN A 192.5.6.30 a.gtld-servers.net. 160060 IN AAAA 2001:503:a83e::2:30 b.gtld-servers.net. 160060 IN A 192.33.14.30 b.gtld-servers.net. 160060 IN AAAA 2001:503:231d::2:30 c.gtld-servers.net. 160060 IN A 192.26.92.30 d.gtld-servers.net. 160060 IN A 192.31.80.30 e.gtld-servers.net. 160060 IN A 192.12.94.30 f.gtld-servers.net. 160060 IN A 192.35.51.30 g.gtld-servers.net. 160060 IN A 192.42.93.30 h.gtld-servers.net. 160060 IN A 192.54.112.30 i.gtld-servers.net. 160060 IN A 192.43.172.30 j.gtld-servers.net. 160060 IN A 192.48.79.30 k.gtld-servers.net. 160060 IN A 192.52.178.30 l.gtld-servers.net. 160060 IN A 192.41.162.30 m.gtld-servers.net. 160060 IN A 192.55.83.30

DNS-сервер обращается к одному из NS-серверов зоны.COM (Допустим, a.gtld-servers.net - 192.5.6.30) и запрашивает список NS-серверов для домена MYDOMAIN.COM. Эти NS-сервера называются NS-серверами, на которые делегирован домен.

Ns1.mydomain.com. 172800 IN A 66.96.142.148 ns2.mydomain.com. 172800 IN A 65.254.254.172 ns3.mydomain.com. 172800 IN A 66.96.142.146 ns4.mydomain.com. 172800 IN A 65.254.254.170

После чего обращается к одному из полученного списка NS-серверов и запрашивает уже информацию относительно домена MYDOMAIN.COM. Пример ответа:

Mydomain.com. 3248 IN MX 0 mail.mydomain.com. mydomain.com. 86048 IN TXT "v=spf1 ip4:38.113.1.0/24 ip4:38.113.20.0/24 ip4:12.45.243.128/26 ip4:65.254.224.0/19 ?all" mydomain.com. 2208 IN SOA ns1.mydomain.com. hostmaster.mydomain.com. 1335787408 16384 2048 1048576 2560 mydomain.com. 248 IN A 65.254.242.180 mydomain.com. 1448 IN NS ns3.mydomain.com. mydomain.com. 1448 IN NS ns2.mydomain.com. mydomain.com. 1448 IN NS ns4.mydomain.com. mydomain.com. 1448 IN NS ns1.mydomain.com. ;; AUTHORITY SECTION: mydomain.com. 1448 IN NS ns3.mydomain.com. mydomain.com. 1448 IN NS ns4.mydomain.com. mydomain.com. 1448 IN NS ns2.mydomain.com. mydomain.com. 1448 IN NS ns1.mydomain.com. ;; ADDITIONAL SECTION: ns1.mydomain.com. 167564 IN A 66.96.142.148 ns2.mydomain.com. 167564 IN A 65.254.254.172 ns3.mydomain.com. 126551 IN A 66.96.142.146 ns4.mydomain.com. 126551 IN A 65.254.254.170

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

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

Делегированием домена называется передача корневым сервером зоны права размещения домена на определенном NS-сервере. Для примера, корневые сервера ДЕЛЕГИРУЮТ зону.COM на серверы, которые будут за нее отвечать, а серверы зоны.COM ДЕЛЕГИРУЮТ домен MYDOMAIN.COM на NS-сервера хостинг-провайдера или на какие-либо другие. Само делегирование означает, что на корневом сервере для домена присутствуют записи IN NS, указывающие на NS-сервер, на котором размещена информация по домену. Обратите внимание, делегирование предполагает наличие ТОЛЬКО записей IN NS и никаких других. Поэтому домену второго уровня нельзя прописать, к примеру, запись CNAME.

Что такое дочерние NS-серверы

Иногда NS-серверы для домена находятся на его поддоменах. В вышеприведенном примере домен MYDOMAIN.COM делегирован на NS-серверы ns1.mydomain.com, ns2.mydomain.com и т.д. Как же это возможно? Ведь чтобы обратиться к этим NS-серверам нужно узнать их ip-адрес. Все просто - корневой сервер зоны.COM при таком варианте требует указания не только доменных имен NS-серверов, но и их ip-адресов. Поэтому DNS-сервер знает, куда обратиться за подробностями. Рассмотрим пример двух доменов - с дочерним NS-сервером и без: NS-запись у домена diphost.ru

;; ANSWER SECTION: diphost.ru. 292 IN NS ns1.bz8.ru.

NS-запись у домена bz8.ru

;; ANSWER SECTION: bz8.ru. 300 IN NS ns1.bz8.ru. ;; ADDITIONAL SECTION: ns1.bz8.ru. 95617 IN A 185.35.220.5 ns1.bz8.ru. 95617 IN AAAA 2a00:e460:2a00:c01d::9:aaaa

Как видите, все просто. Такая настройка у зарубежных регистраторов называется Child NameServers

Какие бывают NS-записи для домена

NS-запись - указывает, на каких NS-серверах находится домен. Эта запись должна повторять значения для домена, находящиеся на корневых серверах зоны. Только в этом случае домен будет ДЕЛЕГИРОВАН.

Mydomain.com. 1448 IN NS ns3.mydomain.com.

A-запись - указывает IPv4 адрес сервера, к которому нужно обратиться по доменному имени. A-записей у домена может быть несколько. В этом случае выбирается случайный.

Mydomain.com. 248 IN A 65.254.242.180

AAAA-запись - указывает на IPv6 адрес сервера. Также, эта запись иногда упоминается как Квадра-А (четыре А)

MX-запись - указывает на ip-адрес или доменное имя сервера, отвечающего за прием почты на этот домен (MX-сервер). В нашем примере, вся почта на любой адрес домена MYDOMAIN.COM будет поступать на сервер mail.mydomain.com.

Mydomain.com. 3248 IN MX 0 mail.mydomain.com.

MX-записей тоже может быть несколько. MX-запись кроме имени сервера также имеет поле "Приоритет". Оно указывает, в каком порядке нужно обращаться к MX-серверам домена. Чем меньше значение приоритета, тем приоритетнее сервер.

TXT-запись - Сюда записывают различную служебную информацию, для которой нет выделенных полей. Можно записать контактные данные администратора, или что угодно. TXT-записи также используются для хранения SPF и DKIM записей, использующихся для защиты от спама.

Mydomain.com. 86048 IN TXT "v=spf1 ip4:38.113.1.0/24 ip4:38.113.20.0/24 ip4:12.45.243.128/26 ip4:65.254.224.0/19 ?all"

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

SOA-запись - генерируется автоматически NS-сервером и содержит служебную информацию: адрес электронной почты ответственного за NS-сервер, дату и время последнего обновления домена, предельное время кеширования зоны (TTL) и т.д.

SRV-запись - служит для хранения адресов различных серверов, обслуживающих домен. Обычно они не совпадают с адресом web-сервера, указанного в A-записи и, как и MX-сервер, расположены на других адресах. В эту запись можно добавить адреса JABBER, TeamSpeak серверов и т.д.

Общие правила оформления записей на NS-сервере

Если в записи указано доменное имя, оно должно заканчиваться точкой, иначе к нему будет приклеено имя основного домена. Т.е. если указать запись

Mydomain.com. IN MX 10 mx.mail.ru

то MX-сервер домена будет определяться как mx.mail.ru.mydomain.com. Поэтому правильный вариант записи:

Mydomain.com. IN MX 10 mx.mail.ru.