Сравнение типов DNS-серверов: как правильно выбрать конфигурацию DNS

Вступление

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

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

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

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

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

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

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

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

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

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

Если он не находит адрес какого-либо из этих компонентов домена, он должен начать с самого верха иерархии, запрашиваяroot name servers. Корневым серверам известны адреса всех серверов имен TLD (домена верхнего уровня), которые контролируют зоны для.com,.net,.org и т. Д. Он спросит корневые серверы, знает ли он адресwww.example.com. Корневой сервер направит рекурсивный сервер к серверам имен для TLD.com.

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

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

Функциональные различия

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

Только авторитетные DNS-серверы

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

Только авторизованные серверы имеют следующие свойства:

  • Very fast at responding to queries for zones it controls. Сервер, работающий только с полномочиями, будет иметь всю информацию о домене, за который он отвечает, или справочную информацию для зон внутри домена, которые были делегированы другим серверам имен.

  • Will not respond to recursive queries. Само определение авторитетного сервера - это сервер, который не обрабатывает рекурсивные запросы. Это делает его только сервером, а не клиентом в системе DNS. Любой запрос, достигающий только авторизованного сервера, обычно поступает от распознавателя, получившего ссылку на него, а это означает, что полномочный сервер либо получит полный ответ, либо сможет передать нового реферала серверу имен. что он делегировал ответственность.

  • Does not cache query results. Поскольку авторитетный сервер никогда не запрашивает у других серверов информацию для разрешения запроса, он никогда не имеет возможности кэшировать результаты. Вся информация, которую он знает, уже находится в его системе.

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

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

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

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

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

  • Access to the entire range of public DNS data. Все данные зоны, обслуживаемые общедоступными DNS-серверами, подключенными к глобальному дереву делегирования, могут быть доступны кэширующему DNS-серверу. Он знает о корневых DNS-серверах и может интеллектуально следить за рефералами при получении данных.

  • Ability to spoon-feed data to dumb clients. Практически каждая современная операционная система переносит разрешение DNS на выделенные рекурсивные серверы с помощью преобразователей заглушек. Эти разрешающие библиотеки просто выдают рекурсивный запрос и ожидают, что ему вернут полный ответ Кэширующий DNS-сервер имеет точные возможности для обслуживания этих клиентов. Принимая рекурсивный запрос, эти серверы обещают либо вернуться с ответом, либо с сообщением об ошибке DNS.

  • Maintains a cache of recently requested data. Кэшируя результаты по мере их сбора с других DNS-серверов для своих клиентских запросов, кэширующий DNS-сервер создает кеш для последних данных DNS. В зависимости от того, сколько клиентов используют сервер, каков размер кэша и как долго данные TTL находятся на самих записях DNS, это может значительно ускорить разрешение DNS в большинстве случаев.

Переадресация DNS-сервера

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

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

Сервер переадресации DNS имеет следующие свойства:

  • The ability to handle recursive requests without performing recursion itself. Наиболее фундаментальным свойством пересылающего DNS-сервера является то, что он передает запросы другому агенту для разрешения. Сервер пересылки может иметь минимальные ресурсы и при этом эффективно использовать свою кэш-память.

  • Provide a local cache at a closer network location. В частности, если вы не готовы создавать, поддерживать и обеспечивать безопасность полноценного рекурсивного DNS-решения, сервер пересылки может использовать общедоступные рекурсивные DNS-серверы. Он может использовать эти серверы, перемещая основное место кэширования очень близко к клиентским машинам. Это может уменьшить время ответа.

  • Increases flexibility in defining local domain space. Посредством условной передачи запросов на разные серверы сервер пересылки может гарантировать, что внутренние запросы обслуживаются частными серверами, в то время как внешние запросы используют общедоступный DNS.

Комбинированные решения

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

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

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

Различия в отношениях

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

Основной и Вторичный Серверы

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

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

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

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

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

DNS-зоны обычно имеют как минимум два сервера имен. Любая зона, отвечающая за маршрутизируемую в Интернете зонуmust, имеет как минимум два сервера имен. Часто для обслуживания нагрузки и увеличения избыточности используется гораздо больше серверов имен.

Публичные и частные серверы

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

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

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

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

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

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

Заключение

На этом этапе вы, вероятно, знаете, что при выборе конфигурации DNS достаточно гибкости.

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

В наших следующих руководствах мы покажем, как начать работу с некоторыми из этих конфигураций. Мы начнем с обученияhow to set up a caching or forwarding server. Позже мы рассмотрим, как обслуживать ваши доменыsetting up a pair of authoritative-only DNS servers.

Related