Описав недавно теорию DNS зон, решил еще и на практике это дело подкрепить, а что бы для полного счастья – использовал в связке Windows Server 2008 + DNS и FreeBSD 8.0 + BIND.
Оговорюсь сразу, системы проинсталлированы с нуля. Кроме того, FreeBSD в моем случае выступает в роли шлюза, ну а Windows Server 2008 – ясное дело, контроллером домена который находится за этим шлюзом. Для тестов я выдумал незарегистрированный никем домен domain.pp.ua. И все тесты провожу на нем. В мире он на данный момент не откликается никак, поэтому мне для тестов он подходит – тем более, что всё будет проходить локально. Свой шлюз на FreeBSD я поименовал как fw, а Windows Server 2008 как pdc. Шлюз fw смотрит в интернет через машинку на которой установлен бесплатный vmware server и второй виртуальной карточкой связывается с машиной pdc. В двух словах, эмуляция двух физических машин на одной из которых 1 сетевая карточка, а на второй 2. Обе машины связаны перевернутым патч-кордом, а та у которой 2 карточки, оставшейся смотрит в интернет.
Первой задачей я перед собой поставил – красиво подружить сетевую инфраструктуру, этих двух ОС, а именно:
1. Все запросы, которые приходят из внешней сети вида
«*.domain.pp.ua» на FreeBSD, перенаправлять запросы на DNS в Windows
Server 2008 и отдавать их.
2. Держать первичную обратную зону на DNSе Windows Server 2008 подсети в
которой находится pdc и копию на BIND, а также настроить красивое
отображение машин в консоли на fw, когда набираешь команду arp -a.
3. На все остальные зоны, реальные интернетовские – получать ответ от fw.
PS. В идее заложено, что у нас существуют несколько Windows Server 2008 DNS серверов, хотя привожу пример с одним.
Итак.. Решение..
На Windows Server 2008 заходим в «Панель управления – > Администрирование» и запускаем «Диспетчер сервера». В открывшемся окне ткнуть доп.кн. мышки на роли и в выпавшем меню выбрать «Добавить роли». Перед вами предстанет «Мастер добавления ролей», выбираем DNS-сервер и тыкаем далее пока не установится. А если у Вас уже установлен DNS то просто раскрываем в диспетчере роли и заходим в оснастку DNS.
Заходим в «Зоны прямого просмотра» и клацаем доп. кн. мышки выбирая
пункт «Создать новую зону», перед вами откроется «мастер создания новой
зоны», в котором необходимо создать «Основную зону», далее вписать её
название «domain.pp.ua, выбрать тип обновлений.. Ну впрочем можно всё по
умолчанию.
После этого, в появившейся зоне ткнуть доп. кн. мыши и выбрать «Создать
узел (А или АААА)…» и добавить запись для нашего шлюза fw, указав его
IP-адрес.
Далее, переходим к закладке «Зоны обратного просмотра» и там
проделываем почти аналогичную операцию, но указывая к какому типу
протокола относится данная зона IPv4 или IPv6 и далее необходимо указать
«Идентификатор сети» – нашу подсеть, которую мы будем обрабатывать.
В моем случае это «10.10.1.*», при этом имя зоны автоматически
сформированное, будет иметь вид: «1.10.10.in-addr.arpa». И дальше все по
умолчанию..
После чего просмотрим в свеже созданной зоне, все ли нас интересующие
записи имеются в наличии. У меня не было обратной записи для fw.
Снова возвращаемся во вкладку «Зоны прямого просмотра -> domain.pp.ua» и открываем зону fw, клацая по ней двойным кликом. Ставим птичку на против пункта «Обновить соответствующую PTR-запись» и жмем, «ок». Перепроверим в обратной зоне появление зоны для fw.
После добавления всех необходимых нам зон, разрешим копировать обратные зоны на BIND с адресом 10.10.1.1. Для этого клацаем доп. кн. мышки по обратной зоне «1.10.10.in-addr.arpa», выбираем пункт «Свойства» и переходим на вкладку «Передачи зон», ставим птичку на пункт «только на серверы из этого списка» и клацаем на кнопку «изменить», далее добавляем наш сервер: «10.10.1.1″ и клацаем везде «ок».
В принципе, на этом с настройками DNS в Windows Server 2008 закончено, переходим к BIND в FreeBSD.
Приводим содержание файла /etc/resolv.conf к такому виду:
# cat /etc/resolv.conf
search DOMAIN.PP.UA
nameserver 127.0.0.1
Далее, редактируем наш BIND. Я сильно не стал заморачиваться с основными настройками, а добавил только необходимый минимум, так как это для теста. Более детальные настройки можно найти в моей статье: BIND 9 на FreeBSD.
Редактируем основные записи в файле /etc/namedb/named.conf:
forwarders { 192.168.0.1; 194.15.47.1; };
forward first;
Добавляем зоны:
zone "domain.pp.ua" {
type stub;
masters {10.10.1.2;}
};
zone "1.10.10.in-addr.arpa" {
type slave;
allow-query {any;};
file "slave/1.10.10.in-addr.arpa";
};
PS. В опцию «allow-query», вместо «{any;};», необходимо вписать ваши подсети, потому как по правилам безопасности такое не приветствуется.
Сохраняем и стартуем BIND.
# /usr/sbin/named -u bind
Проверяем..
На машинке pdc в консоли:
Win-Serv> ping noted.org.ua
Обмен пакетами с noted.org.ua [81.90.229.18] с 32 байтами данных:
...................
Win-Serv> ping fw.domain.pp.ua
Обмен пакетами с fw.domain.pp.ua [10.10.1.1] с 32 байтами данных:
...................
Порядок..
На машинке fw:
# ping pdc
PING pdc.DOMAIN.PP.UA (10.10.1.2): 56 data bytes
64 bytes from 10.10.1.2: icmp_seq=0 ttl=128 time=0.172 ms
64 bytes from 10.10.1.2: icmp_seq=1 ttl=128 time=0.230 ms
^C
ping domain.pp.ua
PING domain.pp.ua (10.10.1.2): 56 data bytes
64 bytes from 10.10.1.2: icmp_seq=0 ttl=128 time=0.163 ms
64 bytes from 10.10.1.2: icmp_seq=1 ttl=128 time=0.224 ms
^C
ping fw.domain.pp.ua
PING fw.domain.pp.ua (10.10.1.1): 56 data bytes
64 bytes from 10.10.1.1: icmp_seq=0 ttl=64 time=0.025 ms
^C
И на последок:
ping noted.org.ua
PING noted.org.ua (81.90.229.18): 56 data bytes
64 bytes from 81.90.229.18: icmp_seq=0 ttl=58 time=132.912 ms
^C
А ещё, я настроил на машинке на которой стоит vmware server альтернативный DNS на внешний адрес виртуального сервера fw и также получил все ответы как и на внутренних.
Для полной уверенности (хоть я и видел копию обратной зоны, но всё же), я выключил pdc сервер и набрал в консоли fw:
arp -a
fw.domain.pp.ua (10.10.1.1) at 00:0c:19:19:19:31 on le1 permanent [ethernet]
pdc.domain.pp.ua (10.10.1.2) at 00:0c:39:ed:14:ab on le1 [ethernet]
Ну, вот.. собственно сделал то чего хотел..