Site icon 8HOST.COM

Введение в DNS: основные термины, компоненты и понятия

DNS (или Domain Name System, система доменных имен) – довольно сложная область в управлении серверами и сайтами. Навыки работы с DNS помогут вам определить проблемы в настройках доступа к веб-сайтам и расширят понимание того, что происходит «за кадром».

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

Читайте также:

Основные термины DNS

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

Как работает DNS?

Теперь, когда вы знаете основные термины, можно посмотреть, как работает система DNS.

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

Корневые серверы DNS

Ранее уже говорилось, что DNS по своей сути является иерархической системой. В верхней части этой системы находятся так называемые «корневые серверы». Эти серверы контролируются различными организациями и передают полномочия ICANN.

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

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

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

К примеру, если запрос на www.wikipedia.org отправлен на корневой сервер, корневой сервер не найдет результат в своих записях. Он проверит свои файлы зон и попробует найти запись, которая соответствует «www.wikipedia.org». Но не не найдет ее. Вместо этого он найдет запись для «org» и предоставит запрашивающей организации адрес сервера имен, ответственного за адреса «org».

TLD-серверы

Затем инициатор запроса отправляет новый запрос на предоставленный ему корневым сервером IP-адрес, который отвечает за домен верхнего уровня запроса.

Например, он отправил бы запрос серверу имен, ответственному за домены «org», чтобы узнать, где находится www.wikipedia.org.

Новый сервер также будет искать www.wikipdia.org в своих файлах зон. Он не найдет эту запись в своих файлах, однако он найдет запись с IP-адресом сервера имен, ответственным за «wikipedia.org».

Серверы имен доменов

На этом этапе инициатор запроса имеет IP-адрес сервера имен, который отвечает за IP-адрес ресурса. Он отправляет новый запрос серверу имен, снова спрашивая, может ли он разрешить www.wikipedia.org.

Сервер имен проверяет свои файлы зон и обнаруживает, что у него есть файл зоны, связанный с «wikipedia.org». Внутри этого файла есть запись для хоста «www». Эта запись сообщает IP-адрес, где находится этот хост. Сервер имен возвращает окончательный ответ инициатору запроса.

Что такое разрешающий сервер имен?

В приведенном выше примере упоминается инициатор запроса. Что это такое?

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

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

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

Затем разрешающий сервер имен проверяет свой кэш. Если он не найдет в кэше ответ, он выполнит описанные выше действия.

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

Файлы зон

Файлы зон – это файлы, в которых серверы имен хранят информацию об известных им доменах. Каждый домен, о котором знает сервер имен, хранится в файле зоны. Среднестатистический сервер имеет в своих файлах зон записи для большинства поступающих запросов.

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

Чем больше файлов зон имеет сервер имен, тем больше запросов он сможет авторитетно обслужить.

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

$ORIGIN – это параметр, который определяет максимальный авторитет зоны по умолчанию.

Поэтому, если файл зоны используется для настройки домена «example.com.», параметр $ORIGIN будет иметь значение «example.com.».

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

Параметр $TTL настраивает время хранения предоставляемой информации. Кэширующий сервер имен может использовать для ответа на запросы ранее запрошенные результаты до тех пор, пока время TTL не истечет.

Типы записей

Файлы зон могут содержать записи разных типов. Рассмотрим самые распространенные из них.

SOA-записи

SOA-запись (или Start of Authority) является обязательной записью во всех файлах зон. Это должна быть первая реальная запись в файле (хотя спецификации $ORIGIN или $TTL могут идти раньше). Это также одна из самых сложных записей.

Начало SOA-записи выглядит примерно так:

domain.com.  IN SOA ns1.domain.com. admin.domain.com. (
12083   ; serial number
3h      ; refresh interval
30m     ; retry interval
3w      ; expiry period
1h      ; negative TTL
)

Записи А и АААА

Обе эти записи сопоставляют хост с IP-адресом. Запись A используется для сопоставления хоста с IP-адресом IPv4, а запись AAAA используется для сопоставления хоста с IPv6-адресом.

Общий формат этих записей таков:

host     IN      A       IPv4_address
host     IN      AAAA    IPv6_address

Так как SOA-запись определила ns1.domain.com как основной сервер, его нужно сопоставить с IP-адресом, поскольку ns1.domain.com находится в зоне domain.com.

Запись может выглядеть примерно так:

ns1     IN  A       111.222.111.222

Обратите внимание: тут не нужно указывать полное имя. Вы можете просто предоставить хост, без FQDN, а DNS-сервер заполнит остальные поля значением $ORIGIN. Но при желании вы можете так же легко использовать FQDN:

ns1.domain.com.     IN  A       111.222.111.222

В большинстве случаев здесь определяется веб-сервер как www:

www     IN  A       222.222.222.222

Также нужн указать, куда разрешается базовый домен. Сделать это можно так:

domain.com.     IN  A       222.222.222.222

