Как стать автором
Поиск
Написать публикацию
Обновить

Избавляемся от BIND в пользу Unbound на CentOS 6

Если вам нужен кеширующий и рекурсивный DNS сервер, то почему бы не отказаться от надоедливого BIND в пользу легкого и производительного Unbound.

Unbound распространяется под лицензией BSD, поддерживает DNSSEC. В стандартных репозиториях CentOS отсутствует, поэтому будем подключать EPEL.

Имеем клиентскую сетку 192.168.0.0/16, на eth1 поступают запросы, которому присвоен адрес 192.168.0.250.

Удаляем BIND
/sbin/service named stop
yum remove bind -y

Подключаем EPEL
rpm -ivh http://download.fedora.redhat.com/pub/epel/6/i386/epel-release-6-5.noarch.rpm

Устанавливаем Unbound
yum install unbound -y

Конфигурация сервера

Файл конфигурации Unbound находится по адресу /etc/unbound/unbound.conf. Отправляем его содержимое в корзину:
cat /dev/null > /etc/unbound/unbound.conf

Разбирать файл unbound.conf по кусочкам нет смысла, для этого есть команда man unbound.conf, где каждый может доскональна изучить мануал. Приведу минимальный листинг конфига для нетерпеливых:
server:
verbosity: 0
port: 53
interface: 127.0.0.1
interface: 192.168.0.250
outgoing-interface: 10.0.3.15
access-control: 192.168.0.0/16 allow
do-ip4: yes
do-ip6: no
do-udp: yes
do-tcp: yes
username: unbound
directory: "/etc/unbound"
logfile: "/var/log/unbound.log"
use-syslog: no
pidfile: "/var/run/unbound/unbound.pid"
hide-version: yes

verbosity: 0 — указывает на уровень ведения логов, в нашем случае это только вывод ошибок.
port: 53 — без комментариев.
interface: 127.0.0.1 — а также строка ниже указывает на каких интерфейсах (точнее ip-адреса этих интерфейсов) слушать 53-й порт. В моем случае это localhost и eth1 подключенный к локальной сети.
outgoing-interface: 10.0.3.15 — ip адрес интерфейса, который подключен к сети Интернет.
access-control: 192.168.0.0/16 allow — указывает адрес сети и статус запросов. В нашем случае разрешены запросы клиентов из сетки 192.168.0.0/16 к нашему DNS серверу.
do-ip4: yes — разрешить запросы по IPv4.
do-ip6: no — запретить запросы по IPv6.
username: unbound — от какого имени пользователя запускается Unbound.
directory: "/etc/unbound" — рабочая директория.
logfile: "/var/log/unbound.log" — файл логов, необходимо создать вручную и выставить владельца указанного в username.
use-syslog: no — не используем syslog, пишем в собственный файл.
pidfile: "/var/run/unbound/unbound.pid" — файл с pid'ом.
hide-version: yes — скрыть версию Unbound от кулхацкеров.

Это минимальный набор опций, необходимый для старта и функционирования Unbound.

Теперь в этом же файле опишем наш локальный домен, добавив PTR-запись и описав зону.

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: "250.0.168.192.in-addr.arpa. 10800 IN PTR local.lan."
local-data: "local.lan. 10800 IN A 192.168.0.250"

Стоит заметить, что в отличии от BIND, в Unbound не нужно описывать зону в файле named.conf, а потом создавать сам файл зоны в /var/named (к примеру в CentOS). Здесь все записывается сразу.

Открываем 53-й tcp/udp порты в файле /etc/sysconfig/iptables
-A INPUT -m state --state NEW -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -m state --state NEW -p udp -m udp --dport 53 -j ACCEPT
и не забываем перезапустить Iptables.

Стартуем Unbound
/sbin/service unbound start

Проверяем, слушается ли 53-й порт
[root@dns1 ~]# netstat -anp | grep 53
tcp 0 0 192.168.0.250:53 0.0.0.0:* LISTEN 1468/unbound
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 1468/unbound
udp 0 0 192.168.0.250:53 0.0.0.0:* 1468/unbound
udp 0 0 127.0.0.1:53 0.0.0.0:* 1468/unbound

Прописываем DNS сервер у клиентов и радуемся как дети.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.