Глубокий в-DoH. Разбираемся, как работает DNS over HTTPS и кому (не) выгодно его внедрение

Содержание

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

В 70-х — 90-х годах 20 века существовала сеть под названием ARPANET. Это была попытка объединить множество компьютеров министерством обороны США для возможности передачи информации во время войны. Важность такого подхода заключалась в быстрой передачи информации на дальние расстояния. Впоследствии принципы работы ARPANET легли в основу современного интернета.

Изначально вся сеть объединяла компьютеры в четырёх различных институтах США:

  • Калифорнийский университет в Лос-Анджелесе;
  • Стэнфордский исследовательский центр;
  • Университет Юты;
  • Калифорнийский университет в Санта-Барбаре.

Учёные этих институтов быстро пришли к единому мнению, что передавать друг другу информацию об исследованиях удобнее при помощи новой сети. Для этого было достаточно знать идентификатор того компьютера, на который передаётся сообщение. Сейчас такие идентификаторы называются IP-адресами. У каждого устройства в интернете есть такой идентификатор и именно по нему обращаются устройства друг к другу.

В самом начале компьютеров, подключённых к сети, было несколько десятков, и их идентификаторы было легко запомнить. Можно было записать эти адреса в блокнот и использовать его так же, как и телефонные книги.

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

Файл hosts — как первый шаг к созданию DNS

Для решения задачи разработчики решили использовать словарь, который связывал уникальное имя и IP-адрес каждого компьютера в сети. Таким словарём стал файл hosts.txt, который и отвечал за привязку IP-адреса к имени компьютера. Файл лежал на сервере Стэнфордского исследовательского института, и пользователи сети регулярно вручную скачивали этот файл на свои компьютеры, чтобы сохранять актуальность словаря, ведь новые компьютеры появлялись в сети почти каждый день.

Выглядел hosts.txt тогда (да и сейчас) таким образом:

192.168.10.36         MIKE-STRATE-PC Сетевой (IP) адрес    Имя компьютера 

При наличии такого файла на компьютере пользователя для связи с компьютером Майка, можно было не запоминать цифры, а использовать понятное латинское имя «MIKE-STRATE-PC».

Посмотрим, как выглядит файл и попробуем добавить туда новое имя, чтобы подключиться к компьютеру с использованием данного имени. Для этого отредактируем файл hosts. Вы можете найти его на своём компьютере по следующему адресу:

  • В Unix-системах: /etc/hosts
  • В Windows-системах: %Путь до папки Windows%/system32/drivers/etc/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 являются:

Домен (доменное имя) — символьное имя для обозначения сервера в сети интернет. Доменные имена являются иерархической структурой, в которой каждый уровень отделяется точкой. Основными уровнями являются:

  • Корневой домен. В урле он не используется, но всегда подразумевается. От него начинается построение всех урлов в сети интернет
  • Домены верхнего уровня. К ним относятся домены .ru, .com, .net, .su и так далее. Также этот домен называют доменом первого уровня.
  • Домен второго уровня (или основной домен). Это основное имя вашего сайта
  • Поддомены (домены третьего, четвёртого, пятого и т.д. уровня). Сюда входят все поддомены основного домена.

DNS-сервер — система, ответственная за хранение и поддержание в актуальном состоянии записей о своих дочерних доменах. Каждый DNS-сервер ответственен только за свою зону, то есть DNS-сервер домена .io знает о том, где расположен домен hexlet, DNS-сервер которого знает о расположении своих поддоменов.

Корневой DNS-сервер — система, знающая расположение (IP-адреса) DNS-серверов доменов верхнего уровня.

Ресурсная запись — единица информации DNS-сервера. Каждая ресурсная запись имеет несколько полей:

  • Имя (домен, к которому относится запись)
  • Тип
  • Параметры
  • Значение

Подключение

Необходимо понимать, что доменное имя — это всего лишь абстракция для людей. Сам компьютер и приложения (например, браузер) обращается к сервисам внутри сети интернет только по IP-адресам.

Рассмотрим процесс получения IP-адреса по доменному имени на примере домена ru.hexlet.io.

