Настройка BIND 9.6 под FreeBSD 8 (рекурсивный и мастер DNS)

Доброго времени суток. Если вы никогда не настраивали собственный DNS (сервер имен) тогда эта запись именно для Вас. Мы будем рассматривать BIND (сервер DNS) на операционной системе FreeBSD 8. Все возможности сервера имен и ОС FreeBSD мы конечно не рассмотрим, но дадим достаточно информации для начала + рабочие примеры. После изучения этой небольшой записи вы сможете поднять свой сервер DNS двух типов.

1. Кэширующий рекурсивный DNS сервер на базе BIND.

2. Первичный сервер DNS на базе BIND для размещение на нем первичной зоны домена.

Вначале совсем немного общей теории. Рассмотрим три вопроса которые непосредственно относятся к теме статьи.

1.Что такое BIND ?

2. Что такое кэширующий рекурсивный DNS сервер ?

3. Что такое первичный (primary или master) сервер имен?

По порядку, BIND – это самый распространенный сервер имен в сети интернет, он является стандартом для систем Unix( FreeBSD, Linux, NetBSD). Рекурсивным сервером называется сервер выполняющий от имени клиентов поиск соответствий в системе DNS, он также обращается к другим DNS-серверам, т.е все днс запросы будет обрабатывать ваш сервер а клиент будет получать готовый ответ. Кэширующий сервер будет сохранять уже выполненные задания не повторяя операции сразу выдавая ответ. Первичный сервер имен – сервер способный обслуживать доменную зону (сервер на котором домен описан), т.е другие сервера DNS будут спрашивать у вашего о зоне которая размещена на нем.

Итак переходим к практике.

Есть только что установленная система FreeBSD 8 , на ней есть как минимум один сетевой интерфейс с реальным ip адресом. Проверяем наличие сервера BIND (named).


# whereis bind
bind: /usr/share/man/man1/bind.1.gz
# whereis named
named: /usr/sbin/named /usr/share/man/man8/named.8.gz
# named -v
BIND 9.6.1-P1
#

Из под обычного пользователя (не root) обновляем базу locate (для удобного и быстрого поиска), ищем
необходимый нам для настройка bind файл named.conf.

> /usr/libexec/locate.updatedb
> locate named.conf
/usr/share/man/man5/named.conf.5.gz
/var/named/etc/namedb/named.conf
>

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

listen-on { 127.0.0.1; };

адрес вашего внешнего ip ( и внутреннего если необходимо)
К примеру так

listen-on { 127.0.0.1;192.168.1.1; 8.9.10.11; };

и добавить сети которым разрешено отправлять рекурсивные запросы.

allow-recursion { 127.0.0.1;192.168.1.1; 8.9.10.11; };

Все сохраняем. теперь запускаем сервер, добавляем необходимую строчку в rc.conf

named_enable=”YES”

запускаем и проверяем что процесс запущен.

# /etc/rc.d/named start
wrote key file “/var/named/etc/namedb/rndc.key”
Starting named.
# ps -ax | grep named
2010 ?? Is 0:00.95 /usr/sbin/named -t /var/named -u bind
#

Теперь создаем файл resolv.conf в него добавляем наш DNS nameserver 127.0.0.1 проверяем как он работает.

# echo “nameserver 127.0.0.1″ > /etc/resolv.conf
# ping ifreebsd.org
PING ifreebsd.org (77.120.123.227): 56 data bytes
64 bytes from 77.120.123.227: icmp_seq=0 ttl=57 time=2.954 ms
64 bytes from 77.120.123.227: icmp_seq=1 ttl=57 time=6.339 ms
64 bytes from 77.120.123.227: icmp_seq=2 ttl=57 time=6.560 ms
64 bytes from 77.120.123.227: icmp_seq=3 ttl=57 time=6.253 ms
# nslookup ifreebsd.org
Server: 127.0.0.1
Address: 127.0.0.1#53

