Как преодолеть ограничения CNAME в корневом домене? DNS. Типы DNS записей

Внимание! Панель “DNS-master” входит в пакет услуг “Primary-Standart” от nic.ru. Перед началом работы убедитесь, что она доступна в вашем личном кабинете.

Привязка основного домена.

Чтобы привязать основной домен вам потребуется добавить 3 записи вида:

  • www CNAME testсайт.
  • @ A 164.132.93.140
  • @ A 164.132.93.141

Как это сделать:

1. Зайдите в панель управления доменами nic.ru
2. В разделе “Услуги» справа выберите пункт “DNS-хостинг”:

Обратите внимание, если в следующем окне вы видите надпись «Услуги не найдены», значит DNS хостинг, необходимый для редактирования зоны DNS не приобретен.

Перейдите в раздел «Заказ новый услуги»:

И выберите подходящий тариф. Оптимальный — 600 рублей в год:

3. Если DNS хостинг приобретен, то вы увидите следующее окно. Кликните по кнопке «Управление DNS зонами» возле нужного домена:

4. В разделе "Список доменов" выберите нужный домен:

5. Нажмите кнопку “Добавить новую запись” в панели редактирования зоны:

6. Заполните поля следующим образом:

Name: @
Type: A
IP address: 164.132.93.140

Нажмите кнопку «Добавить» справа от записи:

Аналогично добавьте еще одну запись типа А со значением:

@ А 164.132.93.141


Alias: www
Type: CNAME
Canonical name: testсайт. (точка на конце нужна!)

И нажмите кнопку «Добавить»:

8. После того как записи добавлены нажмите справа сверху кнопку «Выгрузить зону»:

9. Если при добавлении записей возникнет сообщение о неделегированном домене, нажмите «Делегировать домен»:

Делегировать домен можно также из раздела домены:

На обновление DNS может потребоваться 24-48 часов. Если по прошествию этого времени на домене/поддомене, который вы привязали, не отобразиться страница 404 в фирменном оформлении LPgenerator, пишите нам support@сайт.

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

Привязка поддомена

Если у вас на основном домене размещен сайт, или его размещение планируется, целесообразнее создать поддомен и привязать его.

Для привязки поддомена в панели nic.ru требуется добавить 2 записи типа CNAME:

  • www..

Как это сделать:

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

5. Нажмите «Добавить запись» и заполните поля так:

Alias: promo (promo — это пример, вы можете придумать любое название поддомена, только не смешивайте в названии латиницу и кириллицу)
Type: CNAME
Canonical name: testсайт. (точка на конце нужна!)

6. Добавьте еще одну запись и заполните поля.

Webmin не поддерживает работу со всеми типами записей, которые знает BIND. Поддерживается работа только с теми, что более распространены. Ниже будут описаны типы записей, с которыми Webmin умеет работать. Кроме того, будет дана краткая характеристика каждому из этих типов.

Типы записей доступных в прямой зоне :

Address (A) - адресный тип записи. Этот тип ассоциирует IP адрес с hostname(имя хоста). Любая система, к которой вы захотите подключится через HTTP, telnet или иной протокол, имеющая закрепленное за ней hostname(имя хоста), должна иметь адресную запись, чтобы по имени хоста(hostname) можно было отыскать IP адрес хоста. Помните, одно имя хоста(hostname) может иметь несколько адресных записей(записей A типа) . Это часто используется для распределения нагрузки на веб-сайт между несколькими системами. Кроме того, можно создать несколько адресных записей с различными hostname(имя хоста), но одним и тем же IP адресом, как если бы создавались name-based(имя-основанные ) виртуальные сервера Apache.

При создании или редактировании адресной записи, поле Address(IP адрес ) предназначено для записи IP адреса, который будет ассоциирован с hostname(имя хоста). Поле Update reverse?(Обновить обратную зону ?) , отвечает за автоматическое создание и изменение записи Reverse Address(Запись обратного адреса , тип PTR) в Reverse zone(Обратной зоне ) . Смотри Добавление и редактирование записей , для подробностей.

Name Server (NS) - тип записи определяющий имя сервера, отвечающего за обслуживание зоны. Каждая зона должна иметь хотя бы одну NS запись и кроме того, может иметь дополнительные NS записи для поддоменов этой зоны. Если вы настраиваете дополнительный(второй, secondary) DNS сервер для некоторой зоны, то незабудьте проверить, добавлена ли NS запись для этой зоны на главном(основном, master) DNS сервере. В этом случае(если настраиваете дополнительный DNS сервер), имя записи должно быть каноническим для зоны, например example.com(т.е. полностью с родительской(ими) зоной(ами)) .