Возможны два варианта событий:

  1. Компьютер посылает запрос на известный ему DNS-сервер. Чаще всего им является DNS-сервер поставщика интернет-услуг (провайдера): какой IP-адрес у домена ru.hexlet.io?. DNS-сервер провайдера находит в своей базе информацию о том, что домен ru.hexlet.io расположен по IP-адресу 104.25.238.104 и возвращает значение нашему компьютеру. Этот процесс похож на то, как использовался файл hosts.txt.

  2. Ближайший известный DNS-сервер не имеет записи о том, по какому IP-адресу располагается домен ru.hexlet.io. В таком случае запускается цепочка процессов, благодаря которым наш компьютер получит IP-адрес домена:

    • Так как домен является иерархической структурой, и все DNS-сервера знают IP-адреса корневых DNS-серверов, то к ним и происходит запрос на получение IP-адреса домена.

    • Корневые DNS-сервера, в соответствии со своей зоной ответственности знают о том, где располагаются DNS-сервера доменов верхнего уровня. Эти адреса возвращаются DNS-серверу нашего провайдера, после чего на нужный DNS-сервер (в нашем случае на DNS-сервер домена .io) посылается запрос на получение IP-адреса домена ru.hexlet.

    • В соответствии со своей зоной ответственности 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   Класс   Тип записи  Значение 

Разберём подробнее:

Имя записи — указывается домен, которому принадлежит данная ресурсная запись.

TTL(time to live / время жизни) — время в секундах, на которое будет закешировано значение ресурсной записи. Это необходимо для разгрузки DNS-серверов. Благодаря кешированию и возможна ситуация, что ближайший DNS-сервер знает IP-адрес запрашиваемого домена.

Класс — предполагалось, что DNS может работать не только в сети интернет, поэтому в записи указывается и её класс. На сегодняшний день поддерживается только одно значение — IN (Internet).

Тип — указывает тип ресурсной записи, основные из которых были разобраны выше.

Значение — непосредственно значение ресурсной записи. В зависимости от типа ресурсной записи значения могут быть представлены в разном виде.

Посмотрим, в каком виде эти записи хранятся на DNS-серверах на примере домена ya.ru. Для этого воспользуемся утилитой dig, которая получает все доступные ресурсные DNS-записи от DNS-сервера и выводит их пользователю.

Утилита dig является DNS-клиентом и входит в состав одного из самых распространённых DNS-серверов BIND.

Пример реальных записей DNS

Не пугайтесь такого длинного вывода. Уже сейчас можно понять почти всё, что тут указано. Разберём вывод каждой секции более детально.

Вывод состоит из нескольких частей:

  • Шапка
  • Секция запроса
  • Секция ответа
  • Служебная информация

Шапка запроса

; <<>> Net::DNS::Dig 0.12 <<>> -t any ya.ru. ;; ;; Got answer. ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52109 ;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 0 

Здесь указывается проставленные флаги нашего запроса, количество запросов и ответов, а также другая служебная информация.

Секция запроса

;; QUESTION SECTION: ;ya.ru.   IN    ANY 

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

Секция ответа

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

;; ANSWER SECTION: ya.ru. 7199INNS ns1.yandex.ru. ya.ru. 7199INNS ns2.yandex.ru.  ya.ru.599INA 87.250.250.242 ya.ru.599INAAAA 2A02:6B8:0:0:0:0:2:242 

Как запись A, так и AAAA-запись указывают на IP-адрес, который привязан к нашему домену. A-запись указывает IP в формате IPv4, а запись AAAA — в формате IPv6.

ya.ru.7199INMX 10 mx.yandex.ru. 

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

ya.ru.3599INSOA ns1.yandex.ru. sysadmin.yandex.ru. 2019021800 900 600 2592000 900 

Запись SOA(Start of Authority) указывает на несколько различных параметров:

  1. Сервер с эталонной информацией о текущем домене
  2. Контактную информацию ответственного лица
  3. Различные параметры кеширования записей

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

Выводы

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

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

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

Перечисленные методы настолько просты, что не требуют инструкций, а ниже представлено руководство о том, как выяснять адрес DNS с помощью встроенных инструментов Windows так, как это делают продвинутые юзеры.1127188501-vstroennye-instrumenty-windows.jpg

Содержание

Как выяснить адрес, используя средства Windows?

Разработчики ОС из «Майкрософт» оснастили все Windows мощным инструментом под названием «КС» (Командная строка). Использование «КС» позволяет быстро определять применяемые операторами связи сетевые параметры для доступа компьютера пользователя в глобальную сеть.

Опытные пользователи не всегда довольны стабильностью связи даже таких популярных провайдеров как «Билайн» или «Byfly».

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

Но прежде чем заменить адрес, используемый по умолчанию на альтернативный вариант, надо посмотреть текущий.

С целью самостоятельного решения вопроса, как точно узнать предпочитаемый DNS-сервер, потребуется исполнить такие последовательные действия:

  1. Клацнуть «Пуск»;1127188502-pusk.jpg
  2. Перевести стрелочку на строчку «Все программы»;
  3. Далее развернется перечень приложений, установленных в компьютер, где следует войти в раздел «Стандартные»;
  4. В содержимом раздела найти «КС» и клацнуть ее для запуска консоли;
  5. Если вызов «КС» многочисленным клацаньем мышки вызвал затруднения, то следует пальцем руки надавить на клавишу «Win» на клавиатуре ПК, а другим пальцем щелкнуть по кнопке с латинской буквой «R». Это ловкое движение вызовет меню «Выполнить»;1127188503-menyu-vypolnit.jpg
  6. Затем напечатать «cmd»;
  7. Клацнуть «Ok»;
  8. Далее в «КС» напечатать «nslookup»;1127188504-ks.jpg
  9. Кликнуть «Ввод»;
  10. Готово. В «КС» отобразится искомый адрес.

1127188505-iskomyj-adres.jpgВот так просто любой пользователь может определить адрес DNS и при этом не имеет значение, с каким провайдером у него заключен договор, например, для абонентов «Киевстар» и «Ростелеком» действия будут одинаковы.

Использование самых быстрых DNS

Применение скоростных DNS для конкретных условий подключения ПК пользователя является одним из лучших методов увеличения скорости работы интернета.

Потребуется выполнить следующие шаги:

  1. Скачать приложение «NameBench» (утилита свободно распространяется в глобальной сети);1127188506-prilozhenie-namebench.jpg
  2. Запустить утилиту (инсталлировать ее не надо);
  3. Настраивать утилиту не надо. Сразу клацнуть «Start Benchmark»;
  4. Подождать;
  5. Отобразится подробный отчет;1127188507-podrobnyj-otch-t.jpg
  6. В отчете показаны сведения с оптимальными параметрами соединения, которые пользователю остается только использовать, вписав предпочитаемый и альтернативный адреса в свойства используемого протокола;

1127188508-alternativnyj-adres.jpgЕсли у пользователя возникли сложности с вводом сетевых параметров, то ниже описанная инструкция поможет даже новичку быстро справиться с задачей.

Изменение настроек DNS

Недостаточно уметь проверять используемые сетевые настройки, необходимо знать, как их изменять. Процедура простая и осуществляется через «ЦУС и ОД» (Центр управления сетями и общим доступом).

Шаги:

  1. Открыть меню «ЦУС и ОД». Удобнее всего это сделать, клацнув иконку сети в трее;1127188509-menyu-cus-i-od.jpg
  2. В отобразившемся меню кликнуть «ЦУС и ОД»;1127188510-klik-cus-i-od.jpg
  3. Далее в окне «ЦУС и ОД» клацнуть «Подключение по локальной сети»;1127188511-podklyuchenie-po-lokalnoj-seti.jpg
  4. В закладке «Общие» кликнуть «Свойства»;1127188512-svojstva.jpg
  5. Выделить используемый протокол;
  6. Клацнуть «Свойства»;
  7. Ввести параметры, которые были определены после исполнения предыдущего параграфа этого руководства;
  8. Перезапустить ПК;
  9. Готово.

Решение проблем

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

