Info
Content

BIND9

BIND - Berkeley Internet Name Daemon

bind имеет утилиты для проверки конфига и зоны:

  • named-checkconf
  • named-checkzone

rndc - утилита для управления биндом (remote name daemon control)


Зонный трансфер - один из механизмов репликации баз DNS между серверами. Бывает полным (AXFR) и инкрементальным (IXFR)

Трансфер происходит по TCP в отличие от обычных DNS-запросов


Результат работы команды dig выводится в формате зонного файла


Настройки корневой зоны всегда доступны по адресу ftp://ftp.internic.net/domain/named.root


Комментарии в зонном файле вводятся с помощью ;


В зонном файле можно указать переменные ORIGIN и TTL и не указывать для каждой записи TTL и ORIGIN (ориджин можно итак не указывать, но имея переменную это выглядит более очевидно)

$ORIGIN	testzone.vandud.ru.
$TTL	3600

@	IN	SOA	(
	phobos.vandud.ru.
	dns-admin.dns
	2020082011
	7200
	1200
	64800
	3600
)
@	IN	NS	phobos.vandud.ru.
web	IN	TXT	"sosamba; nstshsnthst pidor"
test1	IN	CNAME	test2
test2	IN	CNAME	test1

Glue records

  • Glue records или добавочная запись - это А-запись, в которой хранится IP-адрес, присвоенный домену или поддомену

Итак, есть существующая зона minsk.by. Мы подаем заявку на делегирование домена 3-го уровня nestor.minsk.by. В качестве неймсерверов будут выступать хосты с именами ns1.nestor.minsk.by и ns2.nestor.minsk.by. Чтобы все заработало, администратор зоны minsk.by должен прописать у себя примерно следующее:

$ORIGIN = minsk.by
nestor IN NS ns1.nestor
nestor IN NS ns2.nestor
ns1.nestor IN A 194.226.121.90
ns2.nestor IN A 194.158.200.188

Последние две записи и есть glue records, без которых запросы будут зацикливаться

Личный пример

root@phobos:/var/named/zones# cat testzone.vandud.ru 
...
testns	3600	IN 	NS	testns.testzone.vandud.ru.
testns	3600	IN	A	185.176.25.117 <- без этой записи BIND не заведется

И на вот такой запрос получаем ответ:

$ dig ns testns.testzone.vandud.ru @phobos.vandud.ru.
...
;; QUESTION SECTION:
;testns.testzone.vandud.ru.	IN	NS

;; AUTHORITY SECTION:
testns.testzone.vandud.ru. 3600	IN	NS	testns.testzone.vandud.ru.

;; ADDITIONAL SECTION:
testns.testzone.vandud.ru. 3600	IN	A	185.176.25.117

2020-08-09-233731_2023x757_scrot.png

Как видно, на запрос в котором запрашивается только NS, сервер также подсовывает нам и additional records, в которых указан адрес сервера из NS записи, потому что иначе его получить нельзя

Простой конфиг

# cat /etc/bind/named.conf <- положение этого файла зависит от того как собран bind  
# (может быть /etc/named.conf, а может быть /etc/bind/named.conf;  
# посмотреть как он собран можно через named -V
options {
  directory "/var/named";
};

zone testzone.vandud.ru. { <- имя зоны за которую отвечает файл из директивы file
  type master;
  file "zones/testzone.vandud.ru";
};

В /var/named/zones/testzone.vandud.ru имена могут быть абсолютными (с точкой на конце) или относительными, тогда к ним будет добавляться зона
Примеры:

  • web.testzone.vandud.ru. - абсолютный
  • web - относительный
  • @ - пустое относительное имя (то есть сама зона)

Чтобы запись SOA была более читаемой (ведь она очень длинная) можно разбить ее на несколько строк
Для этого нужно использовать круглые скобки

@	3600	IN	SOA	(
	phobos.vandud.ru.
	dns-admin.dns
	2020082002
	7200
	1200
	64800
	3600
)
@	3600	IN	NS	phobos.vandud.ru.
web	3600	IN	A	8.8.8.8

Вторичный DNS-сервер

# cat /etc/bind/named.conf
options {directory "/var/named";};

zone testzone.vandud.ru. {
  type slave;
  file "zones/testzone.vandud.ru";
  masters { 185.176.25.117; }; <- хз почему, но домен указать нельзя
};

Далее запускаем сервер убедившись что все окей с правами на директории и видим что файл зоны подгрузился в /var/named/zones/testzone.vandud.ru

При настройке вторичного сервера нужно учитывать права на файлы и директории в системе. Нужно чтобы процессу named была доступна запись в указанные в конфигах директории, чтобы он мог записывать туда скачанные с первичного сервера зоны
Также можно использовать setuid/setgid для дополнительной безопасности


Кэширующий DNS-сервер

Базовый конфиг кэширующего сервера

options {
  directory "/var/named/zones";
  forwarders { 1.1.1.1; };
  allow-query { any; };
  allow-query-cache { any; };
};

Или

zone "." {
        type hint;
        file "/etc/bind/db.root"; # <- путь к файлу с рут-зоной (с адресами корневых)  
        # а так же в этом варианте требуются некоторые настройки в options (мне лень искать и писать)
};

Работает)

$ dig a mail.ru @deimos.vandud.ru +short
217.69.139.202
94.100.180.201
94.100.180.200
217.69.139.200

rndc

Управление сервером BIND 9 производится с помощью специальной утилиты rndc, которая соединяется с сервером (по умолчанию - TCP порт 953) и использует специальный протокол для передачи ему команд

Файл /etc/rndc.conf имеет тот же синтаксис что и /etc/named.conf и содержит в себе настройки подключения к BIND (адрес, порт, пароль, алгоритм, etc)

Имеет следующие команды:

  • reload - перезагрузить файл настройки и зоны
  • reload зона [класс [вид]] - перезагрузить зону
  • refresh зона [класс [вид]] - запланировать немедленное обновление зоны
  • reconfig - перезагрузить файл настройки и новые зоны
  • stats - записать статистику в конец файла named.stats
  • querylog - включить/выключить журнализацию запросов
  • dumpdb - сбросить базу данных в файл named_dump.db
  • stop - сохранить изменения в файлы зон и остановить сервер
  • halt - остановить сервер без сохранения изменений
  • trace - увеличить уровень отладки на 1
  • trace уровень - установить уровень отладки
  • notrace - отключить отладку
  • flush - сбросить весь кеш
  • flush вид - сбросить кеш для указанного вида
  • status - показать состояние сервера
  • restart - перезапустить сервер; не реализовано (?)

No Comments
Back to top