При создании или редактировании записи этого типа, поле Name Server(Имя сервера; hostname; имя хоста) предназначено для ввода IP адреса или hostname(имя хоста), DNS сервера, отвечающего за обслуживание зоны. Если вы введете hostname(имя хоста), то необходима ещё адресная запись(Address record; A-запись) с IP адресом для этого hostname(имя хоста), расположенного в некоторой зоне, на вашем DNS сервере.

Name Alias (CNAME) - этот тип записи позволяет создавать алиасы(псевдонимы, ссылки, привязки) к уже существующим адресным(Address; тип A) и обратным адресным(Reverse Address, тип PTR) записям. Когда DNS клиент запрашивает IP адрес, этого типа(Name Alias), то он получает тот IP адрес, прописанный в той записи, к которой сделана привязка. Это может быть полезным, если вы хотите, чтобы некоторый хост был доступен под несколькими именами. Конечно, это может быть достигнуто созданием нескольких адресных записей, но вариант с алиасами удобней в том, что если у некоторого хоста сменился IP адрес, то нет необходимости что-то менять в алиасах. В то время как, если использовать множетство адресных записей - придется вносить изменения каждую запись связанную с этим некоторым сервером.

Форма создания и редактирования записи Name Alias содержит поле Real Name(Реальное имя), предназначенное для ввода канонического реального имени записи на которую будет указывать алиас(например webserver.example.com).

Mail Server (MX) - тип записи, который сообщает почтовым программам, вроде Sendmail или Qmail, где находится почтовый сервер(сервер к которому, нужно обратится, для доставки почты в этом домене). Без этой записи, почта для этого домена, будет доставлена на ту систему(тот сервер, хост), чей IP адрес указан в адресной записи(Address, тип А) для этой зоны.

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

Примечание : Высокий приоритет в данном контексте означает не самое большое число, а самое маленькое, т.е. 10 выше чем 50.

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

При добавлении или редактировании MX записи вам доступны два поля. В первое необходимо внести каноническое hostname(имя хоста) или ссылку на него(на имя хоста), почтового сервера. Второе поле предназначено для введения приоритета MX записи. Обычно, для главного сервера устанавливают приоритет равный 5. Если у вас всего один почтовый сервер, то приоритет не имеет значения. Кроме того, вы можете установить для двух почтовых серверов одинаковый приоритет. В таком случае сервер, который доставит письмо адресату, будет определен случайным образом.

Host Information (HINFO) - типа записи используемый для хранения информации об архитектуре и операционной системе некоторого хоста. Например, вам может понадобится создать запись для сервера test.example.ru, что он(сервер) есть x86 PC под FreeBSD. Однако, это очень редко применяется, так как такая информация может быть использована злоумышленниками при подготовке атак.

При добавлении или редактировании этого типа записи, поля Hardware(Архитектура) и Operating System(Операционная система) предназначены для ввода архитектуры и операционной системы хоста, соответственно. Вводить данные в эти поля следует без пробелов, заменяя пробелы знаком «земля», то есть «_» без кавычек.

Text (TXT) - тип записи, который ассоциирует произвольную текстовую информацию с выбранной зоной(доменом). То есть, нельзя добавить TXT запись просто куда-нибудь. Её можно добавить только, при редактировании некоторой зоны. Так вот к редактируемой зоне и будет присоединена эта текстовая информация. Этот тип может использоватся для присоединения комментариев к некоторой зоне(домену). Будьте осторожны, так как эту информацию может прочитать любой, запросивший информацию о зоне(домене), поэтому не располагайте в комментариях конфиденциальную информацию.

При добавлении или редактировании этого типа записи, поле Message(Сообщение), предназначено для ввода комментария к хосту. Этот текст может содержать и пробелы.

Well Known Service (WKS) - тип записи, который ассоциирует hostname(имя хоста), порт и протокол некоторого сервиса(например, почта) с выбранной зоной. Это может быть, к примеру, использовано, для указания клиентам, какой хост является почтовым сервером. Однако большинство программ не запрашивает WKS записи, поэтому на практике этот тип записей, часто бесполезен.

При добавлении или редактировании этого типа записи, поля Address(IP адрес), Protocol(Протокол) и Services(Сервисы), предназначены для ввода IP адреса хоста некоторого сервиса, который оказывается для этой зоны(домена); сетевого протокола, который используется сервисом - TCP или UDP; номера порта на котором, предоставляется данный сервис, соответственно.

