Перед сборкой следует отметить опцию 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
bsd84 | IN SOA | ns1.bsd84. nobody.bsd84. ( |
NS | ns1.bsd84. | |
ns1 | A | 192.168.84.232 |
AAAA | 2001:5c0:1101:1700::1 | |
AAAA | fe80::215:f2ff:feba:e2ab |
bsd$ sudo cat /usr/local/etc/namedb/master/84.168.192.in-addr.arpa.db
84.168.192.in-addr.arpa | IN SOA | bsd84. nobody.bsd84. ( |
NS | ns1.bsd84. | |
232 | PTR | ns1.bsd84. |
bsd$ sudo cat /usr/local/etc/namedb/master/localhost-forward.db
localhost. | IN SOA | localhost. nobody.localhost. ( |
NS | localhost. | |
localhost. | A | 127.0.0.1 |
localhost. | AAAA | ::1 |
bsd$ sudo cat /usr/local/etc/namedb/master/localhost-reverse.db
127.in-addr.arpa. | IN SOA | localhost. nobody.localhost. ( | |
IN | NS | localhost. | |
1.0.0 | IN | PTR | localhost. |
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.0 | IN | PTR | localhost. |
Чтобы сервис вел подробный протокол необходимо в файле конфигурации /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