Можно использовать @ для ссылки на базовый домен:

@       IN  A       222.222.222.222

Специальный символ * позволяет разрешить все, связанное с этим доменом, что не определено явно на этом сервере.

*       IN  A       222.222.222.222

Аналогичным образом создаются и записи AAAA для адресов IPv6.

CNAME-записи

Записи CNAME определяют псевдоним для канонического имени вашего сервера (которое определяется записью A или AAAA).

Например, если запись A определяет хост server1, вы можете использовать «www» в качестве псевдонима для этого хоста:

server1     IN  A       111.111.111.111
www         IN  CNAME   server1

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

Одним из случаев, когда рекомендуется использовать CNAME, является создание псевдонима ресурса за пределами текущей зоны.

MX-записи

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

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

IN  MX  10   mail.domain.com.

Обратите внимание, в начале нет имени хоста.

Также стоит отметить, что в записи есть дополнительное число. Оно определяет приоритет сервера и помогает компьютерам решить, на какой сервер отправлять почту, если определено несколько почтовых серверов. Чем ниже это число – тем выше приоритет сервера.

Запись MX обычно указывает на хост, определенный записью A или AAAA, а не на хост CNAME.

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

IN  MX  10  mail1.domain.com.
IN  MX  50  mail2.domain.com.
mail1   IN  A       111.111.111.111
mail2   IN  A       222.222.222.222

В данной настройке хост mail1 имеет более высокий приоритет.

Эти записи можно создать так:

IN  MX  10  mail1
IN  MX  50  mail2
mail1   IN  A       111.111.111.111
mail2   IN  A       222.222.222.222

NS-записи

Этот тип записи определяет серверы имен, которые используются для этой зоны.

Если файл зоны находится на сервере имен, зачем ему нужно ссылаться на этот сервер? Производительность DNS во многом зависит от уровней кэширования. Файл зоны может обслуживаться из кэшированной копии на другом сервере имен. Существуют и другие причины для того, чтобы определять серверы имен на самом сервере имен.

Как и записи MX, эти параметры распространяются на всю зону, поэтому они также не принимают хосты. В целом эти записи выглядят так:

IN  NS     ns1.domain.com.
IN  NS     ns2.domain.com.

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

Включите сопоставление хостов с записями A или AAAA:

IN  NS     ns1.domain.com.
IN  NS     ns2.domain.com.
ns1     IN  A      111.222.111.111
ns2     IN  A      123.211.111.233

PTR-записи

Записи PTR используются для определения имени, связанного с IP-адресом. Записи PTR являются инверсией записи A или AAAA. PTR уникальны тем, что они начинаются с корня .arpa и передаются владельцам IP-адресов. Региональные интернет-регистраторы (RIR) управляют передачей IP-адресов. Региональные интернет-регистраторы – это APNIC, ARIN, RIPE NCC, LACNIC и AFRINIC.

Вот пример записи PTR для 111.222.333.444:

444.333.222.111.in-addr.arpa.   33692   IN  PTR host.example.com.

Этот пример записи PTR для IPv6-адреса показывает полубайтовый формат обратного DNS-сервера Google IPv6 2001:4860:4860::8888.

8.8.8.8.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.6.8.4.0.6.8.4.1.0.0.2.ip6.arpa. 86400IN PTR google-public-dns-a.google.com.

Инструмент командной строки dig  с флагом -x можно использовать для поиска обратного DNS-имени IP-адреса.

Вот пример команды dig.

dig -x 8.8.4.4 +short

Эта команда вернет домен в записи PTR:

google-public-dns-b.google.com.

Серверы в Интернете используют записи PTR для размещения доменных имен в записях логов, принятия решений по управлению спамом и отображения сведений о других устройствах в удобочитаемом формате.

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

Читайте также: Использование Traceroute и MTR для диагностики сети

Примечание: Важно, чтобы FQDN в записи PTR имело соответствующую A-запись. Например, адрес 111.222.333.444 имеет PTR-запись для server.example.com, а server.example.com – это запись A, которая указывает на 111.222.333.444.

CAA-записи

Записи CAA используются для определения доверенных центров сертификации (ЦС), которые могут выдавать сертификаты SSL /TLS для вашего домена. По состоянию на 8 сентября 2017 года все ЦС должны проверять эти записи перед выдачей сертификата. Если такой записи нет, любой ЦС может выдать сертификат. В противном случае выдавать сертификаты могут только указанные в записях ЦС. Записи CAA могут применяться к отдельным хостам или целым доменам.

CAA-запись выглядит так:

example.com.    IN  CAA 0 issue "letsencrypt.org"

Хост, IN и тип записи (CAA) – это обычные поля DNS. Информация, относящаяся к CAA, приведена в разделе «letencrypt.org». Он состоит из трех частей: флаги (0), теги (issue) и значения («letencrypt.org»).

Вы можете использовать dig для извлечения записей CAA, используя следующие параметры:

dig example.com type257

Читайте также: