Поднятие DNS сервера во FreeBSD 6.1

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

Первым делом ставим bind9 из портов:
Код
# cd /usr/ports/dns/bind9
# make WITH_PORT_REPLACES_BASE_BIND9=yes install
# make clean && rehash


Файлы конфигурации находятся в /etc/namedb.
Код
# cd /etc/namedb
# wget ftp://ftp.internic.net/domain/named.root -O named.root
# mv named.conf named.conf.bak
# vi named.conf


Содержимое named.conf:

Код
logging
{
category cname {null;};
};

options
{
directory "/etc/namedb";
pid-file "named.pid";
};

zone "."
{
type hint;
file "named.root";
};

zone "0.0.127.in-addr.arpa"
{
type master;
file "localhost.rev";
notify no;
};

zone "site.ru"
{
type master;
file "site.ru";
notify no;
};


Первый блок отключает логи.
Предпологается, что наш сервер должен выдавать информацию об одном доменном имени - site.ru.
Содержимое файла /etc/namedb/localhost.rev:

Код
@ IN SOA nsserver.ru. admin.nsserver.ru.(
 20060920     ; Serial
 86400        ; Refresh
 7200         ; Retry
 3600000      ; Expire
 86400        ; TTL
)
       IN      NS      nsserver.ru.
1       IN      PTR     localhost.nsserver.ru.


Предпологается, что доменное имя самого dns сервера (а его, как известно, сервер иметь обязан)- nsserver.ru, а e-mail администратора сервера - admin@nsserver.ru.
Обратите внимание на необходимость добавления точек в конце всех доменных имен.

Наконец конфигурируем саму зону. Вот сожержимое файла /etc/namedb/site.ru:

Код
site.ru. IN SOA nsserver.ru. admin.site.ru. (
 20060921     ; Serial
 86400        ; Refresh
 7200         ; Retry
 3600000      ; Expire
 86400        ; TTL
)
@       IN      NS      nsserver.ru.
@       IN      NS      secondary-nsserver.ru.
       IN      A       11.22.33.44
@       IN      MX      100 site.ru.
www     IN      CNAME   site.ru.
ftp     IN      CNAME   site.ru.
smtp    IN      CNAME   site.ru.
pop3    IN      CNAME   site.ru.
mail    IN      CNAME   site.ru.


Данный конфигурационный файл ставит в соответствие зоне site.ru IP 11.22.33.44 и e-mail администратора admin@site.ru. Также создаются домены третьего уровня:
Код
www.site.ru
ftp.site.ru
smtp.site.ru
pop3.site.ru
mail.site.ru

Этим доменам также ставится в соответствие IP 11.22.33.44. Кроме того для зоны site.ru создается MX запись (указывает IP почтового сервера, соответствующего данному домену, в общем случае http и почтовый серверы не обязаны находится на одной машине). Предпологается, что вторичный dns сервер зоны - secondary-nsserver.ru. Как известно, для создания зоны требуется по крайней мере два dns-сервера.
Если планируется, что dns сервер будет обслуживать несколько зон, то в named.conf необходима добавить следующие строки:
Код
zone "<имя_зоны>"
{
type master;
file "<конфигурационный_файл>";
notify no;
};


Где содержимое файла <конфигурационный_файл> будет аналогично содержимому файла site.ru, приведенного выше.
По окончанию конфигурации bind рекомендуется проверить синтаксис конфигурационных файлов. Для проверки файла named.conf используется утилита named-checkconf.
Для файла зоны - named-checkzone. Формат команды:

Код
named-checkzone <имя зоны> <имя конфигурационного файла>


например:

Код
named-checkzone site.ru. /etc/namedb/site.ru


Чтобы запустить dns-серовер, даем команду:

Код
# named


проверяем, как все работает:

Код
# ps -uax | grep named


Если программы с именем named в списке процессов не обнаружено - значит bind не удалось запустить. В большинстве случаев это связанно с неправильной конфигурацией сервера.
Для того, чтобы bind запускался при старте системы, необходимо добавить в /etc/rc.conf строки:

Код
named_enable="YES"
named_program="/usr/local/sbin/named"
named_flags="-c /etc/namedb/named.conf -u bind"


Автор блогадорит товарищей Shadowless и mulder за помощь при создании статьи.
Shadowless консультировал меня о тонкостях в устройстве сетей и втечение двух месяцев предоставлял мне хостинг, на котором производились мои страшные эксперементы. mulder упоминал в темпе Настройка BIND утилиты named-checkconf и named-checkzone, о существовании которых, я, если честно, не знал.

© drmist@STNC 18/10/06, http://www.security-teams.net


--------------------
Когда нельзя еще больше хочется...
PMСайт пользователя
Top
mulder
Дата 18.10.2006 - 17:05
Цитировать сообщение
Offline



.:in root we trust:.
*****

Профиль
Группа: -experts-
Сообщений: 1181
Пользователь №: 1151
Регистрация: 9.08.2005



Рейтинг:
(70%) XXXX-


В догонку лутшее это делать раз в месяц по крону так правильней
wget ftp://ftp.internic.net/domain/named.root -O named.root

В догонку что-бы не могли файл зоны вашей слить нуна еще две дерективки ибо по файлу ДНС зоны мона легко узнать о структуре твоей сетки что не совсем корректно
zone "site.ru"
{
type master;

allow-transfer { none; } ;
allow-updates { none; } ;

file "site.ru";
notify no;
};
для динамического обновления корректней всего
rndc прикрутить
PM
Top
Kom@nd'Or
Дата 18.10.2006 - 17:29
Цитировать сообщение
Offline



Expert
******

Профиль
Группа: -vip-
Сообщений: 1558
Пользователь №: 48
Регистрация: 2.03.2005



Рейтинг:
(60%) XXX--


Это что-бы поставилась самая последняя версия?:
Цитата
Первым делом ставим bind9 из портов:


Вот вчера ставил на виртуалку тестовую систему ...
Так без дополнительной установки там уже стоит

Цитата
#named -v
BIND 9.3.2