Поиск по сайту:

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


Введение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Только авторитетные 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 специально разработано для выполнения одной конкретной роли, такие приложения, как Bind, невероятно гибки и могут использоваться в качестве гибридных решений. Хотя в некоторых случаях попытка предоставить слишком много сервисов на одном сервере может привести к снижению производительности, во многих случаях, особенно в случае небольшой инфраструктуры, имеет смысл поддерживать единое комплексное решение.

Относительные различия

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Заключение

К этому моменту вы, вероятно, уже знаете, что существует некоторая гибкость в выборе конфигурации DNS.

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

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