Введение в изучение и использование DNS-записей
Оригинал статьи: An Introduction to Learning and Using DNS Records
Оглавление:Введение
Система доменных имен (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, значит, это тот адрес, по которому надо перейти.
Я долгие годы использовал сайт Kloth для проверки записей DNS, на самом деле таких сервисов много, например Google Dig или tools.keycdn.com.
Вот образец запроса A-записи на Kloth:
Записи поддомена
Вы также можете сконфигурировать A-записи для различных поддоменов. Например, если вы хотите, чтобы http://www.yourwebsite.com/
указывал на тот же адрес, просто добавьте идентичную A-запись для поддомена www
, теперь у корневого домена и поддомена будет одинаковый IP.
Недавно я сделал сайт http://fleethejungle.com/, чтобы помочь пользователям расстаться с компанией Amazon, приносящей вред Сиэттлу (об этом пишет даже New-York Times).
Скоро мы запустим соответствующие сайты на доменах, относящихся к конкретным городам (portland.fleethejungle.com
), я рассчитываю расположить их на разных серверах, нам надо, что бы A-записи каждого поддомена вели на уникальный IP соответствующего сервера.
Записи wildcard
В конфигурацию DNS можно добавлять записи Wildcard (с помощью астериска *
), позволяющие направлять весь трафик поддоменов на один IP. Например, если я хочу, разместить все поддомены городов на одном сервере, я сделаю так:
Записи wildcard облегчают привязку нескольких поддоменов к одному серверу.
Входная маршрутизация на сервере
Когда трафик прибывает на ваш сервер от маршрутизатора DNS, вы можете сконфигурировать обработку его на сервере. Вот образец моей конфигурации для корневого и www
трафика:
<VirtualHost *:80>
ServerName jeffreifman.com
ServerAlias www.jeffreifman.com
DocumentRoot /var/www/jeffreifman
DirectoryIndex index.php
<Directory /var/www/wpapps/>
AllowOverride All
Order Deny,Allow
Allow from all
</Directory>
</VirtualHost>
Я также продаю домены с динамическими расценками. Вот как Apache обрабатывает трафик для всех этих доменов и записей DNS.
<VirtualHost *:80>
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-записи для каждого домена.
Примечание: стандарты DNS технически не позволяют привязывать корневой домен к CNAME, например, jeffreifman.com CNAME domains.tumblr.com
. Поэтому Tumblr предлагает сделать А-запись для корневых доменов. Однако, некоторые серверы DNS поддерживают это, так что вам имеет смысл проверить свой. Подробнее о CNAME-записях для корневого сервера можно прочитать в записи Джоша Стрэйнджа.
Другим сценарием использования записей 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
и захочу получать почту по адресу jeff@starwars.io
, мне надо сделать две вещи.
Во-первых, мне нужно зарегистрироваться на почтовом сервисе типа 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)
Если вы захотите запустить свой собственный почтовый сервер, вам нужно указать в записи MX IP-адрес этого сервера.
Многие пользователи используют MX Toolbox для просмотра записей MX, но это может сделать и любой другой сервис просмотра DNS.
Смена провайдера Email и перенос почты
Записи MX инструктируют систему DNS куда отправлять сегодняшнее письмо — ваше письмо сохранится в облачной базе данных вашего провайдера почты. Если вы хотите перенести все имеющиеся сообщения, вам надо использовать инструменты для миграции почты или возможности вашей почтовой программы. И, конечно, вам надо обновить записи M, добавив нового провайдера почты.
В течение процесса обновления DNS письма могут приходить на старый адрес.
Смена записи MX не повредит содержимое вашего старого хранилища почты, просто новые письма перестанут туда поступать.
Записи TXT
TXT-записи позволяют владельцу домена верифицировать себя путем размещения секретных кодов в DNS. Когда вы регистрируетесь в инструментах веб-мастера Google, вам в качестве одного из способов подтверждения будет предложен этот вариант.
Например, Google может попросить вас добавить такую запись:
jeffreifman.com TXT google-site-verification=Ih8iC4iSOcBSkk
На моем сайте jeffreifman.com
есть три записи TXT:
jeffreifman.com TXT "keybase-site-verification=qG2zMYf_hw2sXUCgtYWk"
jeffreifman.com TXT "v=spf1 include:spf.efwd.regsrvrs.com ~all"
jeffreifman.com TXT "google-site-verification=blTgEw5QFSx5M"
База ключей, подготовленная мной для цикла статей о PGP и шифровании использует записи TXT для верификации моего сайта и меня, с помощью моих публичных ключей.
Вы также можете использовать записи TXT для того, чтобы сообщать о серверам, детектирующим спам, что ваш почтовый сервер пересылает только законные письма, как это я сделал на примере выше с записью SPF. Сервисы типа Mailgun используют записи SPF и DKIM при массовой рассылке.
Записи AAAA
Когда IP-адреса в интернете закончатся, мы неторопливо перейдем на имена IPv6. подробнее об этом вы можете узнать из статьи о запуске IPV6.
Если вы решили поддерживать адресацию IPv6, вам надо сконфигурировать запись AAAA:
Сейчас большинство переходов с IPv4 на IPv6 происходит тихо и незаметно. Со временем, когда глобальное потепление убьет последнего полярного медведя, А-записи станут реликтовыми, а записи АААА основными записями DNS.