Замена BIND на Unbound на Ubuntu 11.10

Linux
То что BIND достаточно неповоротлив знают наверно все. А тут еще захотелось чтобы и рекурсии было и производительность повыше да и кэширование не помешает. Курение гугла выдало несколько вариантов, одно заинтересовало: кеширующий и рекурсивный DNS сервер Unbound, хорошо мониторится работа в Cacti/Munin и других программах.
Итак приступаем. Исходные данные: Ubuntu Server 11.10 (LAMP+SQUID+SAMS+… ну еще всякие вкусности), ip-адрес смотрящий в локалку — eth1:192.168.0.119, ip-адрес смотрящий в мир eth0:177.178.179.180
Стопим и безжалостно сносим bind:
sudo service named stop 
sudo apt-get purge bind -y
Ставим Unbound:
sudo apt-get install unbound
Нам предлагают доставить кое-какие компоненты:
Будут установлены следующие дополнительные пакеты:
  libev3 libldns1 libunbound2
НОВЫЕ пакеты, которые будут установлены:
  libev3 libldns1 libunbound2 unbound
Ну что ж — надо так надо. После установки идем в /etc/unbound, переименовываем оригинальный конфиг unbound.conf и создаем свой
mv unbound.conf unbound.conf.orig
nano unbound.conf
со следующим содержимым:
server:
# Уровень логов 0 - только ошибки
verbosity: 0
# Порт - естественно 53
port: 53
# Число нитей запросов, если поставить 1 - то будет выключено
num-threads: 4
# Подстроим параметры кэша и время жизни:
# Число открываемых портов и запросов на нить
outgoing-range: 512
num-queries-per-thread: 1024
# Задаем размеры кэша сообщений и RRset
msg-cache-size: 16m
rrset-cache-size: 32m
# Задаем время жизни записей в кэше, записи о хосте, время ожидания ответа
cache-max-ttl: 86400
infra-host-ttl: 60
infra-lame-ttl: 120
# Описываем интерфейсы для прослушивания
interface: 127.0.0.1
interface: 192.168.0.119
outgoing-interface: 177.178.179.180
#  Разрешаем любые запросы к ДНС из локалки
access-control: 192.168.0.0/24 allow
# разрешаем  ip4/tcp/udp, запрещаем поддержку ipv6
do-ip4: yes
do-ip6: no
do-udp: yes
do-tcp: yes
# От чьего имени работает daemon unbound, каталог конфигурации, куда класть логи, где pid
username: unbound
directory: "/etc/unbound"
logfile: "/var/log/unbound.log"
use-syslog: no
pidfile: "/var/run/unbound/unbound.pid"
# не говорить при запросах версию ПО, мало ли что придумают кулхацкеры
hide-version: yes
# Опишем нашу локальную сеть
local-zone: "192.in-addr.arpa." static
local-data: "192.in-addr.arpa. 10800 IN NS local.lan."
local-data: "192.in-addr.arpa. 10800 IN SOA local.lan. admin.local.lan. 1 3600 1200 604800 10800"
local-data: "119.0.168.192.in-addr.arpa. 10800 IN PTR local.lan."
local-data: "local.lan. 10800 IN A 192.168.0.119"
Глядя на конфиг мы видим что все настройки хранятся в одном файле — на мой взгляд очень удобно. Кому мало информации man unbound.conf или гугл в помощь — функционал достаточно богатый, так что возможна очень детальная настройка. Сохраняем настройки и запускаем сервер
service unbound start 
ps ax | grep unbound
~# ps ax | grep unbound
30357 ?        Ss     0:00 /usr/sbin/unbound
31937 pts/0    S+     0:00 grep --color=auto unbound
:~# netstat -anp | grep 53
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      30357/unbound
tcp        0      0 192.168.0.119:53        0.0.0.0:*               LISTEN      30357/unbound
....
Взлет был успешным. Добавляем правила для хождения запросов по 53 порту в файер или правим существовавшие:
$IPT -A INPUT -m state --state NEW -p tcp -m tcp --dport 53 -j ACCEPT
$IPT -A INPUT -m state --state NEW -p udp -m udp --dport 53 -j ACCEPT
вот и все, теперь можно прописать юзерам новый ДНС и пользоваться.

3 комментария

avatar
BIND стал «де факто», а тут что-то новое. Как у unbound с безопасностью?
avatar
В целом на уровне — процесс живет от собственного пользователя, возможен chroot, если обратили внимание — я отметил в конфиге настройки кэша и запретил отвечать на запрос о версии ПО DNS, это связано с уязвимостью в виде переполнения и в итоге выдает DOS — почитать здесь, в принципе эта проблема в последних версиях вроде как устранена, но береженого бог бережет. Ну а если совсем параноидально подойти — то fail2ban(писал о нем ранее) умеет защищать и DNS.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.