Надо ли включать DNS-Relay?
Большинство пользователей знают, что такое сервис DNS, точнее, зачем он был создан. DNS-сервер получает запрос с именем сайта, а в ответе должен содержаться адрес IP, соответствующий искомому узлу. Именно так компьютеры могут узнавать, к какому адресу надо обращаться, чтобы перейти на тот или иной сайт. Любой домашний и офисный роутер ДНС запросы тоже обрабатывает, а как именно ему удается это выполнять, вроде бы, не так важно.
Но если разобраться с тем, как на самом деле выглядит алгоритм обработки запроса ДНС, то станет понятно – не все роутеры «одинаково хорошие». Некоторые устройства могут обладать функциональностью настоящего DNS-сервера, ну а другие умеют только передавать информацию на маршрутизатор провайдера.
Обзор разбит на несколько глав, и в первой из них не будет рассматриваться что-либо, имеющее отношение к домашним, либо офисным, сетевым комбайнам. Попытаемся вначале понять, что именно происходит, когда Ваш компьютер пытается открыть сайт. Подразумевается, что адрес DNS-сервера задан в настройках сетевой карты (он может быть получен автоматически или прописан в явном виде). Сейчас в примере будет рассмотрена последовательность действий, выполняемых маршрутизатором провайдера.
Алгоритм обработки доменных имен
Слово DNS расшифровывается так – Domain Name System. Английские сочетания переводятся с перестановкой слов, то есть, по-русски это будет вот что: Система Доменных Имен. Эта система включает в себя множество машин, обрабатывающих DNS-запросы. Каждая машина (сервер) может относиться к тому или иному уровню. Позже станет понятно, что это значит.
Пример выполнения обработки
Итак, было сказано, что количество DNS-серверов в Интернете не ограничивается одним или двумя. Сервер нулевого уровня, самого высшего – один, и он продублирован 12-ю другими машинами. Адреса этих 13-ти «высших» машин известны любому DNS-серверу. Рассмотрим, что происходит, когда на сервер провайдера присылается запрос DNS:
- Если DNS-сервер Вашего провайдера не содержит информацию о запрашиваемом имени в кэше, он запрашивает это же имя у «высшего» сервера.
- Машина нулевого уровня (высшего) ищет в своей базе адрес сервера, «отвечающего» за последнее слово в web-имени (ru, com, us и так далее). В своем ответе, направленном на DNS-сервер провайдера, она отсылает этот IP-адрес.
- Сервер провайдера шлет запрос той машине, адрес которой указан в ответе, отправленном ему на шаге 2. Эта машина может сразу прислать адрес, соответствующий запрашиваемому имени. Или, она ответит: узнайте про это имя у сервера, «несущего ответственность» за более низкий уровень доменов («omsk.ru», например).
- Доменное имя может содержать максимум 3 или 4 «слова», разделенных точкой (домены могут быть 3-го или 4-го уровня). Поэтому, если даже на шаге 3 не был получен искомый IP-адрес, он будет получен через одну или две аналогичных итерации.
Любой «внешний» DNS-сервер может сделать одно из двух: либо прислать искомый адрес, либо указать, к какой машине более низкого уровня надо обращаться.
Чтобы лучше понять, как все это работает, посмотрите на приведенную здесь схему. Показано, что будет, если готовый ответ придет на шаге «3». Даже для такого случая, как видим, количество пересылаемых пакетов равняется 6-ти. Вот почему рассматриваемый сервис работает достаточно медленно.
Рекурсивный и итеративный запрос
Компьютер присылает провайдеру рекурсивный запрос, то есть такой, ответом на который может быть только IP, соответствующий запрашиваемому имени. Надеемся, это понятно. А вот сам провайдер направляет «внешним» машинам итеративные запросы. Ответом на них может быть как искомый адрес, так и адрес другого (более низшего) DNS-сервера. В последнем случае запрашивающая сторона связывается с машиной, указанной ей в ответе, и все повторяет по-новому (выполняется так называемая итерация).
Как можно понять, сейчас Интернет устроен так, что количество итераций, требуемых для обработки любого рекурсивного запроса, не может превзойти 3 или 4.
На каждой итерации уровень запрашиваемой машины понижается, что очень важно. Правда, нумеруются эти уровни в обратном порядке (начиная от «0»), но максимум их может быть только 4. Заметим, что все итерации обычно выполняются сетевым маршрутизатором, выступающим в роли DNS-сервера.
Возможности домашних роутеров
Домашний или офисный сетевой комбайн (роутер) может содержать в себе кеширующий сервер доменных имен. Последний можно задействовать, тогда итерации начнет выполнять сам роутер. А если опцию не включать, все запросы просто перенаправляются к провайдеру. «DNS-пересылка» – вот как называется последний вариант настройки.
Иногда надо использовать пересылку, но в некоторых случаях DNS-машину лучше включить. Соответствующая опция в роутерах носит название «DNS-relay». Отключите ее, и вычислительная нагрузка по работе с доменными именами перейдет на оборудование «за роутером». Заметим, что в некоторых моделях офисных устройств эту опцию включить нельзя, так как она не реализована.
Специалисты рекомендуют поступать так: сначала лучше проверить работоспособность сети, не включая рассматриваемую опцию.
Затем, Вы ее задействуете, и должны будете заметить, насколько быстрее станут открываться сайты. Если два роутера соединены каскадом, то на втором из них (включенном в локальную сеть первого) опцию задействовать не надо! И в любом случае роутер, подключенный к провайдеру, должен «знать» хотя бы два адреса DNS-серверов, услуги которых Вам предоставляются.
КЭШ и кэширование
Были рассмотрены принципы работы машин, составляющих собой систему, позволяющую по значению доменного имени узнать IP-адрес. Для ускорения работы такой системы каждая машина может делать вот что: она запоминает, что именно чаще всего у нее спрашивают. Речь идет о тех сетевых машинах, которые могут обрабатывать рекурсивный запрос. По идее, подобной функциональностью наделяется и маршрутизатор Вашего провайдера, и офисный или домашний роутер (не каждая модель).
Если сайт, и соответствующий ему адрес, были запомнены, происходит вот что: по запрашиваемому значению находится ответ, который сразу отсылается запрашивающей стороне. Число передаваемых пакетов здесь равно 2. Но если Вы в роутере не включите DNS-relay, количество пакетов станет равным как минимум четырем. Получается, что рассматриваемая опция ускоряет работу вдвое, но только с теми сайтами, которые были запомнены (сохранены в КЭШе).
Отметим, что в домашних роутерах нельзя включить или отключить кэширование. Либо Вы задействуете кэширующий сервер, либо отключаете его полностью. А сделать его «не кэширующим» не получится, таковы уж особенности web-интерфейса. Можно поступить еще проще – задать в настройках роутера одну из публичных машин ДНС. Вроде бы, число передаваемых пакетов при этом резко сократится. Но делать здесь рекламу общедоступным публичным сервисам (вроде Google, Yandex и т.д.) никто не собирается.