DNS и Active Directory Active Directory (AD) — превосходная технология (особенно если учесть, что перед нами — версия 1.0), которой в последние два года уделялось большое внимание в литературе по Windows 2000. Однако для корректной работы Active Directory необходим собственный каталог: список серверов и рабочих станций, известный как DNS. Прежде чем приступить к планированию AD, нужно подготовить DNS, иначе даже безупречно организованная AD будет функционировать неудовлетворительно.
Работая с Windows NT 4.0, большинство администраторов познакомились с основными элементами DNS — зонами DNS, записями SOA (System Object Access — доступ к системным объектам), NS (Name Server — сервер имен) и MX (mail exchanger — система почтового обмена), A (хост), первичными и вторичными серверами и т. д. — и вероятно, даже строили простой DNS-сервер. Но для организации надежной структуры DNS, полностью соответствующей требованиям AD, необходимы дополнительные знания. Например, следует ли использовать DNS-сервер, поставляемый в составе Windows 2000, или DNS-сервер независимого поставщика, такой, как широко применяемая в UNIX и Linux программа BIND? Где разместить ретрансляторы запросов (forwarder) и вспомогательные (slave) DNS-серверы — и вообще, что означают эти термины? Что такое разделенная (split- brain) DNS и каким образом объединить AD с существующей инфраструктурой DNS? Ответы на эти и другие вопросы я постараюсь дать в настоящей статье.
Выбор DNS-сервера
Не следует считать опрометчивым шагом решение совместить AD с DNS-сервером BIND (или Lucent QIP фирмы Lucent Technologies, или с другим продуктом независимой компании). BIND вполне подходит для работы с AD и применяется с этой целью со времени появления Windows 2000.
Чтобы убедиться в совместимости AD и BIND, я однажды посвятил целый день тому, чтобы расформировать трехдоменный лес AD и заново построить его, не используя DNS-серверы Microsoft. Я заменил их системой Linux- Mandrake 7.1 фирмы Mandrake-Soft и имевшейся в то время версией BIND. Лес AD был построен безукоризненно и даже чуть быстрее, чем с помощью DNS-сервера на базе Windows 2000. После этого я в течение нескольких месяцев использовал структуру DNS на базе BIND вместе с AD, и за все это время ни разу не столкнулся с неполадками.
Это не означает, что DNS-сервер Windows 2000 не заслуживает внимания. В таких серверах реализованы удачные, хотя и нестандартные зоны, интегрированные с AD (AD-integrated zone). Зоны, интегрированные с AD, имеют две особенности: несколько ведущих машин в первичной зоне и безопасное динамическое обновление DNS (dynamic DNS, DDNS). Роль DDNS в Windows 2000 соответствует функциям WINS в NT 4.0: репозитария имен и IP-адресов компьютеров и центрального каталога типов серверов. Чтобы найти контроллер домена (DC) и зарегистрироваться в домене NT 4.0, рабочая станция обращается к WINS. Компьютер с Windows 2000 Professional, член домена AD, направляет запрос на поиск DC в DDNS. Затем сервер DDNS должен собрать информацию об именах и ролях машин в домене. Системы на базе Windows 2000 помогают DDNS выполнить эту задачу, регистрируя свои имена на сервере DDNS. Таким образом, машины Windows 2000, в сущности, представляются DDNS-серверу, пополняя его базу данных имен и адресов.
Но какому DDNS-серверу посылают информацию о себе системы Windows 2000? В стандартной системе DDNS, например на базе компьютера, работающего с BIND или DDNS-сервером Windows 2000 в режиме первичной зоны (вместо режима интеграции с AD), принять регистрацию может только первичный сервер DDNS. Интернациональная компания может располагать тысячами машин по всему миру, которые каждое утро выполняют операцию перерегистрации: все они должны перерегистрироваться на одном компьютере — единственном, уполномоченном производить регистрацию. Напротив, в интегрированной с AD зоне любой или все контроллеры могут быть наделены функциями первичных серверов DDNS и выполнять регистрацию. Машины могут регистрировать свои DNS-имена на локальных контроллерах, уменьшая трафик по медленным сетям WAN.
Регистрация критична только для серверов и контроллеров домена. Поэтому проблему регистрации через WAN можно решить иначе, отменив регистрацию машин с Windows 2000 Pro. Этот режим можно задать на закладке DNS страницы свойств TCP/IP Advanced Properties. Другое отличие DDNS от WINS состоит в том, что срок регистрации в DDNS не истекает через несколько дней — по умолчанию, регистрация DDNS в зоне DDNS не имеет срока окончания. Поэтому в DDNS сохраняется запись машины, которая в прошлом зарегистрировалась хотя бы однажды, даже если машина не может перерегистрироваться каждый день.
Еще одна полезная функция AD-интегрированных зон — защищенная регистрация DDNS. Если зона DDNS по умолчанию организована на DNS-сервере BIND или Windows 2000, то зарегистрировать машину в данной зоне может любой пользователь, имеющий возможность установить соединение с этим сервером. BIND позволяет запретить регистрацию машин, находящихся вне определенных подсетей: если на BIND-сервере составлен регистрационный список подсетей, то сервер будет игнорировать все остальные компьютеры. В AD- интегрированной зоне предусмотрен другой механизм ограничения регистрации DDNS: предварительным условием может быть регистрация машины в домене AD. Реализовать данный подход немного проще, чем метод BIND, — достаточно щелкнуть на закладке General страницы Properties зоны, а затем на раскрывающемся списке Allow dynamic updates? (разрешить динамическое обновление?) и выбрать пункт Only secure updates (только безопасное обновление).
Использование серверов кэширования
Вспомним, как размещаются в intranet DNS-серверы для обслуживания пользователей. Многие DNS-серверы предназначены для хранения копий зональных файлов предприятия; это знает каждый администратор, которому приходилось устанавливать DNS-сервер. Но многие DNS-серверы не содержат зон и предназначены исключительно для преобразования имен Internet (какой IP-адрес соответствует имени www.microsoft.com?) или intranet (где находится ближайший DC в acme.com?). Такой DNS-сервер называется сервером кэширования (caching-only server). После того как образован беззональный DNS-сервер, указание на тип сервера кэширования содержится в журнале событий (событие с ID 708).
Достоинство сервера кэширования заключается, как видно из его названия, в возможности запоминать результаты предыдущих операций преобразования имен. Например, если кто-то из сотрудников вводит в браузере имя www.cnn.com, то браузер обращается к основному локальному DNS-серверу, чтобы узнать IP-адрес сервера www.cnn.com на DNS-сервере CNN.com. Основной локальный DNS-сервер обращается за этой информацией в Internet, что требует времени. Но второй сотрудник, запросивший на локальном DNS-сервере IP- адрес www.cnn.com, получит ответ почти мгновенно, так как сервер извлекает адрес из кэша, не обращаясь в Internet.
Однако в конечном итоге локальный DNS-сервер обратится к DNS-серверу CNN.com, чтобы выяснить, не изменился ли IP-адрес www.cnn.com. Повторное обращение необходимо, так как в ответе на первый запрос
содержится не только IP-адрес www.cnn.com, но и период времени, в течение которого данный адрес должен храниться в кэше локального DNS-сервера. Это время называется «время жизни» (Time to Live, TTL). TTL указывается в ответах на все запросы на разрешение имен. Появление очередного запроса после истечения TTL приводит к повторному обращению в Internet для преобразования имени.
Централизованный кэш с ретранслятором запросов
Не вызывает сомнения, что кэширование преобразованных имен в DNS очень удобно. Если TTL домена CNN.com составляет два дня, то адрес можно хранить в течение этого срока, прежде чем локальному DNS-серверу кэширования придется вновь обратиться к DNS-серверу CNN.com.
К каким последствиям приведет добавление второго локального DNS-сервера кэширования? Назовем первый локальный DNS-сервер DNS1, а второй — DNS2. Информация, полученная DNS1, недоступна для DNS2. Например, если в DNS2 поступил запрос на IP-адрес www.cnn.com, то DNS2 должен обратиться за этой информацией на DNS-сервер CNN.com, даже если данный IP-адрес хранится в кэше DNS1. Иными словами, DNS2 и DNS1 не могут совместно использовать кэш.
Но если применить ретранслятор запросов, то серверы могут разделять кэш. Принцип работы ретранслятора запросов следующий: сначала назначается несколько локальных DNS-серверов кэширования для преобразования имен по запросам от рабочих станций и других серверов. Затем на отдельный сервер возлагаются функции своего рода DNS-сервера для DNS-серверов. В терминах DNS, этот сервер выполняет функцию ретрансляции запросов.
Получив запрос на преобразование имени, отсутствующего в кэше, локальный DNS-сервер кэширования не обращается в Internet, а передает запрос ретранслятору. Если ретранслятор — который расположен в той же локальной сети, что и локальный DNS-сервер кэширования, и может обмениваться с ним информацией на высокой скорости — располагает нужным адресом, то он быстро отвечает на поставленный вопрос. Если ретранслятор не дает ответа, то необходимая информация извлекается из Internet.