Бронебойный DNS Антон Карпов, toxa@cterra.ru Спецвыпуск: Хакер, номер #051, стр. 051-044-2 # cd /usr/ports/dns/djbdns %26%26 make install clean Добавляем пользователей для работы dnscache, tinydns и axfrdns, так как в целях безопасности каждый из демонов запускается под своей учетной записью. Обработчик логов запускается под отдельной учетной записью dnslog: # pw adduser -d /dev/null -s /usr/sbin/nologin -c "DJBDNS dnscache user" dnscache # pw adduser -d /dev/null -s /usr/sbin/nologin -c "DJBDNS tinydns user" tinydns # pw adduser -d /dev/null -s /usr/sbin/nologin -c "DJBDNS axfrdns user" axfrdns # pw adduser -d /dev/null -s /usr/sbin/nologin -c "DJBDNS dnsclog user" dnslog Для работы dnscache должна быть создана необходимая иерархия каталогов при помощи утилиты dnscache-conf: # dnscache-conf dnscache dnslog /usr/local/etc/djbdns/dnscache 192.168.0.1 Аргументы, переданные утилите, очевидны: %26lt;учетная запись dnscache%26gt; %26lt;учетная запись dnslog%26gt; %26lt;рабочий каталог%26gt; %26lt;адрес, на котором будет слушать dnscache%26gt; Можно указать dnscache работать в качестве форвардера пересылая все запросы к dns-серверу провайдера и кешируя результат: # echo prov.dns.serv.ip %26gt; /usr/local/etc/djbdns/dnscache/root/servers/@ # echo 1 %26gt; /etc/dnscache/env/FORWARDONLY Разрешим нашей подсети доступ к кешу: # touch /usr/local/etc/djbdns/dnscache/root/ip/192.168.0 Для запуска dnscache жизненно необходимо наличие daemontools, подробнее о которых читай в статье про почтовый сервер в этом же номере. # cd /usr/ports/sysutils/daemontools # make install clean # echo 'svscan_enable="YES"' %26gt;%26gt; /etc/rc.conf # mkdir /var/service Запустим dnscache: создай символическую ссылку в каталоге, обслуживаемом установленными ранее daemontools: # ln -s /usr/local/etc/djbdns/dnscache /var/service Ждем секунд десять и передаем проверку работы dnscache утилите из daemontools svstat: # svstat /var/service/dnscache /var/service/dnscache: up (pid 13722) 13 seconds И все. Никаких проблем с named.conf. Софт djb вообще отличается тем, что его можно конфигурировать с помощью команды echo ;). Прописываем 192.168.0.1 в качестве nameserver: # echo nameserver 192.168.0.1 %26gt; /etc/resolv.conf DNS на страже имен На очереди ответственный за зону DNS-сервер – tinydns, который конфигурируется похожим образом (заметь, что он вешается на внешний интерфейс): # tinydns-conf tinydns dnslog /usr/local/etc/djbdns/tinydns 11.22.33.44 # ln -s /usr/local/etc/djbdns/tinydns /var/service # svstat /var/service/tinydns /var/service/tinydns: up (pid 13821) 16 seconds Как только речь заходит о настройке зоны DNS, в голове сразу возникают ассоциации с ворохом файлов в namedb: опечатки, когда ничего не работает из-за того, что забыл поставить точку, неочевидный синтаксис конфигурационных файлов и прочие радости сношения с пакетом BIND. Можешь расслабиться. Разумеется, чтобы понять все тонкости настройки, тебе придется прочитать документацию к tinydns, однако смотри пример создания зоны с SOA двумя MX-записями и несколькими хостами. И если ты скажешь, что это сложно, то ты - мой злейший враг на всю жизнь ;). |