Responsible Person (RP) - тип записи, который ассоциирует человека или группу людей ответственных за эту зону(домен). Поля E-mail address(E-mail адрес) и Text Record Name(Имя), предназначены для ввода E-mail адреса ответственного лица и его имени(имени и фамилии), соответственно. Этот тип записей используется редко.

Location (LOC) - тип записи, который используется для указания физического расположения хоста. В координатах широты и долготы. Возможно, будет полезным для больших организаций, сервера, которых в разных странах.

При добавлении или редактировании этого типа записи, поле Latitude(Широта) and Longtitude(Долгота) предназначено для ввода широты и долготы. Пример, для хоста cambridge-net.kei.com есть 42 21 54 N 71 06 18 W -24m 30m .

Service Address (SRV) - тип записи, который ассоциирует доменное имя, имя сервиса и протокол с некоторым хостом. Другими словами, эта запись используется для указания расположения некоторого сервиса на некотором хосте. К примеру, этот тип записи может быть использован, если вы хотите указать, что POP3 сервер для example.ru это mail.example.ru, а веб-сервер это www.example.ru.

При добавлении или редактировании этого типа записи, поля Protocol(Протокол) и Service Name(Имя сервиса), предназначены для ввода протокола, который использует сервис(TCP, UDP, TLS) и имени(названия) сервиса(это имя можно взять из файла /etc/services) соответственно. Названия сервисов могут быть такими - pop3, telnet и другие. Когда клиент ищет некоторую SRV запись, то вид запроса записи следующий: _telnet._tcp.example.ru(Например, может быть таким). Webmin автоматически преобразует вами созданную запись к такому(правильному) виду. Это означает, что нет необходимости создавать или редактировать такого типа записи вручную.

Поле Priority(Приоритет) предназначено для ввода приоритета для этого сервера, означающий(приоритет) то же самое, что и приоритет для MX записей. Поле Weight(Вес) предназначено для ввода числа, означающего «вес» этого хоста. Обращения пользователей будут преимущественно к серверу имеющему бОльший «вес».

Поле Port предназначено для ввода номера порта, на котором предоставляется данный сервис.

Public Key (KEY) - тип записи, который ассоциирует «ключ» к некоторому хосту. Этот ключ используется для IPsec VPN.

Типы записей доступных в обратной зоне :

Reverse Address (PTR) - тип записи, который ассоциирует hostname(имя хоста) с IP адресом в обратной зоне. Для DNS клиентов, необходимо отыскивать hostnames(имена хостов) по заданному IP адресу. Вам следует создавать по одной записи этого типа для каждого хоста. Однако, в большинстве случаев это может быть автоматизировано. Webmin может добавлять адресную запись в обратную зону, сразу после того, как соответствующая адресная запись добавлена в прямую зону. То есть Webmin умеет синхронизировать прямую и обратную зоны.

