cd/usr/ports/dns/bind910 make install clean ┌────────────────────────────── bind910-9.10.4 ────────────────────────────────┐ │ ┌──────────────────────────────────────────────────────────────────────────┐ │ │ │+[x] DOCS Build and/or install documentation │ │ │ │+[ ] FETCHLIMIT Enable the query quotas for resolvers │ │ │ │+[ ] FILTER_AAAA Enable filtering of AAAA records │ │ │ │+[ ] FIXED_RRSET Enable fixed rrset ordering │ │ │ │+[x] GEOIP Allow geographically based ACL. │ │ │ │+[x] IDN International Domain Names support │ │ │ │+[ ] IPV6 IPv6 protocol support │ │ │ │+[ ] LARGE_FILE 64-bit file support │ │ │ │+[x] LINKS Create conf file symlinks in /usr/local │ │ │ │+[ ] MINCACHE Use the mincachettl patch │ │ │ │+[ ] NEWSTATS Enable alternate xml statistics channel format │ │ │ │+[ ] PORTREVISION Show PORTREVISION in the version string │ │ │ │+[ ] PYTHON Build with Python utilities │ │ │ │+[ ] QUERYTRACE Enable the very verbose query tracelogging │ │ │ │+[ ] RPZ_NSDNAME Enable RPZ NSDNAME policy records │ │ │ │+[ ] RPZ_NSIP Enable RPZ NSIP trigger rules │ │ │ │+[x] RRL Response Rate Limiting │ │ │ │+[x] SIGCHASE dig/host/nslookup will do DNSSEC validation │ │ │ │+[x] START_LATE Start BIND late in the boot process │ │ │ │+[x] THREADS Threading support │ │ │ │──────────────────────── Dynamically Loadable Zones ──────────────────────│ │ │ │+[ ] DLZ_POSTGRESQL DLZ Postgres driver │ │ │ │+[ ] DLZ_MYSQL DLZ MySQL driver (no threading) │ │ │ │+[ ] DLZ_BDB DLZ BDB driver │ │ │ │+[ ] DLZ_LDAP DLZ LDAP driver │ │ │ │+[ ] DLZ_FILESYSTEM DLZ filesystem driver │ │ │ └─────v(+)─────────────────────────────────────────────────────────68%─────┘ │ ├──────────────────────────────────────────────────────────────────────────────┤ │ < OK > <Cancel> │ └──────────────────────────────────────────────────────────────────────────────┘ Installing bind910-9.10.4... ********************************************************************** * _ _____ _____ _____ _ _ _____ ___ ___ _ _ * * / \|_ _|_ _| ____| \ | |_ _|_ _/ _ \| \ | | * * / _ \ | | | | | _| | \| | | | | | | | | \| | * * / ___ \| | | | | |___| |\ | | | | | |_| | |\ | * * /_/ \_\_| |_| |_____|_| \_| |_| |___\___/|_| \_| * * * * BIND requires configuration of rndc, including a "secret" key. * * The easiest, and most secure way to configure rndc is to run * * 'rndc-confgen -a' to generate the proper conf file, with a new * * random key, and appropriate file permissions. * * * * The /usr/local/etc/rc.d/named script will do that for you. * * * ********************************************************************** ===> SECURITY REPORT: This port has installed the following files which may act as network servers and may therefore pose a remote security risk to the system. /usr/local/sbin/named-journalprint /usr/local/sbin/named /usr/local/sbin/rndc-confgen /usr/local/sbin/dnssec-verify /usr/local/sbin/ddns-confgen /usr/local/sbin/dnssec-dsfromkey /usr/local/bin/host /usr/local/sbin/nsec3hash /usr/local/sbin/dnssec-signzone /usr/local/bin/nsupdate /usr/local/sbin/rndc /usr/local/sbin/lwresd /usr/local/bin/dig /usr/local/sbin/dnssec-revoke /usr/local/sbin/isc-hmac-fixup /usr/local/sbin/dnssec-keygen /usr/local/bin/delv /usr/local/sbin/named-checkzone /usr/local/sbin/dnssec-keyfromlabel /usr/local/sbin/dnssec-importkey /usr/local/sbin/named-checkconf /usr/local/sbin/genrandom /usr/local/sbin/named-rrchecker /usr/local/bin/nslookup /usr/local/sbin/dnssec-settime This port has installed the following startup scripts which may cause these network services to be started at boot time. /usr/local/etc/rc.d/named If there are vulnerabilities in these programs there may be a security risk to the system. FreeBSD makes no guarantee about the security of ports included in the Ports Collection. Please type 'make deinstall' to deinstall the port if this is a concern. For more information, and contact details about the security status of this software, see the following webpage: https://www.isc.org/software/bind ===> Cleaning for libxml2-2.9.3 ===> Cleaning for GeoIP-1.6.9 ===> Cleaning for idnkit-1.0_5 ===> Cleaning for libedit-3.1.20150325_2 ===> Cleaning for bind910-9.10.4 root@mgmt:/usr/ports/dns/bind910# rehash root@mgmt:/usr/ports/dns/bind910# pkg info | grep bind bind910-9.10.4 BIND DNS suite with updated DNSSEC and DNS64 root@mgmt:/usr/ports/dns/bind910#
После завершения установки, проверяю версию установленного BIND:
named -v
Файл настройки BIND 9 обычно называется /etc/named.conf. Утилита named-checkzone проверяет синтаксис файла зоны. В качестве параметра указываются имя зоны и имя файла. Утилита named-checkconf проверяет синтаксис файла настройки. В качестве параметра можно указать имя файла.
Комментарии в файле настройки могут записываться в стиле C, C++ или sh. Строки и идентификаторы, не являющиеся доменными именами, например, имена файлов, обязательно заключать в кавычки.
Во многих местах файла настройки используется такая синтаксическая конструкция, как список-шаблонов-адресов: список через точку с запятой шаблонов адресов, завершающийся точкой с запятой. Шаблон адреса - это либо IP-адрес, либо IP-адрес с указанием числа бит в маске адреса (например, 192.168.0.0/28), либо имя ACL (т.е. ссылка на ранее определенный утверждением acl список-шаблонов-адресов, либо список-шаблонов-адресов в фигурных скобках, либо ключевое слово key с последующим именем ключа (определяется утверждением key). Имена рекомендуется заключать в кавычки. Перед шаблоном адреса может стоять символ отрицания (восклицательный знак). Ключи попали в эту конструкцию, потому что они тоже определяют права доступа, хотя и не имеют отношения к адресам хостов. Исходный адрес сравнивается последовательно с элементами списка до первого успешного соответствия. Если перед этим элементом списка стоит символ отрицания, то процесс завершается и сравнение со всем списком-шаблонов-адресов считается неудачным. Предопределены следующие имена ACL:
Список-ключей - это список ключей через точку с запятой, завершающийся точкой с запятой.
Файл настройки состоит из утверждений, завершающихся точкой с запятой. Утверждение начинается с ключевого слова и может содержать блок предложений, заключенный в фигурные скобки. Предложение в блоке также завершается точкой с запятой, начинается с ключевого слова и может содержать блок. Утверждения обрабатываются последовательно. Предусматриваются следующие типы утверждений:
Утверждение options может содержать следующие предложения:
host -t txt -c CHAOS version.bind адрес-сервера
host -t txt -c CHAOS hostname.bind адрес-сервера
Утверждение server может использоваться на верхнем уровне файла настройки или быть вложено в утверждение view. Если утверждение view содержит хотя бы одно утверждение server, то для данного вида используются только они (глобальные утверждения server игнорируются), иначе глобальные утверждения server действуют и на данный вид. Утверждение server может содержать следующие предложения:
Утверждение zone устанавливает опции, специфические для указанной зоны. Формат утверждения следующий:
zone имя-зоны [ класс ] { type тип-зоны; [ опция; ... ] };
Имя зоны - это доменное имя корневого узла зоны. Тип зоны определяет роль, которую сервер будет исполнять для этой зоны:
Опции зоны (большинство опций позволяют заменить глобальные значения, заданные в утверждении options или взятые по умолчанию; они имеют тот же самый синтаксис и семантику):
Утверждение view позволяет выдавать различные ответы на один и тот же запрос в зависимости от того, кто спрашивает. То есть вид доменного пространства будет зависеть от точки зрения. Берётся первый подходящий вид в зависимости от адреса клиента (match-clients) или сервера (match-destinations). Если не определено ни одного вида, то по умолчанию создаётся вид «default» в классе IN, в который попадают описания всех зон для всех клиентов. Если хотя бы один вид описывается явно, то все зоны должны быть внутри видов. Формат утверждения следующий:
view имя-вида [ класс ] { match-clients { список-шаблонов-адресов }; match-destinations { список-шаблонов-адресов }; match-recursive-only { yes_or_no }; [ опция; ... ] [ определение зоны; ... ] };
Чтобы принять 2 вида зоны slave сервер должен иметь 2 адреса, на которые будут передаваться различные виды.
Для работы в chroot окружении в /etc/rc.conf добавляю:
named_enable="YES" named_chrootdir="/var/named" altlog_proglist="named"
/var/named - это и есть песочница, где named будет жить
Делаем песочницу, которая раньше делалась в FreeBSD автоматом
mkdir -p /var/named/usr/local/etc/ mkdir -p /var/named/var/dump mkdir -p /var/named/var/run/named mkdir -p /var/named/var/stats mkdir -p /var/named/dev mv /usr/local/etc/namedb /var/named/usr/local/etc/ cd /usr/local/etc ln -s /var/named/usr/local/etc/namedb mkdir -p /var/run/named
Для pid и session.key файлов и создаю такие ссылки:
cd /var/run/named ln -s /var/named/var/run/named/pid pid ln -s /var/named/var/run/named/session.key session.key ls -l /var/run/named/ total 1 lrwxr-xr-x 1 root wheel 28 13 февр. 13:00 pid -> /var/named/var/run/named/pid lrwxr-xr-x 1 root wheel 36 13 февр. 13:00 session.key -> /var/named/var/run/named/session.key
Создаю devfs правило для использования chroot окружения. Добавляю в /etc/devfs.rules, если файла нет нужно создать:
cat devfs.rules # Правила для named chroot dev # [devfsrules_named_chroot=5] add hide add path run unhide add path random unhide
Добавляю в в /etc/fstab:
devfs /var/named/dev devfs rw,ruleset=5 0 0
Монтирую devfs файловую систему:
mount /var/named/dev
Черновик
/usr/local/etc/namedb/named.conf
cat named.conf options {
// All file and path names are relative to the chroot directory, // if any, and should be fully qualified. directory "/usr/local/etc/namedb/working"; // Рабочий каталог pid-file "/var/run/named/pid"; // местонахождение pid dump-file "/var/dump/named_dump.db"; // где хранить дамп statistics-file "/var/stats/named.stats"; // где хранить статистику listen-on { 127.0.0.1; 95.31.208.14; 10.216.130.1; };
listen-on-v6 { ::1; }; allow-query { any; }; Разрешаю посылать запросы только из любой сети
allow-recursion {10.216.130.0/24; 127.0.0.1; }; version "made in USSR"; // строка выдаваемая в ответ на запро о версии // Игнорировать запросы blackhole // DNS-сервер не посылает запросы к DNS-серверам из этого списка // и не отвечает на запросы, получаемые от этих серверов. blackhole { 0.0.0.0/8; 10.0.0.0/8; 169.254.0.0/16; 172.16.0.0/12; 192.0.2.0/24; 192.168.0.0/16; 224.0.0.0/4; 240.0.0.0/4; }; disable-empty-zone "255.255.255.255.IN-ADDR.ARPA"; disable-empty-zone "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.0.0.IP6.ARPA"; disable-empty-zone "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.0.IP6.ARPA";
/* Данная команда определяет адреса серверов доменных имен куда следует отправлять рекурсивные запросы. Естественно, что на этих серверах для хоста, на котором установлен named, должна быть разрешена обработка рекурсивных запросов с этого хоста. forwarders { 127.0.0.1; }; */ }; include «/usr/local/etc/namedb/rndc.key»; include «/usr/local/etc/namedb/nskey.key»;
server 94.255.92.23 {
keys { nskey; };
};
#вид для внутренних зон view internal { #зоны резолвятся для клиентов сетей 10.216.130.0/24 и локалхоста match-clients { 127.0.0.1; 10.216.130.0/24; };
include «/usr/local/etc/namedb/named.rfc»;
zone «.» {
type hint; file "/usr/local/etc/namedb/named.root"; };
zone «mgmt.klotik.ru» {
type master; file "/usr/local/etc/namedb/master/mgmt.klotik.ru"; };
zone «130.216.10.in-addr.arpa» {
type master; file "/usr/local/etc/namedb/master/mgmt.klotik.ru.rev"; };
};
# Вид для внешних зон view external { #Для всех остальных сетей и IP которые явно не указаны в предыдущих view match-clients { any; }; zone «klotik.ru» {
type slave; file "/usr/local/etc/namedb/slave/ext.klotik.ru"; masters {94.255.92.23;}; };
zone «92.255.94.in-addr.arpa» {
type slave; file "/usr/local/etc/namedb/slave/ext.klotik.ru.rev"; masters {94.255.92.23;}; };
};
acl localnet { 192.168.0.0/22; 127.0.0.1;};. acl all { any; };
options { Запрет отдавать номер версии сервера. version none; Запрет отдавать имя хоста, на котором работает BIND
hostname none;
запрет отдавать запросы об идентификаторе server-id none; Разрешаем по-умолчанию днс запросы только от доверенных сетей
allow-query { localnet; };
Разрешать ли рекурсивные запросы, или отдавать только те зоны, которые держит сам сервак. recursion yes; Посылка рекурсивных запросов разрешена только клиентам подсети allow-recursion { localnet; }; Игнорировать запросы blackhole DNS-сервер не посылает запросы к DNS-серверам из этого списка и не отвечает на запросы, получаемые от этих серверов.
blackhole { 0.0.0.0/8; 10.0.0.0/8; 169.254.0.0/16; 172.16.0.0/12; 192.0.2.0/24; 192.168.0.0/16; 224.0.0.0/4; 240.0.0.0/4; };
};
allow-query: указывает список хостов, которым разрешено запрашивать все зоны name-сервера или конкретную зону внутри name-сервера.
allow-recursion: указывает список хостов, которым разрешено создавать рекурсивные запросы к name-серверу для всех зон или для конкретной зоны, обслуживаемой name-сервером.
allow-transfer: указывает список хостов, которым разрешено инициировать запросы зонной пересылки к name-серверу для всех зон или для конкретной зоны внутри name-сервера. Данное утверждение обязательно требуется в конфигурации первичного name-сервера.
allow-update: указывает список хостов, которым разрешено инициировать запросы динамического обновления.
allow-update-forwarding: указывает список хостов, которым разрешено перенаправление запросов динамического обновления (независимо от того, кто является источником запроса).
allow-notify: указывает список хостов, с которых можно принимать сообщения DNS NOTIFY, говорящих об изменениях в зонном файле. Данный список относится только к конфигурации вторичного name-сервера.
blackhole: указывает список хостов, которые входят в черный список (запрещен доступ) для инициализации любых транзакций с данным name-сервером.
Утверждение logging позволяет задать произвольное число способов записи в журнал с помощью предложений channel и привязать различные категории сообщений к каналам с помощью предложений category.
В предложении channel задается имя канала, способ записи (в файл с ограничением его размера (можно использовать масштабирующие коэффициенты K, M и G) и числа версий, syslog, stderr, null), фильтр (минимальный уровень серьезности сообщений для вывода через этот канал) и формат вывода (выводить ли в каждое сообщение имя категории, уровень серьезности и метку времени; по умолчанию - нет):
channel имя-канала { ( file имя-файла [ versions ( число | unlimited ) ] [ size максимальный-размер ] | syslog syslog_facility | stderr | null ); [ severity (critical | error | warning | notice | info | debug [ уровень ] | dynamic ); ] [ print-category yes-или-no; ] [ print-severity yes-или-no; ] [ print-time yes-или-no; ] };
Версии файла (file, file.0, file.1 и т.д.) перенумеровываются при каждом открытии (кстати, а когда он открывается?), если максимальный размер файла не задан. Если задан и размер и число версий, то перенумеровывание при открытии происходит только при превышении этого размера. Если при записи в файл его максимальный размер будет превышен, то при указании числа версий происходит перенумерация файлов и открывается новый, если число версий не указано, то запись в файл просто прекращается.
Режим отладки задается либо при запуске (ключ -d), либо командой trace программы rndc (выключается командой rndc notrace). Команда trace позволяет указать уровень отладки (чем больше уровень, тем более подробная отладочная информация выдается, уровень 3 достаточно болтлив). При указании фильтра (severity) можно указать определенный уровень отладки (debug [ уровень ]) для включения отладочной печати данного уровня (и ниже) независимо от уровня отладки сервера (лишь бы ее включили) или указать ключевое слово dynamic для отладочной печати уровня, совпадающего с уровнем отладки сервера.
В предложении category задается имя категории и список ранее определенных каналов, через которые будут выводиться сообщения данной категории:
category имя-категории { имя-канала ; [ имя-канала ; ... ] };
Определены следующие категории:
Переопределять каналы (в т.ч. встроенные) нельзя, но можно привязать категории к новым каналам. Сообщения об ошибках синтаксиса файла настройки и о запуске сервера записываются как будто утверждение logging отсутствует (так что syslog:daemon тоже надо просматривать регулярно). По умолчанию принимается следующая настройка записи в журнал:
logging { channel default_syslog { syslog daemon; severity info; }; channel default_debug { file "named.run"; severity dynamic; }; channel default_stderr { stderr; severity info; }; channel null { null; }; category default { default_syslog; default_debug; }; category unmatched { null; }; };
Количество статистической информации, собираемой BIND 9 сильно уменьшилось о сравнению с предыдущими версиями. Накопленная статистика добавляется командой rndc stats к файлу named.stats в рабочей директории (options, directory), очередной раздел обрамляется строками «Statistics Dump» с указанием времени в формате UNIX:
Общее число запросов к серверу равно success + referral + nxrrset + nxdomain + failure. Статистика может собираться отдельно по зонам и видам, в этом случае имена зоны и вида (опускается для вида default) приводятся в конце каждой строки.
В файл конфигурации зоны добавляю запись
www.seafile IN A 94.255.92.23
Проверяю конфигурационный файл на ошибки
named-checkconf /usr/local/etc/namedb/named.conf
Проверяю файл зоны на ошибки
named-checkzone mgmt.klotik.ru /usr/local/etc/namedb/master/mgmt.klotik.ru zone mgmt.klotik.ru/IN: loaded serial 2020021300 OK
Рекомендуется создать специальную группу named и пользователя named для запуска сервера. Перед запуском необходимо отредактировать /etc/named.conf, файлы зон и установить соответствующие права доступа к ним и прочим файлам, имеющим отношение к серверу (простой пример). Если необходимо управление сервером с помощью программы rndc, то необходимо также отредактировать /etc/rndc.conf. Ключи запуска:
/usr/local/etc/rc.d/named start var/dump: user (53, 0, modified) gid (53, 0, modified) var/run: user (53, 0, modified) gid (53, 0, modified) var/run/named: user (53, 0, modified) gid (53, 0, modified) var/stats: user (53, 0, modified) gid (53, 0, modified) ./etc missing (created) ./tmp missing (created) ./var/log missing (created) etc/namedb/working: gid (0, 53, modified) etc/namedb/dynamic: gid (0, 53, modified) etc/namedb/slave: gid (0, 53, modified) wrote key file "/var/named/usr/local/etc/namedb/rndc.key" Starting named.
Посмотреть bind в процессах
top | grep named
или
ps -ax|grep named
послушать висит ли Bind на 53 порту:
sockstat -l4 -p 53
dig @127.0.0.1 ya.ru ; <<>> DiG 9.14.7 <<>> @127.0.0.1 ya.ru ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59061 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; COOKIE: 8036ca940283cc2a39394ac25dc00f1c6567f433a198998e (good) ;; QUESTION SECTION: ;ya.ru. IN A ;; ANSWER SECTION: ya.ru. 600 IN A 87.250.250.242 ;; Query time: 849 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: пн нояб. 04 14:44:28 MSK 2019 ;; MSG SIZE rcvd: 78
или
nslookup ya.ru 127.0.0.1 Server: 127.0.0.1 Address: 127.0.0.1#53 Non-authoritative answer: Name: YA.ru Address: 87.250.250.242 Name: ya.ru Address: 2a02:6b8::2:242
В то время как управление работающим сервером BIND 4 осуществлялось простой посылкой сигнала процессу (HUP - перезагрузить файл настройки и зоны; TERM - остановить; INT - сбросить базу данных в файл named_dump.db; ABRT - записать статистику в конец файла named.stats), управление сервером BIND 9 производится с помощью специальной утилиты rndc, которая соединяется с сервером (по умолчанию - TCP порт 953) и использует специальный протокол для передачи ему команд. Однако сигналы HUP, TERM пока действуют.
Настраивая сервер, необходимо обеспечить права доступа к управляющему порту (controls) и ключ (key), смотри ниже rndc-confgen.
Файл настройки rndc (/etc/rndc.conf) имеет такой же синтаксис, что и named.conf. Комментарии могут записываться в стиле C, C++ или sh. Файл настройки состоит из утверждений, завершающихся точкой с запятой. Утверждения содержат блок предложений, заключенный в фигурные скобки. Предложение в блоке также завершается точкой с запятой. Права на чтение этого файла должны быть только у того, кто имеет право запускать rndc. Предусматириваются следующие типы утверждений:
options { default-server имя-или-адрес-сервера; default-key "имя-ключа"; default-port номер-управляющего-порта; } server имя-или-адрес-сервера { // адрес в двойных кавычках key "имя-ключа"; port номер-управляющего-порта; } key "имя-ключа" algorithm hmac-md5; secret "base-64-кодированный-ключ"; }
Утилита rndc-confgen позволяет сгенерировать /etc/rndc.conf со случайным ключом (и закомментированные предложения controls и key для /etc/named.conf). Следующими ключами можно модифицировать получаемый файл:
Утилита rndc позволяет менять параметры соединения с сервером с помощью ключей:
Если запустить rndc без указания команды, то она выдаст список поддерживаемых команд:
DNS работает через 53 порты: udp («простые запросы») и tcp (трансферы).
В описание зоны master сервере добавляю строки
allow-transfer { 95.31.208.14; }; //список адресов от кого принимать запросы на передачу зоны also-notify { 95.31.208.14; }; // список адресов серверов, которым посылается DNS NOTIFY при изменении зоны notify explicit; // посылать DNS NOTIFY при изменении зоны, explicit - посылать только серверам из списка also-notify
Описание зоны slave сервере выглядит так:
zone "klotik.ru" { type slave; masterfile-format text; //опция определяет формат полученного файла зон file "/usr/local/etc/namedb/slave/ext.klotik.ru"; masters {94.255.92.23;}; allow-transfer { none; }; };
Подключаюсь к первичному серверу по telnet к 53 порту:
telnet <IP-адрес первичного сервера> 53
Пример выполнения
telnet 94.255.92.23 53 Trying 94.255.92.23... Connected to ns.klotik.ru. Escape character is '^]'. ^] telnet> q Connection closed.
dig <домен> @<IP-адрес> axfr
Для защиты от искажений и подделок ответов сервера, передачи зоны и обновлений зоны (update) Bind поддерживает использование расширения TSIG протокола DNS. Для защиты обмена между каждой парой участников необходимо создать отдельный общий ключ. Ключи создаю с помощью утилиты tsig-keygen
tsig-keygen -h Usage: tsig-keygen [-a alg] [keyname] -a alg: algorithm (default hmac-sha256)
Создаю файл nskey.key. Права на файл нужно будет установить 700
tsig-keygen nskey | cat >> nskey.key
Содержимое файла nskey.key
key "nskey" { <------>algorithm hmac-sha256; <------>secret "сгенерированный ключ"; };
В файл named.conf добавляю следующие строки
include "/usr/local/etc/namedb/nskey.key"; server 94.255.92.23 { keys { nskey; };
Параметр server задаёт нам сервер, а параметр keys каким ключом этот сервер подписывается
Ссылки:
http://blog.e-shell.org/301
http://dtopcms.ru/docs/freebsd/bind99.shtml
http://www.maxblogs.ru/articles/nastroika-bind9
http://www.it-vrn.org/content/nastroyka-dns-servera-bind-v-choot-pri-obnovlenii-freebsd-93-do-10-versii.html
https://toster.ru/q/67146
https://miac.volmed.org.ru/wiki/index.php/%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_DNS_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_(named9)
https://freebsdguide.ru/_14/_7
http://freebsdguide.ru/_14/_8
http://www.bog.pp.ru/work/bind.html