Advertisement
  1. Code
  2. Web Development

Введение в изучение и использование DNS-записей

Scroll to top
Read Time: 8 min

() translation by (you can also view the original English article)

Final product imageFinal product imageFinal product image
What You'll Be Creating

Введение

Система доменных имен (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:

Example Name Server Records NS for Jeff Reifmans WebsiteExample Name Server Records NS for Jeff Reifmans WebsiteExample Name Server Records NS for Jeff Reifmans Website

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

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

Записи А

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

Я использовал веб-сайт Kloth в течение многих лет, чтобы проверить записи DNS, но есть и другие, которые вы можете использовать, например. Google Dig или KeyCDN, чьи службы доставки контента, о которых я писал для Tuts + в начале этого года. Многие сайты предлагают эти инструменты.

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

Kloth DNS Lookup of an A RecordKloth DNS Lookup of an A RecordKloth DNS Lookup of an A Record

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

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

DNS A Record Example with SubdomainDNS A Record Example with SubdomainDNS A Record Example with Subdomain

Недавно я сделал сайт http://fleethejungle.com, чтобы помочь пользователям расстаться с компанией Amazon, приносящей вред Сиэттлу (об этом пишет даже New-York Times).

Flee the Jungle image by Kali SnowdenFlee the Jungle image by Kali SnowdenFlee the Jungle image by Kali Snowden

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

DNS A Record Example with SubdomainsDNS A Record Example with SubdomainsDNS A Record Example with Subdomains

Записи wildcard

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

DNS Wildcard Record ExampleDNS Wildcard Record ExampleDNS Wildcard Record Example

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

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

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

1
<VirtualHost *:80>
2
    ServerName jeffreifman.com
3
    ServerAlias www.jeffreifman.com
4
    DocumentRoot /var/www/jeffreifman
5
    DirectoryIndex index.php
6
    <Directory /var/www/wpapps/>
7
      AllowOverride All
8
      Order Deny,Allow
9
      Allow from all
10
   </Directory>
11
</VirtualHost>

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

1
<VirtualHost *:80>
2
    ServerName newscloud.com
3
    ServerAlias *acro.io
4
    ServerAlias *acroyoga.io
5
    ServerAlias *acupuncture.io
6
    ServerAlias *allmisses.com
7
    ServerAlias *amehzon.com
8
    ServerAlias *carestrategies.com
9
    ServerAlias *caringsitters.com
10
    ServerAlias *clipboards.io
11
    ServerAlias *commonbits.com
12
    ServerAlias *commonroad.com
13
    ServerAlias *commontunes.com
14
    ServerAlias *completelady.com
15
    ...

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

Записи CNAME

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

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

DNS Settings for TumblrDNS Settings for TumblrDNS Settings for Tumblr

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

1
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 CNAME Example for KeyCDNDNS CNAME Example for KeyCDNDNS CNAME Example for KeyCDN

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

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

DNS Multiple A RecordsDNS Multiple A RecordsDNS Multiple A Records

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

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

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

DNS Web Propagation at Whats My DNSDNS Web Propagation at Whats My DNSDNS Web Propagation at Whats My DNS

Записи MX

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

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

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

1
Priority    Mail Server
2
1   ASPMX.L.GOOGLE.COM.
3
5   ALT1.ASPMX.L.GOOGLE.COM.
4
5   ALT2.ASPMX.L.GOOGLE.COM.
5
10   ALT3.ASPMX.L.GOOGLE.COM.
6
10   ALT4.ASPMX.L.GOOGLE.COM.

А для FastMail так:

1
in1-smtp.messagingengine.com (first, priority=10)
2
in2-smtp.messagingengine.com (second, priority=20)

Если вы захотите запустить свой собственный почтовый сервер, вам нужно указать в записи MX IP-адрес этого сервера.

Многие пользователи используют MX Toolbox для просмотра записей MX, но это может сделать и любой другой сервис просмотра DNS.

DNS Check with MX ToolboxDNS Check with MX ToolboxDNS Check with MX Toolbox

Смена провайдера Email и перенос почты

Записи MX инструктируют систему DNS куда отправлять сегодняшнее письмо — ваше письмо сохранится в облачной базе данных вашего провайдера почты. Если вы хотите перенести все имеющиеся сообщения, вам надо использовать инструменты для миграции почты или возможности вашей почтовой программы. И, конечно, вам надо обновить записи M, добавив нового провайдера почты.

В течение процесса обновления DNS письма могут приходить на старый адрес.

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

Записи TXT

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

Например, Google может попросить вас добавить такую запись:

1
jeffreifman.com TXT google-site-verification=Ih8iC4iSOcBSkk

На моем сайте jeffreifman.com есть три записи TXT:

1
jeffreifman.com TXT  "keybase-site-verification=qG2zMYf_hw2sXUCgtYWk"
2
jeffreifman.com TXT	"v=spf1 include:spf.efwd.regsrvrs.com ~all"
3
jeffreifman.com TXT	"google-site-verification=blTgEw5QFSx5M"

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

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

Записи AAAA

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

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

DNS AAAA Record ExampleDNS AAAA Record ExampleDNS AAAA Record Example

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

В заключение

Надеюсь, вы нашли эту статью полезным введением в записи DNS. Как всегда, не стесняйтесь оставлять свои вопросы и комментарии ниже. Вы также можете следить за мной в Твиттере, чтобы сообщить мне, что вы думаете, или что я пропустил. Или, вы можете отправить мне электронное письмо напрямую, просмотреть мои другие статьи на Tuts+ или почитать мои другие статьи.

Ссылки по теме

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.