Настройку BIND вручную под Mac OS X я рассмотрел в первой части статьи. Согласитесь, настройка отнюдь не проста для обычного пользователя.

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

Поэтому самый логичный способ установки DNS-сервера - это установка на сервер, который постоянно включен, и который не таскают с места на место. Рассматривать различные Unix не буду, настройка BIND в них и так не отличается от описанной ранее. Я хочу показать, как настраивается BIND в Mac OS X Server. Особенно доступным использование Mac OS X Server стало с выходом Mac mini Server. Это событие на мой взгляд сильно облегчило разворачивание нормальной сети уровня небольших организаций (а для гиков - и домашней сети) с преобладанием Mac'ов.

У меня в качестве тестового стоит Mac OS X Server 10.6 на MacBook. Через 10 дней он прекратит свою работу и я подумаю, планировать или нет покупку законного Mac mini Server.

Рассказывать о настройке сервера с нуля не буду, об этом можно почитатать в документации Apple, либо в книге "Apple Training Series: Mac OS X Server Essentials v10.6: A Guide to Using and Supporting Mac OS X Server v10.6".

DNS-сервер в Mac OS X Server является ключевым звеном, поэтому при установке нужно чётко знать IP-адрес и FQDN-адрес сервера, иначе придётся сталкиваться с мистическими проблемами при запуске разнообразных сервисов (даже команда changeip не всегда помогает). Когда Mac OS X Server установился, то DNS включён по умолчанию. Но отключить/включить его можно в Server Admin (либо на самом сервере, либо установив пакет "Server Admin Tools"):

Обратите внимание, что сервер у меня назван не так, как я описывал в первой части, но созвучно (ceiling-cat.ctrld.me вместо coche.home.ctrld.me). Если бы я указал при установке сервера coche.home.ctrld.me, то прямая зона home.ctrld.me была бы создана автоматически. Я же буду создавать её самостоятельно.

У Apple хороший инструментарий для настройки серверных сервисов. И очень хорошо то, что это именно интерфейс к настройке стандартных пакетов вроде BIND, OpenDirectory, и при необходимости конфигурационные файлы можно править вручную.

Итак, заходим в настройки DNS-сервера, выбираем закладку Zones. Добавляем прямую зону (Primary Zone):

MX'ы не ставим, к ним дойдёт очередь при настройке почты (да, я надеюсь и это описать когда-нибудь). Также не будем прописывать вторичные DNS (slave DNS), я с трудом могу предположить два сервера в домашней сети. Однако для организации 2 DNS'а нужны - в случае отказа единственного DNS все компьютеры не смогут ничего резолвить.

Используем стандартные значения устаревания зоны и записей:

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

Выбираем нужную зону, и создаём необходимые A-записи (соответствие между именем и IP-адресом):

После добавления видим примерно такое:

Обратная зона 98.168.192.in-addr.arpa создалась автоматически:

У меня уже была зона 2.98.168.192.in-addr.arpa, содержащая один адрес сервера. Для того, чтобы не создавать проблем на ровном месте, я оставил резолвинг 192.168.98.2 в оригинальное имя:

Не забываем нажать Save, сервер автоматически перечитает зоны (увеличивать Serial не нужно). Журнальные записи можно посмотреть в закладке Log:

21-Dec-2009 11:53:44.275 zone home.ctrld.me/IN/com.apple.ServerAdmin.DNS.public: loaded serial 2009122100
21-Dec-2009 12:04:40.777 zone home.ctrld.me/IN/com.apple.ServerAdmin.DNS.public: loaded serial 2009122101
21-Dec-2009 12:04:40.784 zone home.ctrld.me/IN/com.apple.ServerAdmin.DNS.public: loaded serial 2009122101

Сейчас у нас две реверсные зоны - 2.98.168.192.in-addr.arpa и 98.168.192.in-addr.arpa. Берётся более конкретная (192.168.98.2 выдаётся из первой):

$ dig @192.168.98.2 -x 192.168.98.2 soa
2.98.168.192.in-addr.arpa. 10800 IN	SOA	ceiling-cat.ctrld.me. admin.localhost.localdomain.2.98.168.192.in-addr.arpa. 2009121100 86400 3600 604800 3600

$ dig @192.168.98.2 -x 192.168.98.3 soa
98.168.192.in-addr.arpa. 10800	IN	SOA	coche.home.ctrld.me. hostmaster.home.ctrld.me.98.168.192.in-addr.arpa. 2009122100 86400 3600 604800 345600

Для того, чтобы устранить путаницу, удалим 2.98.168.192.in-addr.arpa (не забываем жать Save):

$ dig @192.168.98.2 -x 192.168.98.2 soa
98.168.192.in-addr.arpa. 10800	IN	SOA	coche.home.ctrld.me. hostmaster.home.ctrld.me.98.168.192.in-addr.arpa. 2009122100 86400 3600 604800 345600

Зоны настроены, теперь описываем forwarder 8.8.8.8 (напомню, на него шлются запросы на записи в зонах, за которые сервер не авторитарен, т.е. которые на нём не сконфигурированы):

Save. Настройки закончены. Можно пользоваться. Как вы видите, настройка DNS-сервера под Mac OS X Server на порядок проще ручной настройки BIND для человека, не обременённого опытом системного администрирования Unix.

Но Mac OS X Server есть не у всех, и в следующей части рассмотрим стороннюю программу, которая делает то же самое, но под Mac OS X, причём за деньги.