Основная задача DNS-серверов — хранить информацию о доменах и предоставлять ее пользователям по запросу, а также кэшировать DNS-записи других серверов. Это именно та «книга контактов», о которой мы писали выше.
Что такое DNS и как это работает
DNS (Domain Name System) — это система доменных имен. Он играет большую роль в работе современного интернета. Следите ли вы за новостями на своем любимом сайте, слушаете ли музыку онлайн или просматриваете социальные сети — он незримо присутствует везде.
Система доменных имен возникла на заре развития Интернета. В те времена для привязки IP-адреса к имени использовался простой текстовый файл HOSTS.TXT. Чтобы узнать имя хоста и адрес подключения или ввести собственные данные через текстовый файл, можно позвонить в информационный центр сети. Когда стало понятно, что это несколько неудобно, появились первые DNS-серверы.
Чтобы понять, зачем нужна система доменных имен, рассмотрим, что такое Интернет. В общем, это бесконечное количество устройств (приборов, компьютеров, серверов — или сокращенно хостов), которые соединены между собой общим каналом связи — под землей, под водой, в воздухе. Для того чтобы устройства могли общаться друг с другом, каждому из них необходим уникальный идентификатор. Для этого используется интернет-протокол, или IP-адрес, как мы любим его называть.
IPv4 : 82.202.175.68
IPv6 : 2a00:1450:4010:c08::66
Каждый компьютер или сервер, доступный через Интернет, имеет свой IP-адрес. Чтобы подключиться к устройству в сети, необходимо знать его точный адрес.
Дальше будет лучше. Записывайте веб-сайты, которые вы посещаете каждый день. В каком формате вы их помните? Вероятно, это алфавитные имена — доменные имена, а не IP-адреса:
Если для подключения к устройству в сети нужен IP, почему работают домены? Именно здесь в дело вступает система доменных имен, основная задача которой (с точки зрения рядового пользователя Интернета) заключается в преобразовании символических доменных имен в числовые IP-адреса. А иногда и наоборот, в зависимости от типа DNS-запроса. DNS можно описать как телефонную книгу Интернета — эта система помогает найти точный адрес сервера, на котором размещено доменное имя.
Современная структура DNS похожа на дерево:
- У него есть корень (корневой DNS-сервер), в котором хранится информация обо всех серверах следующего уровня. На самом деле корень состоит из нескольких серверов. Корневой DNS-сервер предоставляется IANA, ассоциацией, ответственной за организацию интернета. Однако отдельные корневые серверы могут управляться разными компаниями (например, один такой сервер обслуживается компанией Cloudflare).
- Существуют ответвления — следующий уровень вверх, DNS-серверы домена верхнего уровня (TLD), которые также отвечают за хранение информации о серверах следующего уровня, но для конкретных доменных зон: .RU, .РФ, .SU, .COM, .NET и так далее.
Независимо от этого, вы можете выбрать кэширующие серверы DNS или резолверы DNS. Они выполняют две основные функции:
- Они выполняют запросы к DNS-серверам более высокого уровня,
- Они хранят в своей памяти (кэше) результаты этих запросов.
Это позволяет им взять на себя роль посредника между вами и наиболее важными компонентами системы доменных имен. DNS-резолверы сокращают время, необходимое для разрешения имен: Вместо того чтобы каждый раз ждать ответа с другого конца света, DNS-резольвер выполняет запрос один раз и сохраняет информацию в своей памяти. При повторных запросах он не выполняет новый полный DNS-запрос, а обращается к кэшу и возвращает оттуда запрошенный адрес домена.
Как работает DNS?
Вся магия начинается, когда вы вводите адрес сайта в адресную строку браузера и нажимаете Enter. Например, введите firstvds.ru
- Сначала браузер проверяет свой кэш, чтобы узнать, доступен ли еще IP-адрес запрашиваемого сайта после предыдущего соединения. Если адрес найден, браузер делает прямой запрос, используя этот адрес.
- Если адрес не найден, браузер посылает запрос к парсеру DNS, встроенному в операционную систему. Он также проверяет свой собственный кэш и кэш операционной системы. Если адрес найден, он возвращается браузеру.
- Если адрес не найден в памяти, ваш DNS-резольвер отправляет запрос на DNS-резольвер вашего интернет-провайдера. Его адрес автоматически присваивается вашей системе. Также распространены резолверы Google 8.8.8.8 и 4.4.4.4. Резолвер провайдера также проверяет свой кэш на предмет того, хранится ли там адрес запрашиваемого ресурса. Если адрес найден, он возвращается нашему решателю.
- В противном случае DNS-резольвер провайдера проверяет корень и запрашивает DNS-серверы корня. Они неявно идентифицируются в каждом домене — точкой в конце имени, которую мы обычно опускаем для удобства: firstvds.ru. Корневые серверы проверяют себя на наличие информации о введенном имени — точнее, домене верхнего уровня. Если информация найдена, корневой сервер возвращает адрес DNS-сервера доменной зоны (TLD DNS-сервер). Если нет, возвращается ошибка: Это означает, что запрашиваемая зона не существует.
- Получив адрес сервера зоны, резольвер посылает ему запрос. Сервер зоны проверяет, есть ли у него информация о домене второго уровня — FIRSTVDS.RU. Если такой домен существует, сервер TLD возвращает адрес действующего сервера, где хранится информация об этом домене — его ресурсные записи. Если домен не существует, сервер возвращает ошибку, что означает, что домен не был зарегистрирован, еще не добавлен в реестр или еще не назначен серверу имен.
- После того как действующий сервер распознал адрес, преобразователь запрашивает его — для того же домена второго уровня. Авторитетный сервер проверяет свою базу данных и, если домен существует, возвращает его IP-адрес — он хранится в записи A ресурса домена (или AAAA для IPv6). В некоторых случаях он отсутствует — например, если он был удален вручную по какой-либо причине. В этом случае резолвер выдаст сообщение об ошибке, как если бы домен не существовал в базе данных — резолвер ничего не вернет.
- Когда адрес нашего домена наконец найден, резолвер провайдера записывает адрес в свой кэш и пересылает его нашему внутреннему резолверу. Он записывает его в свою внутреннюю память и возвращает адрес браузеру. Браузер делает прямой запрос по полученному IP-адресу, и происходит загрузка данных сайта — открывается запрашиваемая страница.
Все эти чудеса занимают всего несколько минут.
В Linux и macOS можно просмотреть путь DNS-запроса к нужному домену с помощью следующей команды:
В Linux в некоторых случаях для работы с dig необходимо установить соответствующий пакет:
Ubuntu и Debian:
CentOS:
В Windows можно загрузить и установить Bind (только инструменты) или воспользоваться онлайн-инструментом, что проще:
Вы увидите полный путь запроса, от корневых DNS-серверов до искомых серверов доменных имен:
Что влияет на время обновления кэша DNS?
Когда вы обновляете ресурсные записи домена — изменяете записи A (IP-адрес домена), NS (сервер имен домена), MX (почтовый сервер домена) и т. д., — они появляются не сразу, обновление занимает от 2 до 72 часов.
Этот временной интервал состоит из нескольких параметров одновременно:
- запишите настройки времени кэширования (TTL, time-to-live). Этот параметр задается для каждой записи и определяет время, в течение которого запись может храниться в кэше резолвера. Например, если запись A изменена с TTL 21600, пользователь, который был на сайте минуту назад, увидит сайт со старого адреса (или сообщение об ошибке, если он недоступен) — потому что вместо того, чтобы отправить новый DNS-запрос, его резольвер вернет значение, кэшированное в течение 6 часов.
- настройки кэширования интернет-провайдеров. Интернет-провайдеры могут иметь собственные настройки кэширования — соответственно, резолвер провайдера будет выдавать пользователям значение из кэша, пока не будет исчерпан срок жизни записи, заданный провайдером. Тогда при следующем запросе к сайту резолвер провайдера выполнит полный DNS-запрос, тем самым актуализировав информацию в своём кэше.
Настройки кэша регистратора домена. Это особенно актуально для NS-записей и изменений сервера имен. NS-записи, содержащие серверы имен, хранятся в доменной зоне DNS-серверов, и их TTL устанавливается там же. У разных регистраторов разные настройки, но обычно время жизни этих записей составляет несколько часов.
Вот пример для веб-регистратора имен: TTL для серверов имен составляет 75598 секунд или ~21 час .
Это означает, что большинство провайдеров, сохранивших информацию о нашем домене, обновят ее только через 21 час, когда мы ее изменим.
Некоторые регистраторы доменов и хостинг-провайдеры предлагают пользователям возможность изменять ресурсные записи за плату в рамках услуги «DNS-хостинг». Клиенты 2DOMAINS могут вносить изменения в записи зон в личном кабинете или панели управления хостингом совершенно бесплатно.
Как работают DNS-серверы?
Принцип работы систем электронного заказа основан на принципе вызова контактов по номеру телефона. Вы нажимаете на нужное имя в телефонной книге, и вас соединяют с нужным абонентом, у которого есть ваш личный номер.
Это система и работа с сайтом. Каждый домен соответствует IP-адресу. Он представляет собой набор из 12 цифр. Когда пользователь вводит название сайта, компьютер запрашивает IP-адрес сайта на сервере и после получения ответа открывает страницу.
Где находятся?
DNS-серверы, содержащие информацию о первичной зоне DNS, называются корневыми системами. Первоначально они существовали только в Северной Америке, но с развитием Интернета распространились по всем странам.
В настоящее время существует 123 DNS-сервера. Они управляются операторами. Наибольшее количество серверов находится в США — 40 (32,5% от общего числа).
- F.root в Москве.
- I.root в Санкт-Петербурге.
- J.root в Москве и Санкт-Петербурге.
- K.root в Новосибирске.
Типы записей
- Регистрация адреса — указывает конкретный IP-адрес домена. Система использует эту запись, чтобы определить, к какой службе следует обратиться.
- Каноническое имя — каноническое имя, указывающее расположение хостов на сервере. Используется для указания поддоменов.
- Mail Exchanger — определяет почтовый сервер, который принимает и отправляет почту для домена.
- Текстовая строка — используется для хранения текстовых данных в домене. Количество записей может быть любым.
Атаки на DNS становятся все более популярными, поскольку они дают злоумышленникам множество преимуществ, таких как прерывание всего интернет-трафика или препятствование использованию пользователями ограниченных ресурсов.
В последние годы в целях безопасности были разработаны усовершенствования системы доменных имен. Это помогает защитить данные от злоумышленников.