Установка DNS-сервера NSD в Gentoo-линукс
NSD – высокопроизводительный ДНС сервер, который хранит записи о зоне в своей базе данных, которая полностью располагается в оперативной памяти сервера.
За счет єтого достигается очень высокая скорость ответа на запросы
Так как все записи хранятся в ОЗУ, возникает вопрос – а сколько ему надо? Для расчета потребления памяти есть калькулятор тут. Если вы ставите сервер для личного пользования на 1-2 доменых зоны, то волноваться не о чем…
В стандартном дереве Portage я не смог найти ebuild для nsd. Гугл подсказал, что єтот пакет есть в овєрлее (overlay) sunrise. Приступим к добавлению овєрлея
Ищем Layman
emerge -s layman |
Sunrise организован на базе subversion
USE="subversion" emerge -av app-portage/layman echo "source /var/lib/layman/make.conf" >> /etc/make.conf |
Ищем NSD:
emerge -s nsd |
Добавляем кейворд для последней версии
echo ">=net-dns/nsd-3.2.8 ~amd64" >> /etc/portage/package.keywords |
ну и собственно устанавливаем NSD3
emerge -av nsd |
Конфигурационные файлы располагаются в каталоге /etc/nsd/ , там же находится пример конфигурационного файла nsd.conf.sample по которому можно поглядеть на структуру и синтаксис.
Перед тем как начнем творить нужно создать ключ для взаимодействия master и slave серверов.
dd if=/dev/urandom bs=16 count=1 | openssl base64 WIuUwDmLvvTG3GNPIkcKww== 1+0 записей считано 1+0 записей написано скопировано 16 байт (16 B), 3,471e-05 c, 461 kB/c |
После єтого нужно создать структуру каталогов внутри /etc/nsd:
drwxrwxrwx 2 root root 4096 Окт 5 14:36 data -rw-r--r-- 1 root root 875 Окт 5 14:28 nsd.conf drwxr-xr-x 3 root root 4096 Окт 5 13:19 zones |
Внутри каталога zones находится две директории master и slave
Ну и собственно конфиг:
/etc/nsd/nsd.conf
server: chroot: "/etc/nsd" ip-address: 0.0.0.0 ip4-only: yes identity: "DNS" hide-version: yes database: "/etc/nsd/data/nsd.database" logfile: "/var/log/nsd.log" server-count: 4 pidfile: "/etc/nsd/nsd.pid" zonesdir: "/etc/nsd/zones" difffile: "/etc/nsd/data/ixfr.db" xfrdfile: "/etc/nsd/data/xfrd.state" key: name: "ns.test.ua" algorithm: hmac-md5 secret: "UlRZ9i9GnNxQvDq5lfoLvw==" zone: name: "info.com.ua" zonefile: "./master/info.com.ua" notify: 89.252.89.252 NOKEY provide-xfr: 89.252.89.252 NOKEY zone: name: "info2.com.ua" zonefile: "./master/info2.com.ua" notify: 89.252.89.252 ns.test.ua provide-xfr: 89.252.89.252 ns.test.ua |
Вкратце:
Все, что написано до server-count думаю будет интуитивно понятно, значение server-count устанавливает кол-во потоков (демонов) запущеных на сервере. Далее указывается где будут хранится файлы. После этого идет раздел key в котором описывается навание и алгоритм ключа, а так же сам ключ который был сгенерирован накануне. После чего идет секция zone, ту описываются сами днс-зоны которые обслуживает данный сервер. Параметр notify указывает на какой сервер будут посылаться уведомления в случае изменений на мастер-сервере, вторым параметром указано либо NOKEY – без ключа, либо название ключа. provide-xfr указывает кому разрешено получать файл зоны.
Файл описывающий саму зону имеет такой вид:
$ORIGIN info.com.ua. $TTL 60 info.com.ua. IN SOA ns.test.ua. root.test.ua. ( 2011092813 ; serial 3600 ; refresh 9600 ; retry 120960 ; expire 400 ; minimum TTL ) @ NS ns.test.ua. @ NS ns2.test.ua. A 89.252.89.252 www A 89.252.89.252 mail A 89.252.89.252 |
Тоесть ничем не отличается от такового в Bind (Named), главное в конце файла поставить перенос строки.
После наполнения файла используются 3команді.
Рестарт сервиса
/etc/init.d/nsd restart |
Генерация конфигурации из созданых нами файлов:
nsdc rebuild |
И применение изменений:
nsdc reload |
Сравнение скорости отклика можно почитать на Хабре