Если доступ к сети появился, то проблема в маршрутизаторе. Простая процедура перезагрузки роутера обычно позволяет устранить неполадки с соединением.

Чтобы перезагрузить прибор необходимо выполнить следующие шаги:

  1. Открыть в ПК интернет-обозреватель;
  2. Ввести IP-адрес, прописанный на шильдике внизу аппарата и клацнуть «Ввод»;
  3. Далее с шильдика переписать имя и код доступа к web-конфигуратору прибора и клацнуть «Войти»;

Примечание: Если пользователь ранее изменял параметры авторизации, то он их знает.

4. Войти в закладку «Системные инструменты»;   5. Перейти во вкладку «Перезагрузка»;   6. Клацнуть виртуальную клавишу «Перезагрузка»;   7. Подождать;

8. Готово.

8 645 views | Комментариев нет

VPS

DNS (Domain Name System) – система доменных имен, неотъемлемая часть взаимодействия разных систем в Интернете. Без DNS компьютеры и люди, которые их используют, смогут подключаться только с помощью числовых адресов, известных как IP-адреса.

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

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

Примечание: Подразумевается, что вы знакомы с базовыми понятиями DNS.

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

Путь DNS-запроса

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

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

Определителем может быть любой компонент, который выступает в DNS-запросе на стороне клиента. Системный определитель – это разрешающая библиотека, используемая операционной системой для поиска ответа на запросы DNS. Обычно системные определители не способны выполнять много сложных функций, их работа ограничивается поиском нескольких статических файлов в системе (например, файла /etc/hosts) и пересылкой запросов другому определителю.

Как правило, от клиентского приложения поступает запрос системному определителю, откуда он передается на DNS-сервер, у которого есть требуемый адрес адрес. Этот DNS-сервер называется рекурсивным DNS-сервером. Рекурсивный сервер – это DNS-сервер, который будет запрашивать другие DNS-серверы, пока не найдет нужные данные. Затем он вернет ответ или сообщение об ошибке клиенту (точнее, системному определителю, который, в свою очередь, передаст его клиентскому приложению).

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

К примеру, если запрос предназначен для www.example.com и сервер не может найти адрес этого хоста в своем кэше, он будет искать адрес на серверах имен для example.com и при необходимости com. Затем он отправит запрос на сервер имен для определенного компонента домена, чтобы запросить дополнительную информацию.

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

Корневые серверы знают адреса всех серверов имен доменов верхнего уровня, которые управляют зонами.com, .net, .org и т. п. Рекурсивный сервер будет запрашивать адрес условного домена www.example.com на корневых серверах. Корневой сервер переведет рекурсивный сервер на серверы имен для домена высшего уровня .com.

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

Как видно из этого примера, существует много разных типов серверов, и все они играют разные роли. Давайте рассмотрим особенности разных типов DNS-серверов.

Функциональные отличия DNS-серверов

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

Авторитативные DNS-серверы

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

Авторитативные серверы имеют такие свойства:

  • Очень быстро реагирует на запросы для зон, которые он контролирует. Авторитативный сервер имеет всю информацию о домене, за который он отвечает, и все справочные данные о зонах в домене, за которые отвечают другие серверы имен.
  • Не отвечает на рекурсивные запросы. Авторитативный сервер по определению не обрабатывает рекурсивные запросы. Потому в системе DNS он всегда выступает на серверной стороне. Любой запрос, направленный к такому серверу, как правило, поступает от определителя, который получил ссылку на него. Это означает, что авторитарный сервер либо имеет полный ответ, либо сможет передать новый реферал на ответственный сервер имен.
  • Не кэширует результаты запросов. Поскольку авторитативный сервер никогда не запрашивает информации для разрешения запроса у других серверов, у него нет возможности кэшировать результаты. Вся информация, которую он знает, уже находится в его системе.

Кэширующие DNS-серверы

Кэширующий DNS-сервер – это сервер, который обрабатывает рекурсивные запросы клиентов.

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

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

