Dns записи домена что. Что такое NS-сервер и как он работает

Прочие модели 20.07.2019
Прочие модели

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

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

  • Запись A (запись адреса) — указывает IP адрес хостинга, где находится наш сайт.
  • Запись MX (адрес посты) — определяет IP адрес постового сервера для домена, как правило, совпадает с записью A.
  • Запись NS (name server) — указывает на DNS-сервер для конкретного домена.

Рассмотрим данные нюансы на примере работы с регистратором доменов Webnames . Для любого домена у нас есть 2 варианта задания соответствия между доменом и хостингом:

1. Указание записей A и MX, которые будут содержать IP хостинга с нашим сайтом:

При этом данное соответствие будет «храниться» в NS записях регистратора (webnames). Поэтому при создании хостинг аккаунтов вы можете использовать NS регистратора — в данном случае это ns1.nameself.com и ns2.nameself.com. При этом во вкладке DNS сервера в вашей учетной записи найдете:

2. В том же разделе меню управление DNS для домена вы также можете указать NS сервера хостера, например:

Теперь, по сути, вся ответственность по заданию соответствия между IP адресом и вашим доменом лежит на компании, которая эти DNS предоставляет. В данном случае это хостинг CoolVDS . Там, кстати, можно прикупить выделенный сервер в США, что хорошо подойдет по MFA сайты. Для того чтобы там «подключить» домен нужно обратиться в тех.поддежку на почту [email protected]: в теме письма пишите «домен для ваш_сервер.coolvds.com», где в тексте указываете домен, ip и опять имя сервера, например:

mydomain.com:193.333.555.777:ваше_имя.coolvds.com

Может слегка запутано, но только в первый раз. Другие хостинги могут при покупке хостинга спрашивать какие DNS использовать. Например, так делается в Hostpro, и если вы выберете использовать их DNS, тогда просто для своего домена нужно будет указать их NS сервера — master.hostsila.com и slave.hostsila.net без всяких A и MX записей.

Точно также 2 варианта, о которых я сказал выше есть у большинства нормальных регистраторов доменов. Еще один пример — Getnic.name . Здесь вы можете воспользоваться услугой бесплатного управления DNS или указать сторонние NS сервера.

Для этого выбираете домен и заходите в его учетную запись — здесь можете указать существующие NS другого хостера либо кликнуть по ссылке «управление DNS». Во втором случае сможете задать A, MX и все необходимые записи для домена и использовать бесплатные NS от getnic.name.

Создание собственных NS записей

Для некоторых своих проектов я покупал виртуальные сервера у Hostpro — расположение в Украине, поддержка адекватная и очень дружелюбная. После приобретения вам выдают 2 IP адреса — основной и дополнительный, а также просьбу зарегистрировать NS вида ns1.mydomain.ru и ns2.mydomain.ru.

Для webnames заходим опять же в раздел «Управление зоной» для своего домена, где добавляем нужные записи типа NS:

Для украинского регистратора iname.ua делается аналогичным образом: добавляете запись типа NS и указываете выданные IP.

Теперь для новых зарегистрированных доменов, сайты которых располагаются на вашем сервере сможете указывать не только A запись со ссылкой на IP, а и просто определять через свои NS — ns1.mydomain.ru и ns2.mydomain.ru. Кстати, напоследок ссылка на статью про то как можно не ждать обновления DNS — редактируем файл hosts после чего сможете приступать к работе над своим проектом пока глобальные DNS еще не обновились (дело нескольких часов).

Вот такой получился небольшой ликбез по управлению DNS, созданию NS, A, MX записей для доменов. Возможно, вы работаете с теми же регистраторами и хостингами, тогда данная статья должна быть полезной подсказкой, если какие-то вопросы возникают (особенно новичкам). Хотя, в принципе, конечно, всегда можно обратиться в тех.поддержку как регистратора домена, так и там где вы покупаете хостинг — в хороших, уважающих себя и клиентов, компаниях должны помочь, с другими лучше дела не иметь.

P.S. Купить книгу теперь можно и онлайн, заходите в специальный книжный интернет магазин выбираете товар, оплачиваете кредиткой и получаете доставку.

DNS (система доменных имен) – это «телефонная книга» Интернета. В качестве номера телефона в ней выступает IP-адрес, а в качестве наименований контактов — домены. В такую книгу можно внести не только «телефонный номер», но и дополнительную информацию о контакте («е-mail», «место работы» и т.п.).

Информация о домене хранится на DNS-серверах. Чтобы внести её в систему DNS, нужно прописать ресурсные записи . С их помощью серверы делятся сведениями о доменах с другими серверами. Пока не прописаны ресурсные записи для домена, его нет в «телефонной книге» Интернета. Следовательно, работа сайта или почты на нём невозможна. Прежде чем приступать к указанию ресурсных записей, нужно делегировать домен, то есть прописать для него DNS-серверы. Вы можете сделать это по инструкции: . Затем переходите к ресурсным записям. Изменения вступят в силу после обновления DNS-серверов (обычно до 24 часов).

