Перед сборкой следует отметить опцию REPLACE_BASE, чтобы заменить базовый BIND

bsd$ whereis -s bind99

bind99: /usr/ports/dns/bind99

bsd$ sudo make -C /usr/ports/dns/bind99 -D BATCH config install clean

Настройки сервиса хранятся в файле /usr/local/etc/named.conf

bsd$ sudo cat /usr/local/etc/namedb/named.conf

listen-on { 127.0.0.1; 192.168.84.232; };

listen-on-v6 { ::1; };

forwarders {

192.168.0.1;

8.8.8.8;

8.8.4.4;

};

zone "localhost" { type master; file "/usr/local/etc/namedb/master/localhost-forward.db"; };

zone "127.in-addr.arpa" { type master; file "/usr/local/etc/namedb/master/localhost-reverse.db"; };

key DHCP_UPDATER {

algorithm HMAC-MD5.SIG-ALG.REG.INT;

secret FsHj2NraUSTPaSAP8lpKoA==;

};

zone "bsd84" {

type master;

allow-update { key DHCP_UPDATER; };

file "/usr/local/etc/namedb/master/bsd84.db";

};

zone "84.168.192.in-addr.arpa" {

type master;

allow-update { key DHCP_UPDATER; };

file "/usr/local/etc/namedb/master/84.168.192.in-addr.arpa";

};

Ключ можно получить утилитой dnssec-keygen (см. Настройка сервера DHCP)


В файле описания зоны ранее использовался символ @, заменявший имя файла. Т.е. для файла localhost запись вида @ IN SOA @ будет интерпретирована, как localhost IN SOA localhost

Теперь имена файлов зон localhost и 127.in-addr.arpa заменили на более дружественные localhost-forward.db и localhost-reverse.db. Так что, смысл использования этого символа остается только в том случае, если именовать файлы зон по старой традиции, без добавления расширения '.db' (т.е. не bsd84.db, а просто bsd84)

Кроме того, если в файле зоны не поставить точку после имени пользователя или хоста, то сервис автоматически добавит к нему имя файла в качестве DNS-суффикса. Т.е. запись @ IN SOA localhost в файле localhost-forward.db будет интерпретирована, как localhost-forward.db IN SOA localhost.localhost-forward.db

Если файлы зон будут заполнены правильно, то сервис стартует без ошибок и файлы зон будут переписаны им с разделением на секции. Если же сервис не сможет стартовать, то при включенном протоколировании (см. ниже) будет создан лог, в котором можно будет найти причину невозможности запуска сервиса

bsd$ sudo cat /usr/local/etc/namedb/master/bsd84.db

bsd84IN SOAns1.bsd84. nobody.bsd84. (
 
 NSns1.bsd84.
 
ns1A192.168.84.232
 AAAA2001:5c0:1101:1700::1
 AAAAfe80::215:f2ff:feba:e2ab

bsd$ sudo cat /usr/local/etc/namedb/master/84.168.192.in-addr.arpa.db

84.168.192.in-addr.arpaIN SOAbsd84. nobody.bsd84. (
 
 NSns1.bsd84.
 
232PTRns1.bsd84.

bsd$ sudo cat /usr/local/etc/namedb/master/localhost-forward.db

localhost.IN SOAlocalhost. nobody.localhost. (
 
 NSlocalhost.
 
localhost.A127.0.0.1
localhost.AAAA::1

bsd$ sudo cat /usr/local/etc/namedb/master/localhost-reverse.db

127.in-addr.arpa.IN SOAlocalhost. nobody.localhost. (
 
INNSlocalhost.
1.0.0INPTRlocalhost.
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0INPTRlocalhost.

Чтобы сервис вел подробный протокол необходимо в файле конфигурации /usr/local/etc/named.conf указать параметры ведения логов (см. man dhcpd.conf)

logging {

channel update_debug {

file "/var/log/update-debug.log";

severity debug 3;

print-category yes;

print-severity yes;

print-time yes;

};

channel security_info {

file "/var/log/named-auth.info";

severity info;

print-category yes;

print-severity yes;

print-time yes;

};

category update { update_debug; };

category security { security_info; };

};

Необходимо самостоятельно создать файлы протоколов и назначить им соответствующего владельца

bsd$ sudo touch /var/log/update-debug.log

bsd$ sudo touch /var/log/named-auth.info

bsd$ sudo chown named:named /var/log/update-debug.log

bsd$ sudo chown named:named /var/log/named-auth.info

Настроить ротацию логов с помощью syslogd

bsd$ echo '/var/log/update-debug.log 400 3 100 * JC' | sudo tee -a /etc/newsyslog.conf

bsd$ echo '/var/log/named-auth.info 400 3 100 * JC' | sudo tee -a /etc/newsyslog.conf

bsd$ sudo /etc/rc.d/syslogd restart

Включение и уровень детализации логов необходимо указать в /etc/rc.conf

bsd$ echo 'named_flags="-d 3"' | sudo tee -a /etc.rc.conf

bsd$ sudo /usr/local/etc/rc.d/named restart


bsd$ man named.conf

bsd$ man dhcpd.conf