DNS
DNS (Domain Name System) является телефонной книгой Интернета, преобразует human-readable доменные имена в IP-адреса, позволяя браузерам загружать интернет-ресурсы.
Доменное имя — это текстовая строка, которая сопоставляется с буквенно-цифровым IP-адресом и используется для доступа к веб-сайту из клиентского программного обеспечения.
В загрузке веб-страницы участвуют 4 DNS-сервера:
Recursive Resolver
Recursive Resolver
(также известный как DNS recursor) — это первая остановка в DNS-запросе. Recursive Resolver
действует как посредник между клиентом и DNS nameserver
. После получения DNS-запроса от веб-клиента Recursive Resolver
либо ответит кэшированными данными, либо отправит запрос на Root Nameserver
, за которым следует еще один запрос на TLD Nameserver
, а затем последний запрос на Authoritative Nameserver
. После получения ответа от Authoritative Nameserver
, содержащего запрошенный IP-адрес, Recursive Resolver
отправляет ответ клиенту.
Во время этого процесса Recursive Resolver
будет кэшировать информацию, полученную от Authoritative Nameserver
. Когда клиент запрашивает IP-адрес доменного имени, которое недавно было запрошено другим клиентом, резолвер может обойти процесс связи с nameservers и просто доставить клиенту запрошенную запись из его кэша.
Большинство пользователей Интернета используют Recursive Resolver
, предоставляемый их ISP (интернет-провайдером), но есть и другие доступные варианты; например Cloudflare 1.1.1.1 (public DNS resolver operated by Cloudflare).
Root Nameserver
13 DNS root nameservers известны каждому Recursive Resolver
, и они являются первой остановкой в поисках рекурсивным преобразователем DNS-записей. Root Nameserver
принимает запрос Recursive Resolver
, который включает имя домена, а Root Nameserver
отвечает, направляя Recursive Resolver
на TLD Nameserver
в зависимости от расширения этого домена (.com, .net, .org и т. д.). Root Nameserver
контролируются некоммерческой организацией под названием Internet Corporation for Assigned Names and Numbers (ICANN).
Хотя существует 13 DNS root nameservers, это не означает, что в системе Root Nameservers
всего 13 машин. Существует 13 типов Root Nameservers
, но по всему миру существует несколько копий каждого из них, которые используют маршрутизацию Anycast
для обеспечения быстрого ответа. Если вы сложите все экземпляры Root Nameservers
, у вас будет более 600 различных серверов.
TLD Nameserver
TLD Nameserver
хранит информацию обо всех доменных именах, которые имеют общее расширение домена (common), например .com, .net или что-то еще, что идет после последней точ ки в URL-адресе. Например, TLD Nameserver
.com содержит информацию для каждого веб-сайта, который заканчивается на «.com». Если пользователь искал google.com, после получения ответа от Root Nameserver
, Recursive Resolver
отправлял запрос на TLD Nameserver
.com, который отвечал, указывая на Authoritative Nameserver
для этого домена.
Управление TLD Nameserver
осуществляется Internet Assigned Numbers Authority (IANA), которое является филиалом ICANN. IANA делит TLD Nameserver
на две основные группы:
- Generic top-level domains: это домены, которые не привязаны к конкретной стране. Некоторые из наиболее известных общих доменов верхнего уровня включают .com, .org, .net, .edu и .gov.
- Country code top-level domains: к ним относятся любые домены, специфичные для страны или штата. Примеры: .uk, .us, .ua и .jp.
Authoritative Nameserver
Когда Recursive Resolver
получает ответ от TLD Nameserver
, этот ответ направит Recursive Resolver
на Authoritative Nameserver
. Authoritative Nameserver
обычно является последним шагом резолвера на пути к IP-адресу. Authoritative Nameserver
имен содержит информацию, специфичную для доменного имени, которое он обслуживает (например, google.com), и может предоставить Recursive Resolver
IP-адрес этого сервера, найденный в записи DNS A, или если в домене есть запись CNAME (alias, псевдоним) - он предоставит Recursive Resolver
alias домена, после чего Recursive Resolver
придется выполнить совершенно новый DNS Lookup, чтобы получить запись от Authoritative Nameserver
(часто запись A, содержащая IP-адрес). Cloudflare DNS распространяет Authoritative Nameserver
, которые оснащены маршрутизацией Anycast, что делает их более надежными.
DNS Records
A
«А» означает «адрес», и это самый фундаментальный тип записи DNS: он указывает IP-адрес данного домена. Например, если вы извлекаете записи DNS Cloudflare.com, запись A в настоящее время возвращает IP-адрес: 104.17.210.9.
example.com | record type: | value: | TTL |
---|---|---|---|
@ | A | 192.0.2.1 | 14400 |
Символ
@
в этом примере указывает, что это запись для корневого домена, а значение14400
— это TTL (время жизни), указанное в секундах. Значение TTL по умолчанию для записей A составляет 14 400 секунд. Это означает, что если запись A обновляется, для вступления в силу требуется 240 минут (14 400 секунд).
Подавляющее большинство веб-сайтов имеют только одну запись A, но их может быть несколько. Некоторые веб-сайты более высокого уровня будут иметь несколько разных записей A как часть метода, называемого циклической балансировкой нагрузки, который может распределять трафик запросов на один из нескольких IP-адресов, на каждом из которых размещен идентичный контент.
AAAA
Запись, содержащая адрес IPv6 для домена (в отличие от записей A, в которых указан адрес IPv4).
CNAME
Запись «канонического имени» (CNAME) указывает из псевдонима домена (alias) в «канонический» домен. Запись CNAME используется вместо записи A, когда домен или поддомен является псевдонимом другого домена. Все записи CNAME должны указывать на домен, а не на IP-адрес.
Например, предположим, что blog.example.com имеет запись CNAME со значением «example.com» (без «blog»). Это означает, что когда DNS-сервер попадает в записи DNS для blog.example.com, он фактически запускает еще один поиск DNS для example.com, возвращая IP-адрес example.com через свою запись A. В этом случае мы бы сказали, что example.com — это каноническое имя (или истинное имя) blog.example.com.
Часто, когда сайты имеют поддомены, такие как blog.example.com или shop.example.com, эти поддомены будут иметь записи CNAME, указывающие на корневой домен (example.com). Таким образом, если IP-адрес хоста изменится, необходимо обновить только запись DNS A для корневого домена, и все записи CNAME будут следовать вместе с любыми изменениями, внесенными в корень.
blog.example.com | record type: | value: | TTL |
---|---|---|---|
@ | CNAME | is an alias of example.com | 32600 |
MX
Запись DNS 'mail exchange' (MX) направляет электронную почту на почтовый сервер. Запись MX указывает, как сообщения электронной почты должны маршрутизироваться в соответствии с простым протоколом передачи почты (SMTP, стандартным протоколом для всей электронной почты). Как и записи CNAME, запись MX всегда должна указывать на другой домен.
example.com | record type: | priority: | value: | TTL |
---|---|---|---|---|
@ | MX | 10 | mailhost1.example.com | 45000 |
@ | MX | 20 | mailhost2.example.com | 45000 |
Числа «приоритета» перед доменами для этих записей MX указывают на предпочтение; более низкое значение «приоритета» является предпочтительным. Сер вер всегда сначала пробует использовать mailhost1, поскольку 10 меньше, чем 20. В случае сбоя отправки сообщения сервер по умолчанию будет использовать mailhost2. Если указать 10 и 10, то эта конфигурация будет работать в качестве балансировщика нагрузки.
NS
NS означает «nameserver», а запись сервера имен указывает, какой DNS-сервер является авторитетным для этого домена (т. е. какой сервер содержит фактические записи DNS). По сути, записи NS сообщают Интернету, куда обратиться, чтобы узнать IP-адрес домена. Домен часто имеет несколько записей NS, которые могут указывать первичный и вторичный серверы имен для этого домена. Без правильно настроенных записей NS пользователи не смогут загрузить веб-сайт или приложение.
example.com | record type: | value: | TTL |
---|---|---|---|
@ | NS | ns1.exampleserver.com | 21600 |
Записи NS никогда не могут указывать на запись канонического имени CNAME.
Nameserver — это тип DNS-сервера. Это сервер, на котором хранятся все записи DNS для домена, включая записи A, записи MX или записи CNAME.
Почти все домены используют несколько серверов имен для повышения надежности: если один сервер имен выйдет из строя или станет недоступен, DNS-запросы могут перейти к другому. Обычно существует один основной сервер имен и несколько вторичных серверов имен, которые хранят точные копии записей DNS на первичном сервере. Обновление основного сервера имен также приведет к обновлению вторичных серверов имен.
При использовании нескольких серверов имен (как в большинстве случаев) в записях NS должно быть указано более одного сервера.
PTR
Запись DNS pointer (сокращенно PTR) предоставляет имя домена, связанное с IP-адресом. Запись DNS PTR является полной противоположностью записи «A», которая предоставляет IP-адрес, связанный с именем домена.
Записи DNS PTR используются при обратном поиске DNS. Когда пользователь пытается получить доступ к доменному имени в своем браузере, происходит поиск DNS, сопоставляющий имя домена с IP-адресом. Обратный поиск DNS является противоположностью этого процесса: это запрос, который начинается с IP-адреса и ищет имя домена.
Обычно PTR используют при:
- Anti-spam: Некоторые фильтры защиты от спама электронной почты используют обратный DNS для проверки доменных имен адресов электронной почты и определения вероятности использования связанных IP-адресов законными серверами электронной почты.
- Troubleshooting email delivery issues: Поскольку фильтры защиты от спама выполняют эти проверки, проблемы с доставкой электронной почты могут возникнуть из-за неправильной настройки или отсутствия записи PTR. Если в домене нет записи PTR или если запись PTR содержит неправильный домен, службы электронной почты могут блокировать все электронные письма из этого домена.
- Logging: Системные журналы обычно записывают только IP-адреса; обратный поиск DNS может преобразовать их в доменные имена для журналов, которые более удобны для чтения человеком.
SOA
Запись DNS Start Of Authority (SOA) хранит важную информацию о домене или зоне, такую как адрес электронной почты администратора, время последнего обновления домена и время ожидания сервера между обновлениями.
Всем зонам DNS необходима запись SOA, чтобы соответствовать стандартам IETF(Internet Engineering Task Force). Записи SOA также важны для передачи зон.
Name | example.com |
---|---|
record type | SOA |
MNAME | ns.primaryserver.com |
RNAME | admin.example.com |
SERIAL | 1111111111 |
REFRESH | 86400 |
RETRY | 7200 |
EXPIRE | 4000000 |
TTL | 11200 |
Значение «RNAME» здесь представляет адрес электронной почты администратора, что может сбивать с толку, поскольку в нем отсутствует знак «@», но в записи SOA admin.example.com эквивалентен admin@example.com.
SRV
Запись DNS service (SRV) определяет хост и порт для определенных служб, таких как передача голоса по IP (VoIP), обмен мгновенными сообщениями и т. д. Большинство других записей DNS указывают только сервер или IP-адрес, но записи SRV также включают порт по этому IP-адресу. Некоторые интернет-протоколы для работы требуют использования записей SRV.
service | XMPP |
---|---|
proto* | TCP |
name** | example.com |
TTL | 86400 |
class | IN |
type | SRV |
priority | 10 |
weight | 5 |
port | 5223 |
target | server.example.com |
*Short for "protocol," as in transport protocol.
**Domain name.
TXT
Текстовая запись DNS (TXT) позволяет администратору домена вводить текст в систему доменных имен (DNS). Запись TXT изначально предназначалась для хранения удобочитаемых заметок. Однако теперь в записи TXT также можно помещать некоторые машиночитаемые данные. Один домен может иметь множество записей TXT.
example.com | record type: | value: | TTL |
---|---|---|---|
@ | TXT | This is an awesome domain! Definitely not spammy. | 32600 |
Сегодня двумя наиболее важными вариантами использования записей DNS TXT являются предотвращение спама в электронной почте и проверка владения доменом, хотя записи TXT изначально не предназначались для этих целей.