Основные ресурсные записи: записи типа A, CNAME, MX, TXT и SPF. Рассмотрим их подробнее.

Запись A

Запись A (address) — одна из ключевых ресурсных записей Интернета. Она нужна для связи домена с IP-адресом сервера. Пока не прописана А-запись, ваш сайт не будет работать.
Когда вы вводите название сайта в адресную строку браузера, именно по А-записи DNS определяет, с какого сервера нужно открывать ваш сайт.

Примеры записи A:

Имя записи Тип записи Значение
site.ru A 123.123.123.123
shop.site.ru A 123.123.123.123

Прописать А-запись вы можете по инструкции:

Запись CNAME

CNAME (Canonical name) — запись, которая отвечает за привязку поддоменов (например, www.site.ru) к каноническому имени домена (site.ru) или другому домену.
Основная функция CNAME — дублирование ресурсных записей домена (A, MX, TXT) для различных поддоменов.

Примеры записи CNAME:

Имя записи Тип записи Значение
www.site.ru CNAME site.ru
webmail.site.ru CNAME webmail.hosting.сайт

Если вы пропишете CNAME для поддомена www.site.ru и укажете значение site.ru, сайт будет открываться с того же IP-адреса, что и site.ru . Если вы пропишете CNAME для mail.site.ru и укажете значение webmail.hosting.сайт , то на mail.hosting.сайт будут распространятся те же ресурсные записи, что для webmail.hosting.сайт.

Использование записи CNAME исключает использование других ресурсных записей для данного поддомена, то есть для поддомена webmail.site.ru или www.site.ru нельзя одновременно добавить и запись A и запись CNAME.

Прописать CNAME-запись вы можете по инструкции:

Запись MX

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

Примеры записи MX:

Имя записи Тип записи Приоритет Значение
site.ru MX 10 mx1.hosting.сайт
site.ru MX 15 mx2.hosting.сайт

где mx1.hosting..

Обычно указывается два почтовых сервера, чтобы в случае недоступности одного из них почта всё же была отправлена на другой. Приоритет записи определяет, на какой сервер нужно отправлять почту в первую очередь. Чем меньше число, тем выше приоритет. Таким образом, для доменного имени site.ru почтовый сервер mx1.hosting..hosting.. Если приоритет одинаковый, сервер выбирается случайным образом.

Прописать MX-запись вы можете по инструкции:

Запись TXT

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

Прописать TXT-запись вы можете по инструкции:

Запись SPF

SPF-запись (Sender Policy Framework) содержит информацию о списке серверов, которые имеют право отправлять письма от имени заданного домена. Позволяет избежать несанкционированного использования. Настройка SPF прописывается в TXT-записи для домена.

Пример записи SPF:

Имя записи Тип записи Значение
site.ru TXT v=spf1 include:_spf.hosting..123.123.123 a mx ~all

где 123.123.123.123 — IP-адрес нужного вам сервера.

В этом примере:

  • v=spf1 — определяет версию используемой записи SPF;
  • include:_spf.hosting.сайт — включает в запись SPF значение SPF-записи другого домена. То есть для домена будут действовать все значения записи SPF для домена «_spf.hosting.сайт»;
  • ip4: 123.123.123.123 — разрешает приём почты с IP-адреса 123.123.123.123;
  • a — разрешает приём почты с сервера, IP-адрес которого стоит в ресурсной A-записи домена. Проще говоря, с сервера, где размещён сайт;
  • mx — разрешает приём почты, если отправляющий сервер указан в одной из записей MX для домена;
  • ~all — если письмо пришло с сервера, который не входит в вышеперечисленный список, его стоит проанализировать более тщательно. Также иногда используется -all — в этом случае письмо не проходит дополнительных проверок и сразу отвергается.

Прописать SPF-запись вы можете по инструкции:

Записи NS, PTR, SOA являются служебными и, как правило, настраиваются автоматически.

Запись NS

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

Запись PTR

PTR — обратная DNS-запись, которая связывает IP-адрес сервера с его каноническим именем (доменом). PTR-запись применяется для фильтрации почты.. Если у вас заказан VPS или Dedicated-сервер, прописать PTR-запись можно по инструкции:

Запись SOA

SOA (Start of Authority) — начальная запись зоны, которая указывает, на каком сервере хранится эталонная информация о доменном имени. Критически важна для работы службы DNS. Подробнее о том, что такое SOA-запись и как её проверить, вы можете узнать .

Что такое 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 Добавить метки



Рекомендуем почитать

Наверх