Установка DNS-сервера NSD в Gentoo-линукс

NSD – высокопроизводительный ДНС сервер, который хранит записи о зоне в своей базе данных, которая полностью располагается в оперативной памяти сервера.

NSD
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

Сравнение скорости отклика можно почитать на Хабре

Добавить комментарий