Кэширующий DNS-сервер имеет следующие свойства:

  • Доступ ко всему диапазону общедоступных данных DNS. Все данные зон, обслуживаемых общедоступными DNS-серверами, подключенными к глобальному дереву, можно получить с помощью кэширующего DNS-сервера. Он знает о корневых DNS-серверах и может разумно следовать рекомендациям по мере получения данных.
  • Способность обработать данные для клиентов. Почти каждая современная операционная система разгружает разрешение DNS на выделенные рекурсивные серверы. Определительные библиотеки просто отправляют рекурсивный запрос и ожидают полного ответа. Кэширующий DNS-сервер имеет все возможности для обслуживания этих клиентов. Принимая рекурсивный запрос, эти серверы обещают либо вернуть ответ, либо выдать сообщение об ошибке DNS.
  • Поддерживает кэш недавно запрошенных данных. Кэшируя результаты, DNS-сервер создает кэш последних данных DNS. В зависимости от того, сколько клиентов использует сервер, насколько велик кэш и как долго данные TTL находятся в записях DNS, в большинстве случаев это может значительно ускорить разрешение DNS.

Перенаправляющие DNS-серверы

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

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

Перенаправляющие DNS-серверы имеют такие свойства:

  • Возможность обработки рекурсивных запросов без выполнения самой рекурсии. Наиболее фундаментальным свойством перенаправляющих DNS-серверов является то, что он передает запросы для разрешения другому агенту. Перенаправляющий сервер может иметь минимальные ресурсы и по-прежнему представлять большую ценность благодаря своему кэшу.
  • Предоставляет локальный кэш ближе по сети. Если вы не хотите создавать и поддерживать полноценный рекурсивный DNS-сервер, перенаправляющий сервер может использовать общедоступные рекурсивные DNS-серверы. Он может выбрать кэширующие серверы, которые находятся очень близко к клиентским машинам. Это может уменьшить время ответа.
  • Повышает гибкость при определении локального пространства. Передавая запросы на разные серверы, перенаправляющий сервер может гарантировать, что внутренние запросы обслуживаются частными серверами, а внешние запросы используют общедоступный DNS.

Комбинирование DNS-серверов

Хотя вышеупомянутые решения спроектированы с учетом очень специфических целей, часто рекомендуется настроить DNS-сервер таким образом, чтобы объединить преимущества каждого из них.

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

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

Различия отношений DNS-серверов

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

Первичные и вторичные DNS-серверы

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

Мастер и слейв являются авторитативными серверами для зон, которые они обрабатывают. Мастер не имеет больше полномочий над зонами, чем слейв. Единственное отличие между первичным и вторичным сервером – это то, откуда они считывают свои файлы зон.

Первичный сервер считывает свои файлы зон из файлов на диске системы. Обычно это происходит, когда администратор зоны добавляет, редактирует или перемещает исходные файлы зон. Такой сервер имеет право на изменение зон.

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

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

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

Внешние и внутренние DNS-серверы

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

Хотя все эти задачи теоретически может обрабатывать один комбинированный сервер, у разделения рабочей нагрузки есть определенные преимущества. На самом деле часто желательно поддерживать полностью отдельные друг от друга внутренние и внешние серверы. Особенно важно с точки зрения безопасности, чтобы на внешнем сервере не было записей внутреннего сервера.

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

Обычно также рекомендуется удалить из конфигурационного файла внешнего сервера все ссылки на внутренний сервер: все данные о перемещении, уведомления и настройки мастера. Таким образом взлом внешнего сервера не будет иметь никаких последствий для внутреннего сервера.

Поддерживая отдельные файлы зон для внешнего и внутреннего сервера, вы обеспечиваете более высокий уровень безопасности инфраструктуры.

Заключение

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

Tags: DNSИспользуемые источники:

  • https://guides.hexlet.io/dns/
  • https://nastrojkin.ru/network/dns/predpochitaemyj-dns-server.html
  • https://www.8host.com/blog/sravnenie-dns-serverov-kak-vybrat-pravilnuyu-konfiguraciyu-dns/

Рейтинг автора
5
Подборку подготовил
Андрей Ульянов
Наш эксперт
Написано статей
168
Ссылка на основную публикацию
Похожие публикации