Устанавливаем BIND из портов. На момент написания статьи последняя версия была 9.6.0-P1.
# cd /usr/ports/dns/bind96
# make  install clean
Отмечаем опцию «REPLACE_BASE», чтобы заменить базовый BIND
Добавляем в файл /etc/rc.conf следующие строчки:
named_enable=»YES»
В файле named.conf дополняем адреса с которых будут приниматься запросы DNS:
listen-on { 10.10.0.0/16; 127.0.0.1; };
Там же прописываем адреса провайдера:
forwarders { 213.135.97.131; }
/etc/resolv.conf должен выглядить так:
nameserver 127.0.0.1
Перезагружаемся и смотрим логи на наличие ошибок — /var/log/messages. В дальнейшем перезагружать сервер целиком не потребуется. Для рестарта сервиса named применяется одна из команд:
# /etc/rc.d/named restart
# killall -HUP named
Если перезагрузка вызывает ошибку, к примеру такую:
# /etc/rc.d/named restart
Stopping named:  rndc failed, trying killall: .
Starting named.
Отключаем  файрволл и запускам команду снова. Если команда сработала, то меняем правила.  Для PF нужно добавить строчку:
set skip on  lo0
В предшествующих версиях BIND для создания реверсной зоны нужно было запускать скрипт /var/named/etc/namedb/make-localhost В версии bind 9.6 такого скрипта уже нет. Имеются два файла localhost-forward.db и localhost-reverse.db. Для создания файла зоны нужно скопировать localhost-forward.db под новым имененем зоны отредактировать:
# cp localhost-forward.db 6mk.lan
Работа с rndc
Включаем возможность работы с утилитой rndc:
# rndc-confgen > /etc/namedb/rndc.conf
копируем строки из rndc.conf в конец файла named.conf и снимаем с них комментарии.
Примеры конфигов
6mk.lan
$TTL 3600 ;  1 hour
6mk.lan. IN SOA ns.6mk.lan. admin.6mk.lan. (
2008010301 ;  Serial
10800 ; Refresh
3600 ; Retry
604800 ; Expire
86400 ;  Minimum TTL
)
; DNS Servers
IN NS ns.6mk.lan.
IN A  10.10.38.50
; Machine Names
ns IN A 10.10.38.50
;  Aliases
www IN CNAME  @
38.10.10.in-addr.arpa
; $FreeBSD: src/etc/namedb/master/localhost-reverse.db,v 1.1.8.1 2008/11/25 02:59:29 kensmith Exp $
$TTL 3h
@ SOA ns.6mk.lan.  admin.6mk.lan. 42 1d 12h 1w 3h
; Serial, Refresh, Retry, Expire, Neg. cache  TTL
IN NS ns.6mk.lan.
50 IN PTR ns.6mk.lan.
50 IN PTR  6mk.lan.
named.conf
options {
// Relative to the chroot directory, if any
directory «/etc/namedb»;
pid-file «/var/run/named/pid»;
dump-file  «/var/dump/named_dump.db»;
statistics-file  «/var/stats/named.stats»;
listen-on { 127.0.0.1; 10.10.0.0/16; 10.11.0.0/24; };
disable-empty-zone «255.255.255.255.IN-ADDR.ARPA»;
forwarders {
127.0.0.1;  213.135.97.131;
};
};
zone «.» { type hint; file «named.root»; };
zone «6mk.lan» {
type master;
file  «master/6mk.lan»;
};
zone «38.10.10.in-addr.arpa» {
type  master;
file «master/38.10.10.in-addr.arpa»;
};
// RFC  1912
zone «localhost» { type master; file «master/localhost-forward.db»;  };
zone «127.in-addr.arpa» { type master; file «master/localhost-reverse.db»;  };
zone «255.in-addr.arpa» { type master; file «master/empty.db»; };
#  Use with the following in named.conf, adjusting the allow list as  needed:
key «rndc-key» {
algorithm hmac-md5;
secret  «zYt7cPSrHnIEwBagJtcIHg==»;
};
controls {
inet 127.0.0.1 port  953
allow { 127.0.0.1; } keys { «rndc-key»; };
};
# End of  named.conf