Non-authoritative answer:
Name: ifreebsd.org
Address: 77.120.123.227

#

Можете себя поздравить, теперь перейдем к не более сложной конфигурации сервера имен BIND на котором мы планируем разместить свой домен.

В ту же секцию options {} добавляем разрешение на трансфер зон ( там должен быть указан ip адрес вашего slave (подчиненного) сервера имен) . Дело в том что для регистрации или переноса домена вам необходимо как минимум два сервера имен главный (master) и подчиненный (slave или seconadary). Slave dns будет разрешено копировать вашу зону, для этого нужно указать его адрес.

allow-transfer { 193.201.116.0/25;};

В данном примере мы указываем сервер dns secondary.net.ua (бесплатный svale NS ) но вы можете использовать любой, в сети их множество. Как пользоваться secondary.net.ua можно почитать тут http://secondary.net.ua/howto/. Далее в части named.conf где описаны зоны добавляем указание на зону нашего домена.
zone “domen.net” {
type master;
file “master/domen.net”;
};

Сохраняем. Теперь создаем саму зону. Пример изображен ниже, в вашем случае нужно как минимум изменить имя домена(domen.net) на ваш домен и поменять ip адрес.

cd /var/named/etc/namedb/master

vi domen.net

$TTL 3600

@ IN SOA ns.domen.net. hostmaster.domen.net. (

20090958 ; Serial

86400 ;Refresh, 24 hours

14400 ;Retry, 4 hours

2592000 ;Expire, 30 days

86400) ;Minium, 24 hours

IN NS ns.domen.net.

IN NS ns.secondary.net.ua.

IN A 8.9.10.11

IN MX 10 smtp.domen.net.

IN MX 20 relay.domen.net.

relay IN A 8.9.10.11

mx IN A 8.9.10.11

ns IN A 8.9.10.11

www IN A 8.9.10.11

smtp IN A 8.9.10.11

pop3 IN A 8.9.10.11

Рассмотрим этот файл. Это пример домена который мы в будущем будем использовать как имя для DNS сервера ns.domen.net. Первая запись это время жизни $TTL – задает время хранения вашей зоны в кэше dns серверов. Далее идет описание самой зоны – SOA.
ns.domen.net. hostmaster.domen.net. - первое это указание на имя сервера имен который является главным (master или primary ) сервером для этой зоны, второй - e-mail для контактов с администратором домена в данном случае читать как hostmaster@domen.net. Идем дальше :
serial – серийный номер, любое число (32 бита) увеличение которого сигнализирует о том что доменная зона изменена. (удобно использовать год/месяц/день как в нашем примере)
refresh – интервал времени после которого подчиненный (slave или secondary) dns обратиться к master серверу чтобы перечитать зону.
retry - определяет интервал времени после которого производиться повторная попытка в случае если refresh не удался.
expire – определяет количество времени спустя которое slave NS должен прекратить
раздавать зону если refresh и retry закончились неудачей.
minium – устанавливает время кэширования ответов, после - делается вывод о невозможности определить соответствия между ip и буквенным именем.
Ниже - указание на dns сервер на котором находиться зона primary и slave (может быть несколько). Записи вида A ( IN A ) это запись соответствия между ip и именем в примере можно посмотреть какие соответствия прописали мы.
Запись вида MX (IN MX) специальная запись которая необходима для работы почтового сервера (нужна для маршрутизации почты в сети Интернет).
С файлом разобрались, сохранили. Теперь мы в финальной фазе нашей работы. Перегружаем NAMED (bind). И проверяем.

# /etc/rc.d/named restart
Stopping named.
Starting named.
# nslookup a-lan.org.ua
Server: 127.0.0.1
Address: 127.0.0.1#53

Non-authoritative answer:
Name: domen.net
Address: 8.9.10.11

#

Все.! Поздравляю.

http://ifreebsd.org/freebsd/настройка-bind-9-6-под-freebsd-8-рекурсивный-и-масте/

Обновлено: 12.03.2015