При добавлении или редактировании этого типа записи, поля Address(IP адрес) и Hostname(Имя хоста) предназначены для ввода IP адреса(Например, 192.168.1.5; Этот адрес будет автоматически конвертирован Webmin"ом в формат in-addr.arpa, используемый DNS сервером для обратной зоны) и hostname(имя хоста) в канонической форме(Например, test.example.ru. ), соответственно.

ВНИМАНИЕ: При вводе Hostname(Имя хоста), обязательно поставьте в конце точку. Это не опечатка.

Name Server (NS) - тип записи NS в обратной зоне, предназначен для того же, что и в прямой - он сообщает другим DNS серверам, IP адрес или hostname(имя хоста) сервера обслуживающего некоторую зону(домен) или некоторый поддомен.

Поле Zone Name(Имя зоны, домена) предназначено для ввода имени зоны, которую обслуживает этот сервер. Обычно то имя зоны, совпадает с именем зоны, в которую добавляется эта запись. В этом поле вам следует вводить значение в формате in-addr.arpa(Так как нет синхронизации, как в адресных записях - тип А и PTR). Поэтому вид имени зоны(Zone Name) для 192.168.1 будет выглядеть как 1.168.192.in-addr.arpa. (Точка обязательна в конце, это не опечатка) В поле Name Server(Сервер имён), вы должны ввести IP адрсе или hostname(имя хоста) в канонической форме(например, ns1.example.ru).

Name Alias (CNAME) - тип записи в обратной зоне, предназначен для того же, что и в прямой - алиас, ссылка, привязка к некоторой записи. В полях Name(Имя) и Real Name(Реальное имя) вам следует вводить значение в формате in-addr.arpa, так как Webmin не делает это автоматически.

  • Перевод

Внимательный читатель найдет на этой картинке 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-серверы ns1.hosting.сайт и ns2.hosting.сайт , воспользуйтесь .

Зона для домена настраивается в разделе DNS-серверы и зона . Вы можете редактировать существующие ресурсные записи и добавлять новые.

Чтобы отредактировать существующую запись, нажмите значок Карандаш справа в нужной строке:

Во всплывающем окне введите имя поддомена и укажите IP-адрес , нажмите Готово :

Также вы можете удалить запись, которая утратила актуальность. Для этого в нужной строке нажмите значок Корзина и подтвердите удаление:

Добавление новых записей

Чтобы добавить новую запись, нажмите значок Добавить запись вверху списка и во всплывающем окне выберите из списка нужную:

Добавление А-записи

А-запись — адресная запись, связывающая ваш домен и IP-адрес сервера, на котором расположен ваш сайт.

  • в поле Subdomain
  • в поле IP Address необходимый IP-адрес

нажмите Готово :

Добавление АAAA-записи

АAAA-запись — задает преобразование имени домена в IPV6-адрес (современный сетевой протокол).

  • в поле Subdomain введите имя поддомена (при указании @ будет выбран ваш домен);
  • в поле IPv6 Address необходимый IPv6-адрес

нажмите Готово :

Добавление CNAME-записи

CNAME-запись (Canonical name) — каноническое имя для псевдонима. Запись CNAME чаще всего используется для переадресации поддомена на другой домен.

  • в поле Subdomain введите имя поддомена;
  • в поле Canonical name имя домена, на который должен ссылаться домен из поля Subdomain

нажмите Готово :

Добавление MX-записи

MX (Mail Exchanger) — адрес почтового шлюза для домена. Состоит из двух частей: приоритета и адреса узла. Записи MX критически важны для работы почты. Благодаря им, отправляющая сторона «понимает», на какой сервер нужно отправлять почту для вашего домена.

  • в поле Subdomain введите имя поддомена (@ — для настройки почты адресам вида почта@ваш_домен);
  • в поле Mail Server адрес сервера, который будет отвечать за работу почты на вашем домене;
  • в поле Priority приоритет записи

нажмите Готово :

Добавление NS-записи

NS (Authoritative name server) — адрес узла, отвечающего за доменную зону. Проще говоря, запись NS указывает, какие DNS-серверы хранят информацию о домене. Критически важна для работы службы DNS.

NS-записи добавляются автоматически после указания DNS-серверов:

Добавление TXT-записи

TXT (Text string) — содержит любую текстовую запись. Широко применяется для проверок на право владения доменом при подключении дополнительных сервисов, а также для записи SPF и ключа DKIM.

  • в поле Subdomain введите имя поддомена (при указании @ будет выбран ваш домен);
  • в поле Text значение записи TXT

нажмите Готово :

Добавление CAA-записи

CAA-запись — определяет правила выпуска SSL/TLS сертификатов для поддомена, которым будут следовать центры сертификации.

  • в поле Subdomain укажите поддомен (при указании @ будет выбран ваш домен);
  • в поле Flag критичность правила (значение или 128 );
  • в поле Tag определяет содержимое поля Value;
  • в поле Value введите нужное значение исходя из значения поля Tag

нажмите Готово .

Обновление DNS-серверов может занять до 48 часов.

Мы размещаем множество веб-приложений для наших клиентов. Очевидно, что они хотят использовать свои собственные домены для ссылки на эти приложения, обычно они хотят, чтобы любой пользователь, который http://www.customer1.example или http://customer1.example пошел в свое веб-приложение.

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

В принципе:

Customer1.example IN CNAME customer1.mycompanydomain.example //this is invalid as the RFC www.customer1.example IN CNAME customer1.mycompanydomain.example //this is valid and will work

Мы хотим иметь возможность изменить IP-адрес customer1.mycompanydomain.example или запись A и наши клиенты будут следовать этой записи, которую мы контролируем.

в нашем DNS это будет выглядеть так:

Customer1.mycompanydomain.example IN A 192.0.2.1

Есть идеи?

8 ответов

Благодаря сипвизу и мистеру Эвилю. Мы разработали PHP script, который проанализирует URL-адрес, который пользователь вводит и вставляет www в начало. (например, если клиент входит kiragiannis.com , он перенаправляется на www.kiragiannis.com). Поэтому наш клиент указывает свой корень (например, customer1.com на A запись, где находится наш веб-редиректор), а затем www CNAME на реальную запись A , управляемую нами.

Ниже кода в случае, если вы заинтересованы в будущем нас.

Причина, по которой этот вопрос все еще часто возникает, заключается в том, что, как вы упомянули, где-то кто-то считал важным автором, что RFC заявляет, что доменные имена без поддоменов перед ними недопустимы. Однако, если вы внимательно прочитаете RFC, вы поймете, что это не совсем то, что написано. Фактически, RFC 1912 заявляет:

Не переусердствуйте с CNAME. Используйте их при переименовании хостов, но планируйте избавиться от них (и проинформируйте своих пользователей).

Некоторые DNS-хосты предоставляют способ получить CNAME-подобную функциональность на верхушке зоны (уровень корневого домена для "голого" доменного имени), используя пользовательский тип записи. Такие записи включают, например:

  • Алиас в DNSimple
  • ANAME в DNS Made Easy
  • ANAME на easyDNS
  • CNAME на CloudFlare

Для каждого провайдера настройка аналогична: укажите запись ALIAS или ANAME для вашего домена apex на example.domain.com, так же, как и в случае записи CNAME. В зависимости от провайдера DNS, пустое значение или значение @Name определяет вершину зоны.

ALIAS или ANAME или @example.domain.com.

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

Я категорически не согласен с утверждением, что это делают только "любители-админы" или подобные идеи. Это просто "Что нужно сделать имени и его сервису?" разобраться, а затем адаптировать свой DNS-конфигурацию для удовлетворения этих пожеланий; Если вашими основными услугами являются Интернет и электронная почта, я не вижу никаких ДЕЙСТВИТЕЛЬНЫХ причин, по которым удаление CNAME навсегда было бы проблематичным. В конце концов, кто предпочел бы @subdomain.domain.org над @domain.org? Кому нужен "www", если вы уже настроили сам протокол? Нелогично предполагать, что использование корневого доменного имени будет недопустимым.

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

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

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

И в документе IETF "Общие ошибки в работе и конфигурации DNS":

Это часто предпринимают неопытные администраторы как очевидные чтобы ваше доменное имя также являлось хостом. Однако DNS серверы, такие как BIND, увидят CNAME и откажутся добавлять любые другие ресурсов для этого имени. Поскольку никакие другие записи не разрешены сосуществуют с CNAME, записи NS игнорируются. Поэтому все хосты в домене podunk.xx также игнорируются!

Я не знаю, как они справляются с этим, или какие отрицательные побочные эффекты могут быть, но я использую Hover.com для размещения некоторых из моих доменов и недавно установил вершину моего домена как CNAME. Их инструмент редактирования DNS вообще не жаловался, и мой домен с радостью разрешается через назначенный CNAME.

Вот что Dig показывает мне для этого домена (фактический домен, запущенный как mydomain.com):

; <<>> DiG 9.8.3-P1 <<>> mydomain.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2056 ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;mydomain.com. IN A ;; ANSWER SECTION: mydomain.com. 394 IN CNAME myapp.parseapp.com. myapp.parseapp.com. 300 IN CNAME parseapp.com. parseapp.com. 60 IN A 54.243.93.102

Вы должны указать период в конце внешнего домена, чтобы он не думал, что вы имеете в виду client1.mycompanydomain.com.localdomain;

Итак, просто измените:

Customer1.com IN CNAME customer1.mycompanydomain.com

Customer1.com IN CNAME customer1.mycompanydomain.com.

Sipwiz правильно, единственный способ сделать это правильно - это гибридный подход HTTP и DNS. Мой регистратор является повторным продавцом для Tucows, и они предлагают переадресацию доменов в качестве бесплатной добавленной стоимости.

Если ваш домен - blah.com, они спросят вас, куда вы хотите переадресовать домен, и введите его на www.blah.com. Они назначают запись A их серверу apache и автоматически добавляют blah.com в качестве DNS-хоста. Vhost отвечает с ошибкой HTTP 302, перенаправляя их на правильный URL. Это просто для script/setup и может быть обработано с помощью low-end в противном случае было бы утилизировано.

Выполните следующую команду для примера: curl -v eclecticengineers.com

  • Сергей Савенков

    какой то “куцый” обзор… как будто спешили куда то