Если вам нужен кеширующий и рекурсивный DNS сервер, то почему бы не отказаться от надоедливого BIND в пользу легкого и производительного Unbound.
Unbound распространяется под лицензией BSD, поддерживает DNSSEC. В стандартных репозиториях CentOS отсутствует, поэтому будем подключать EPEL.
Имеем клиентскую сетку 192.168.0.0/16, на eth1 поступают запросы, которому присвоен адрес 192.168.0.250.
Разбирать файл unbound.conf по кусочкам нет смысла, для этого есть команда man unbound.conf, где каждый может доскональна изучить мануал. Приведу минимальный листинг конфига для нетерпеливых:
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-запись и описав зону.
Стоит заметить, что в отличии от BIND, в Unbound не нужно описывать зону в файле named.conf, а потом создавать сам файл зоны в /var/named (к примеру в CentOS). Здесь все записывается сразу.
Прописываем DNS сервер у клиентов и радуемся как дети.
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 сервер у клиентов и радуемся как дети.