Что такое dns серверы ipv4
Давайте уже разберемся в DNS
Внимательный читатель найдет на этой картинке IPv6
Люди часто озадачены доменами. Почему мой сайт не работает? Почему эта хрень поломана, ничего не помогает, я просто хочу, чтобы это работало! Обычно, вопрошающий или не знает про DNS, или не понимает фундаментальных идей. Для многих DNS — страшная и непонятная штука. Эта статья — попытка развеять такой страх. DNS — это просто, если понять несколько базовых концепций.
Что такое DNS
DNS расшифровывается как Domain Name System. Это глобальное распределенное хранилище ключей и значений. Сервера по всему миру могут предоставить вам значение по ключу, а если им неизвестен ключ, то они попросят помощи у другого сервера.
Базовые штуки
Давайте взглянем на маппинг между именем и адресом:
Здесь есть только одна интересная деталь: информация о самом запросе. Говорится, что мы запросили запись и получили ровно один ответ. Вот:
Оставшаяся часть ответа описывает сам ответ:
Как видите, при обычном DNS-запросе происходит куча всего. Каждый раз, когда вы открываете веб-страницу, браузер делает десятки таких запросов, в том числе для загрузки всех внешних ресурсов вроде картинок и скриптов. Каждый ресурс отвечает за минимум один новый DNS-запрос, и если бы DNS не был рассчитан на сильное кэширование, то трафика генерировалось бы очень много.
Корневые DNS-сервера обслуживаются различными компаниями и государствами по всему миру. Изначально их было мало, но интернет рос, и сейчас их 13 штук. Но у каждого из серверов есть десятки или сотни физических машин, которые прячутся за одним IP.
Другие типы
Что не так с CNAME
Запросы к другим серверам
Давайте представим, что конфигурация DNS испорчена. Вам кажется, что вы исправили проблему, но не хотите ждать когда обновится кэш чтобы удостовериться. С помощью dig можно сделать запрос к публичному DNS-серверу вместо своего дефолтного, вот так:
Типичные ситуации
Давайте рассмотрим типичные ситуации, знакомые многим веб-разработчикам.
Редирект домена на www
Этот IP принадлежит Namecheap’у, и там крутится маленький веб-сервер, который просто делает перенаправление на уровне HTTP на адрес http://www.iskettlemanstillopen.com :
CNAME для Heroku или Github
Wildcards
Заключение
Надеюсь, теперь у вас есть базовое понимание DNS. Все стандарты описаны в документах:
Есть еще пара интересных RFC, в том числе 4034, который описывает стандарт DNSSEC и 5321, который описывает взаимосвязь DNS и email. Их интересно почитать для общего развития.
Что такое DNS-сервер и для чего он нужен?
Что такое DNS-сервер и для чего он нужен?
DNS-сервер — это сервер системы DNS (Domain Name System), отвечающий за сопоставление имён доменов Интернета с IP-адресами компьютеров, на которых эти домены физически находятся. DNS-серверы позволяют пользователям набирать в браузере обычные адреса сайтов и избавляют от необходимости запоминать IP-адреса.
Что такое DNS-сервер простыми словами
Как настроить DNS-серверы
Основные DNS записи
Что такое DNS-сервер простыми словами
Сеть Интернет — это огромное количество сайтов, расположенных на физически существующих компьютерах и серверах. Каждая из этих машин имеет уникальный идентификатор во всемирной сети — IP-адрес. Он состоит из четырёх групп цифр, разделённых точками. Чтобы открыть сайт, нужно обратиться к серверу, на котором он находится, по IP-адресу. Применительно к обычным пользователям это выглядит нереалистично. Каждый день многие из нас посещают десятки и сотни сайтов — и совершенно невозможно допустить, чтобы мы запоминали десятки и сотни последовательностей цифр. Об этой проблеме задумались давно, и ещё в 80-годах разработали её решение — систему доменных имён, или DNS (Domain Name System).
Серверы, входящие в DNS, хранят в себе специальные таблицы соответствий. Доменные имена, то есть привычные всем буквенные имена веб-сайтов, сопоставлены в них с IP-адресами серверов, на которых эти сайты физически находятся.
Проще говоря, любой server системы DNS — это что-то вроде раздела «Контакты» смартфона, в котором имена людей сопоставлены с их телефонными номерами. Вам не нужно вспоминать цифры — вы просто выбираете человека, и вот вы уже разговариваете с ним. DNS-серверы работают точно так же! Впрочем, это — весьма упрощённое описание. Если углубиться в вопрос, мы увидим немало нюансов.
Как работает DNS
Система Domain Name System работает следующим образом. Вы решили посетить тот или иной сайт и вводите в адресной строке браузера его URL. Строго говоря, узла с таким названием во всемирной сети не существует — как было сказано выше, в ней есть лишь узлы с числовыми IP-адресами. Именно поэтому первое, что делает браузер — обращается к DNS-серверу, который указан в настройках вашего подключения (о том, как задать такие настройки, будет подробно рассказано далее). Сервер, получив доменное имя, ищет в таблице соответствующий ему IP-адрес, и, найдя его, возвращает вашему клиентскому устройству. Лишь после этого браузер обращается непосредственно к узлу, на котором хранится интересующий вас сайт, и по протоколу HTTP получает его содержимое, которое и отображается на вашем экране.
Наша планета огромна, и количество узлов, на которых хранится контент сайтов, не поддаётся исчислению. Невозможно представить некий единый DNS-сервер, который хранил бы в себе информацию абсолютно обо всех устройствах, содержащих веб-контент. Его и не нужно представлять — в действительности в мире существует великое множество DNS-серверов разных уровней, каждый из которых отвечает лишь за определённую, пусть и достаточно большую, зону, и содержит информацию лишь о близлежащих (с известной долей условности) сайтах. Но что произойдёт, если вы, находясь, например, в Новосибирске, решите посетить веб-сайт, контент которого физически расположен в Рио-де-Жанейро? Сначала запрос браузера попадёт на DNS-сервер, указанный в ваших локальных настройках. Соответствия между полученным бразильским доменным именем и каким-либо IP-адресом на нём не окажется. Несмотря на это, сервер не оставит запрос без внимания — он перенаправит его на вышестоящий, в котором необходимое соответствие вполне может найтись. Этот процесс будет повторяться столько раз, сколько понадобится для того, чтобы наконец выяснить IP-адрес сайта в Рио-де-Жанейро. Полученная информация по цепочке DNS-серверов вернётся обратно к вашему браузеру в Новосибирске, и он без проблем сможет открыть нужный вам бразильский сайт.
Система DNS, как мы видим, сложна и интеллектуальна — но не менее умны и современные браузеры. Допустим, на следующий день вы вновь решили посетить тот же сайт в солнечной Бразилии. В этот раз ваш запрос уже не будет передаваться по длинной цепочке от одного DNS-сервера к другому — браузер просто поднимет IP-адрес сайта из своего локального кеша, в который он записал его вчера, и соединение будет установлено быстрее. Миллионы браузеров по всему миру используют кеш, благодаря чему нагрузка на систему DNS существенно снижается.
Особого внимания заслуживает такое понятие, как DNS-зона. Выше мы рассмотрели связь только между доменным именем и IP-адресом сайта. Существуют, однако, и другие объекты — в частности, почтовые серверы и поддомены сайта. Они напрямую связаны с основным доменным именем, но вполне могут иметь разные IP-адреса. Как установить соответствие между всеми перечисленными объектами? Для этого на DNS-сервере создаётся специальный файл, в котором они и сопоставляются. Этот файл представляет собой описание DNS-зоны.
Как настроить DNS-серверы
Рассмотрим настройку DNS-серверов на примере одной из наиболее распространённых операционных систем — Windows 10. Адреса серверов задаются в разделе настроек, посвящённом доступу в Интернет, поэтому нас интересует именно он.
В системном трее (справа внизу) найдите значок подключения к Интернету. Кликните по нему правой кнопкой мыши и выберите пункт «Открыть «Параметры сети и Интернет». Перед вами появится окно с многочисленными разделами. В группе «Изменение сетевых параметров» найдите раздел «Настройка параметров адаптера» и откройте его, кликнув левой кнопкой мыши.
Перед вами — окно, в котором собраны все сетевые подключения компьютера. Вам нужно найти то из них, через которое осуществляется доступ в Интернет. Автор этой статьи пользуется проводным подключением, и соответствующая иконка называется «Ethernet/Network connection». Кликните правой кнопкой мыши по иконке активного подключения и выберите в появившемся контекстном меню нижний пункт — «Свойства».
В новом диалоговом окне вы увидите список компонентов, которые использует ваше активное подключение. Найдите в нём строчку «IP версии 4 (TCP/IPv4)», кликните по ней левой кнопкой мыши, а затем нажмите кнопку «Свойства», расположенную чуть ниже. Вы увидите окно, до которого и нужно было добраться. Именно в нём задаются адреса DNS-серверов (нижняя группа полей).
Обратите внимание на то, что операционная система даёт вам два варианта на выбор — получать адрес серверов DNS в автоматическом режиме или использовать желаемые адреса, которые можно ввести вручную. Если вы выберете первый вариант, все запросы из браузера будут отправляться интернет-провайдеру, а он, в свою очередь, сам будет назначать тот или иной DNS-сервер (причём с наибольшей вероятностью это будет сервер самого провайдера). Этот вариант удобен тем, что вам ничего не нужно прописывать — сайты должны открываться без проблем. У него, однако, есть и недостатки. Если DNS-сервер или провайдер в целом по той или иной причине «ляжет», вы фактически лишитесь доступа в Интернет до устранения проблемы — браузер не будет получать IP-адреса веб-сайтов. Кроме того, DNS-сервер провайдера может умышленно отдавать неверные ответы, и вы будете видеть не те сайты, которые хотели бы открыть (это, в частности, возможно при блокировке Роскомнадзором интересующего вас ресурса). Обойти эти проблемы можно, если выбрать второй вариант и прописать адреса предпочитаемого и альтернативного DNS-сервера вручную.
Закономерен вопрос: какие адреса серверов можно указать в настройках? Вот несколько наиболее распространённых и популярных вариантов:
l серверы Google: предпочитаемый — 8.8.8.8, альтернативный — 8.8.4.4;
l серверы Яндекс: предпочитаемый — 77.88.8.8, альтернативный — 77.88.8.2;
l серверы Яндекс, содержащие записи только о проверенных сайтах и защищающие от злоумышленников: предпочитаемый — 77.88.8.8, альтернативный — 77.88.8.2;
l семейные серверы Яндекс (то же, что в пункте выше, за минусом сайтов со «взрослым» контентом: предпочитаемый — 77.88.8.3, альтернативный — 77.88.8.7;
l серверы OpenDNS: предпочитаемый — 208.67.222.222, альтернативный — 208.67.220.220.
Это — далеко не полный перечень существующих DNS-серверов, которые можно указать вручную. Вооружившись терпением, вы сможете найти в Интернете и другие адреса.
Закончив настройку, нажмите кнопку «ОК» и закройте диалоговое окно активного подключения. Проверьте, корректно ли открываются веб-сайты в вашем браузере.
Основные DNS записи
Каждый DNS-сервер содержит так называемые ресурсные записи, необходимые для его работы. Перечень основных записей с расшифровкой их значений представлен ниже.
A: IP-адрес сервера, на котором расположен домен, по стандарту IPv4.
AAA: IP-адрес по стандарту IPv6.
TXT: произвольные текстовые сведения о домене. Длина этой записи не может превышать 255 символов.
MX: информация о почтовом сервере в формате mail.company.com. Если у домена несколько почтовых серверов, что не редкость, рядом с каждой записью указывается число от 0 до 65535, обозначающее приоритет (наивысший — 0). Считается стандартом указывать 10-й приоритет для первого сервера почты.
CNAME: так называемое каноническое имя хоста. Необходимо при изменении имени сервера для перенаправления запроса на иное доменное имя. Содержит поля Alies и Canonical name (в первом указывается старое имя, во втором — новое, на которое должно идти перенаправление).
_Service._Proto.Name: запись, состоящая из нескольких элементов. Здесь Service означает название службы (например, ldap), Proto — протокол для подключения клиентов (например, tcp), Name — доменное имя, к которому привязана служба. Кроме того, указываются приоритет (по аналогии с MX), относительный вес, номер порта и доменное имя службы.
SOA: главная запись о домене, содержащая его имя и срок жизни информации о нём. Считается стандартом указывать срок жизни 1 сутки (задаётся в секундах, которых в сутках 86400).
Что такое DNS: три буквы, на которых держится интернет
Чтобы попасть на нужный сайт в интернете, мы вбиваем в строку браузера его доменное имя. Например, если набрать mcs.mail.ru, вы попадете на сайт нашей облачной платформы. Но доменное имя сайта — не его настоящий адрес. На самом деле адрес сайта состоит из чисел и называется IP-адресом.
Вам не нужно знать его, чтобы открыть нужную интернет-страницу, потому что работает DNS. Давайте разберем принцип работы DNS и посмотрим, что это за технология.
DNS — что это такое?
Служба доменных имен (DNS, domain name system) — это стандартный протокол, который позволяет пользователям получать доступ к веб-сайтам, используя удобочитаемые адреса. Как телефонная книга позволяет найти имя контакта и узнать его телефонный номер, так и DNS позволяет ввести адрес веб-сайта и автоматически определить его IP-адрес, то есть уникальный идентификатор конкретного устройства (сервера) в компьютерной сети.
Без DNS рухнул бы интернет — люди не могли бы получить доступ к интернет-серверам через понятные URL-адреса, то есть ссылки. Чтобы попасть на конкретный сайт, пришлось бы запоминать и вводить последовательность чисел IP-адреса, которая, к тому же, иногда меняется, в отличие от URL. То есть служба Domain Name System необходима для сопоставления понятных людям имен сайтов с числами, понятными компьютерам.
Протокол DNS позволяет нескольким доменным именам соответствовать одному IP-адресу — это можно использовать для виртуального хостинга, когда несколько сайтов обслуживаются с одного хоста. Также одному доменному имени может соответствовать множество IP-адресов, чтобы распределить нагрузку на несколько серверов.
Каждый раз когда вы подключаетесь к локальной сети, интернет-провайдеру или Wi-Fi, модем или роутер шлет конфигурацию сети на ваше устройство, включая адреса одного или нескольких DNS-серверов.
Что такое DNS-серверы
Это серверы, которые хранят информацию о том, какому IP-адресу какое доменное имя соответствует — что-то вроде физической телефонной книги, только вместо имени и номера телефона там записаны доменные имена и IP-адреса. В интернете таких серверов много.
Предположим, что вы или кто-то другой захотели разместить свой сайт в интернете. Сначала надо придумать и зарегистрировать доменное имя (коротко — домен). Но для работы сайта этого недостаточно: регистратору также нужно доменное имя DNS-сервера, на котором будет храниться информация о вашем домене и его IP-адресе. Этот DNS-сервер станет полномочным сервером имен для вашего сайта и первичным источником данных о его адресе для DNS-системы, где «записывается» путь к нему.
Из чего состоит служба DNS и какова роль DNS-серверов
Назначение DNS-серверов не только в хранении информации о соответствии IP-адресов и доменных имен. Они также могут кэшировать (то есть сохранять) IP-адреса, запрошенные пользователем ранее.
Например: сайт, который вы посещаете, географически расположен далеко от вас. И где-то есть такой же удаленный от вас DNS-сервер, на котором хранится информация о доменном имени и IP-адресе этого сайта, его полномочный сервер имен. Если все время обращаться за этим IP-адресом к удаленному DNS-серверу, загрузка сайта будет занимать много времени. Чтобы решить такую проблему, информацию о часто посещаемых сайтах сохраняет ближайший к вашему компьютеру DNS-сервер, как правило, он находится у вашего интернет-провайдера. В результате другие пользователи, которые обращаются к этому же адресу через этот же DNS-сервер, будут получать IP-адрес уже из его кэша, это гораздо быстрее.
То есть запрос, который вы вводите в строку браузера, сначала отправляется на ближайший DNS-сервер. Если в кэше нужного IP-адреса нет, он перенаправляет запрос дальше — к вышестоящим DNS-серверам. Они передают запрос, пока он не попадет на первичный DNS-сервер сайта, где хранится нужный IP-адрес.
Возврат IP-адреса хоста в ответ на запрос доменного имени называют преобразованием его доменного имени в IP-адрес. Когда все работает хорошо, этот процесс происходит менее чем за секунду.
Информация об IP-адресах тех сайтов, куда вы заходили, может храниться не только на ближайшем DNS-сервере, но и в кэше вашего браузера или операционной системы. Это позволяет быстрее получать ответ на запрос.
Как работает DNS: посмотрим, что происходит с вашим запросом
Дальше мы немного углубимся в детали. Давайте представим, что вы ввели в браузер запрос mcs.mail.ru/cloud-servers. Этот адрес состоит из нескольких частей, с каждой из которых происходит отдельная история:
Посмотрим, какой путь этот запрос может пройти.
В итоге браузер получил ответ, пользователь видит веб-страницу. Теперь основная задача DNS-сервера выполнена.
Упрощенная схема работы DNS
Что происходит, когда IP-адрес меняется
Иногда IP-адрес, соответствующий доменному имени, меняется. Например, при смене хостинга. В отличие от бумажной телефонной книги, DNS-записи могут обновляться и изменяться. Поэтому при смене IP-адреса пользователи продолжают видеть серверы и сайты на них. Пользователи пользуются тем же самым, привычным им доменным именем, но попадают на новый IP-адрес сервера.
После того как вы зарегистрируете новое доменное имя, информация об этом обновляется, что занимает около 12-36 часов. Этот период называют распространением DNS.
Варианты использования DNS
Классическое использование DNS — преобразование доменного имени в URL-адресе в соответствующий IP-адрес. Без DNS невозможна работа сайтов, приложений, мессенджеров, электронной почты, виртуальных частных сетей (VPN), компьютерных игр, интернета вещей и других сервисов.
Если вы используете какую-либо из вышеперечисленных служб, вы будете использовать DNS для связи с ней — потребуется настроить DNS, чтобы предоставить пользователям доступ к вашим услугам.
Есть и другие возможности использования DNS:
Что такое DNS-сервер простыми словами
Вы когда-нибудь задавались вопросом, как браузер понимает, какую именно страницу открыть, когда вы вводите в строку адрес сайта? На самом деле, это глубокий вопрос, решать который стоит не непосредственно с перехода на сайты, а со связи компьютеров между собой.
В 70-х — 90-х годах 20 века существовала сеть под названием ARPANET. Это была попытка объединить множество компьютеров министерством обороны США для возможности передачи информации во время войны. Важность такого подхода заключалась в быстрой передаче информации на дальние расстояния. Впоследствии принципы работы ARPANET легли в основу современного интернета.
Изначально вся сеть объединяла компьютеры в четырёх различных институтах США:
Учёные этих институтов быстро пришли к единому мнению, что передавать друг другу информацию об исследованиях удобнее при помощи новой сети. Для этого было достаточно знать идентификатор того компьютера, на который передаётся сообщение. Сейчас такие идентификаторы называются IP-адресами. У каждого устройства в интернете есть такой идентификатор и именно по нему обращаются устройства друг к другу.
В самом начале компьютеров, подключённых к сети, было несколько десятков, и их идентификаторы было легко запомнить. Можно было записать эти адреса в блокнот и использовать его так же, как и телефонные книги.
Время шло, и уже к середине 80-х годов вместо нескольких десятков компьютеров сеть стала насчитывать несколько тысяч. И каждый из них имел уникальный идентификатор, который становилось всё сложнее учитывать вручную или запоминать. Необходима была система, которая позволит очеловечить имена компьютеров и хранить все адреса в одном месте, чтобы каждый компьютер в сети имел один и тот же набор всех идентификаторов.
Файл hosts — как первый шаг к созданию DNS
Для решения задачи разработчики решили использовать словарь, который связывал уникальное имя и IP-адрес каждого компьютера в сети. Таким словарём стал файл hosts.txt, который и отвечал за привязку IP-адреса к имени компьютера. Файл лежал на сервере Стэнфордского исследовательского института, и пользователи сети регулярно вручную скачивали этот файл на свои компьютеры, чтобы сохранять актуальность словаря, ведь новые компьютеры появлялись в сети почти каждый день.
Выглядел hosts.txt тогда (да и сейчас) таким образом:
При наличии такого файла на компьютере пользователя для связи с компьютером Майка, можно было не запоминать цифры, а использовать понятное латинское имя «MIKE-STRATE-PC».
Посмотрим, как выглядит файл и попробуем добавить туда новое имя, чтобы подключиться к компьютеру с использованием данного имени. Для этого отредактируем файл hosts. Вы можете найти его на своём компьютере по следующему адресу:
Компьютеру с IP-адресом 192.168.10.36, который находится внутри локальной сети мы указали имя «MIKE-STRATE-PC». После чего можно воспользоваться командой ping, которая пошлёт специальный запрос на компьютер Майка и будет ждать от него ответа. Похоже на то, как вы стучитесь в дверь или звоните в звонок, чтобы узнать, «есть ли кто дома?» Такой запрос можно послать на любой компьютер.
По мере развития сети и «обрастания» её новыми клиентами, такой способ становился неудобным. Всем пользователям компьютеров было необходимо всё чаще скачивать свежую версию файла с сервера Стэнфордского исследовательского института, который обновлялся вручную несколько раз в неделю. Для добавлений же новых версий было необходимо связываться с институтом и просить их внести в файл новые значения.
В 1984 году Пол Мокапетрис (Paul Mockapetris) описал новую систему под названием DNS (Domain Name System / Система доменных имён), которая была призвана автоматизировать процессы соотнесения IP-адресов и имён компьютеров, а также процессы обновления имён у пользователей без необходимости ручного скачивания файла со стороннего сервера.
Работа DNS в сети интернет
В настоящее время интернет окружает нас повсюду — мы используем его в мобильных и настольных устройствах. Системы видеонаблюдения и даже чайники взаимодействуют друг с другом с помощью интернета, и для корректной связи с ними нужна система, с помощью которой пользователи смогут одним запросом в адресной строке подключиться к нужному сервису. Всё это ложится на плечи системы DNS, которая внутри себя хранит намного больше информации, чем просто IP-адрес и название устройств. Записи в DNS также отвечают за корректную отправку электронных писем, связывают друг с другом разные домены и доменные зоны.
DNS является распределённой системой, а значит она имеет множество узлов, каждый из которых ответственен за свою зону. Такое возможно благодаря тому, что сама по себе структура DNS является иерархической, то есть выделяет зоны ответственности, где каждый родитель знает о расположении своего дочернего сервера, и знает зону его ответственности.
Рассмотрим работу DNS и её составных частей поближе.
Терминология
Основными компонентами DNS являются:
Домен (доменное имя) — символьное имя для обозначения сервера в сети интернет. Доменные имена являются иерархической структурой, в которой каждый уровень отделяется точкой. Основными уровнями являются:
Корневой DNS-сервер — система, знающая расположение (IP-адреса) DNS-серверов доменов верхнего уровня.
Ресурсная запись — единица информации DNS-сервера. Каждая ресурсная запись имеет несколько полей:
Подключение
Необходимо понимать, что доменное имя — это всего лишь абстракция для людей. Сам компьютер и приложения (например, браузер) обращается к сервисам внутри сети интернет только по IP-адресам.
Возможны два варианта событий:
Так как домен является иерархической структурой, и все DNS-сервера знают IP-адреса корневых DNS-серверов, то к ним и происходит запрос на получение IP-адреса домена.
В соответствии со своей зоной ответственности DNS-сервер домена верхнего уровня возвращает IP-адрес DNS-сервера домена hexlet, на который посылается запрос на получение IP-адреса поддомена ru.
DNS-сервер возвращает IP-адреса поддомена ru, после чего DNS-сервер нашего провайдера возвращает полученный адрес на наш компьютер, который уже может обратиться к домену ru.hexlet.io по его IP-адресу.
Рекурсия в DNS
Можно заметить, что оба описанных выше варианта сильно различаются: в первом случае мы просто послали запрос и получили ответ, а во втором — возникла необходимость идти от самого корневого домена в процессе поиска нужной нам записи. Такой процесс является рекурсивным, потому что ближайший DNS-сервер непрерывно посылает запросы к другим DNS-серверам до тех пор, пока не получит необходимые ресурсные записи. Данный процесс можно визуализировать следующим образом:
При запросах 1 и 2 ближайший сервер будет получать информацию о местонахождении DNS-серверов, которые входят в зону ответственности того сервера, на который был послан запрос. При запросе 3 будут получены необходимые ресурсные записи домена hexlet и его поддоменов.
Рекурсивный поиск — это достаточно долгая операция, которая к тому же сильно нагружает сеть и сами DNS-сервера. Именно для того, чтобы избавиться от рекурсии каждый DNS-сервер кеширует информацию о записях, которые получает, для быстрой отдачи этой информации пользователю.
Как видно, рекурсивный поиск предполагает нахождение конечного ответа на наш запрос путём поиска записи по всем необходимым DNS-серверам, начиная с корневого. В противовес такому способу также существует итеративный запрос, который в отличие от рекурсивного выполняет всего лишь одну итерацию — это запрос ближайшему DNS-серверу, от которого мы можем получить как закешированный ответ, так и данные той зоны, за которую он ответственен. Важно отметить, что итеративный запрос предполагает всего один такой запрос.
Чаще всего в интернете DNS-сервера умеют посылать рекурсивные запросы, потому что в таком случае ответ можно закешировать, что в дальнейшем позволит снизить нагрузку как на сам сервер, так и на другие DNS-сервера. Время, на которое DNS-сервер кеширует информацию, указывается в ресурсной записи DNS, о которой сейчас пойдёт речь.
Ресурсные записи DNS
Современный интернет подразумевает не только получение IP-адреса по доменному имени, но и пересылку электронной почты, подключение дополнительных сервисов аналитики к сайту, настройку защищённого протокола HTTPS. Это чаще всего делается с помощью ресурсных записей DNS.
Рассмотрим, какие ресурсные записи используются, и на что они указывают. Основными ресурсными записями DNS являются:
A-запись — одна из самых важных записей. Именно эта запись указывает на IP-адрес сервера, который привязан к доменному имени.
MX-запись — указывает на сервер, который будет использован при отсылке доменной электронной почты.
NS-запись — указывает на DNS-сервер домена.
CNAME-запись — позволяет одному из поддоменов дублировать DNS-записи своего родителя. Делается это для того, чтобы перенаправить запрос с одного домена на другой (чаще всего для перенаправления домена с поддоменом www на домен без такого поддомена).
TXT-запись — в этой записи хранится текстовая информация о домене. Часто используется для подтверждения прав на владение доменом, посредством добавления определённой строки, которую присылает нам интернет-сервис.
Ресурсные записи почти всегда одинаковые, но для некоторых записей могут появляться другие поля, например в MX-записях также присутствует значение приоритета. В основном ресурсные записи имеют следующую структуру:
Имя записи — указывается домен, которому принадлежит данная ресурсная запись.
TTL (time to live / время жизни) — время в секундах, на которое будет закешировано значение ресурсной записи. Это необходимо для разгрузки DNS-серверов. Благодаря кешированию и возможна ситуация, что ближайший DNS-сервер знает IP-адрес запрашиваемого домена.
Класс — предполагалось, что DNS может работать не только в сети интернет, поэтому в записи указывается и её класс. На сегодняшний день поддерживается только одно значение — IN (Internet).
Тип — указывает тип ресурсной записи, основные из которых были разобраны выше.
Значение — непосредственно значение ресурсной записи. В зависимости от типа ресурсной записи значения могут быть представлены в разном виде.
Посмотрим, в каком виде эти записи хранятся на DNS-серверах на примере домена ya.ru. Для этого воспользуемся утилитой dig, которая получает все доступные ресурсные DNS-записи от DNS-сервера и выводит их пользователю.
Утилита dig является DNS-клиентом и входит в состав одного из самых распространённых DNS-серверов BIND.
Пример реальных записей DNS
Не пугайтесь такого длинного вывода. Уже сейчас можно понять почти всё, что тут указано. Разберём вывод каждой секции более детально.
Вывод состоит из нескольких частей:
Шапка запроса
Здесь указывается проставленные флаги нашего запроса, количество запросов и ответов, а также другая служебная информация.
Секция запроса
В секции запроса указывается домен, к которому происходит обращение, класс записи и те записи, которые мы хотим получить. ANY указывает на то, что нужно вывести все доступные ресурсные записи, но если вы хотите поэкспериментировать с утилитой сами, то можете с помощью специального ключа получить вывод только конкретных записей, которые интересуют в настоящий момент.
Секция ответа
Секция ответа достаточно большая, поэтому для удобства разобьём её по типам ресурсных записей.
Как запись A, так и AAAA-запись указывают на IP-адрес, который привязан к нашему домену. A-запись указывает IP в формате IPv4, а запись AAAA — в формате IPv6.
MX-запись также имеет параметр приоритета. Так как серверов для отправки почты может быть несколько, то и записей может быть много, поэтому для определения основного сервера указывается приоритет записи. Чем меньше число, тем выше приоритет.
Запись SOA (Start of Authority) указывает на несколько различных параметров:
Бывают и некоторые более специфичные ресурсные записи, о которых здесь не было речи, но это не значит, что они бесполезны. Полный перечень таких записей всегда можно найти в документации (например по DNS-серверу BIND).
Выводы
DNS-сервера сейчас составляют основу всего интернета и используются почти в каждом действии пользователя в сети, будь то переход на сайт, отправка электронной почты, работы с интернет-приложением на телефоне и так далее. Поэтому знания о принципах работы DNS-серверов и основных ресурсных записях, благодаря которым и возможно перемещение по сети интернет, являются важными для разработчика.