BIND представляет собой DNS-сервер для перевода доменных имен в IP адреса и наоборот.
Установим BIND с использованием смены корневого каталога (chroot) для увеличения безопасности системы. Все манипуляции производятся на чистом сервере, с только-что установленной Centos 5.6.
Проверим установлены ли уже пакеты bind и bind-chroot
rpm -qa "bind*"
Если нет, то установим
yum install bind bind-chroot
Настроем утилиту rndc, которая умеет управлять BIND с локальной или удаленной машины.
cd /var/named/chroot/etc rndc-confgen > rndc.key
Создадим файл с настройками named.conf (в этой же директории) с таким содержимым
options { directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; listen-on { 192.168.1.4; }; version "pydns 0.1"; allow-recursion { none; }; allow-query { any; }; forwarders { 8.8.8.8; }; };
Также добавим в named.conf строки из rndc.key, которые следуют за комментарием Use with the following in named.conf, это позволит узнать короткую информацию о сервере и количестве зон с помощью rndc status.
Добавим в конец файл с настройками (named.conf) описание зон.
Описание корневых серверов
zone "." IN { type hint; file "named.ca"; };
Описание тестовой зоны proft.com.ua
// forward zone zone "proft.com.ua" IN { type master; file "data/proft.com.ua.zone"; allow-update { none; }; //allow-transfer { 192.168.1.4; }; };
// reverse zone zone "1.168.192.in-addr.arpa" IN { type master; file "data/192.168.1.zone"; allow-update { none; }; //allow-transfer { 192.168.1.4; }; };
Настройки зоны proft.com.ua сохраним в файле /var/named/chroot/var/named/data/proft.com.ua.zone
$TTL 38400 @ IN SOA ns1.proft.com.ua. admin.proft.com.ua.( 2011062201 ; Serial 2H ; Refresh after 2 hours 30M ; Retry after 30 minutes 1W ; Expire after 1 week 1D ); Minimum TTL of 1 day @ IN NS ns1.proft.com.ua. @ IN NS ns2.proft.com.ua. @ IN A 192.168.1.4 www IN CNAME @ @ IN MX 10 mail.proft.com.ua. mail IN A 192.168.1.4
Настройки обратной зоны сохраним в файле /var/named/chroot/var/named/data/192.168.1.zone
$TTL 86400 1.168.192.in-addr.arpa. IN SOA ns.proft.com.ua. admin.proft.com.ua. ( 2011062201 2H 30M 1W 1D ) 1.168.192.in-addr.arpa. IN NS ns.proft.com.ua. 4.1.168.192.in-addr.arpa. IN PTR mail.proft.com.ua. 4.1.168.192.in-addr.arpa. IN PTR www.proft.com.ua.
Проверим файл с настройками на ошибки
named-checkconf /var/named/chroot/etc/named.conf
Проверим файл с зоной на ошибки
named-checkzone proft.com.ua /var/named/chroot/var/named/data/proft.com.ua.zone
Добавим IP настраиваемой машины в /etc/resolv.conf
nameserver 192.168.1.4
Добавим демон named в автозагрузку
chkconfig --levels 235 named on
и запустим
service named start
Статус сервера можно узнать по команде
rndc status
Перезагрузить все зоны
rndc reload
Перезагрузить только зону proft.com.ua
rndc reload proft.com.ua
Разрешим запросы на 53 порт извне. Внесем в файл /etc/sysconfig/iptables такие строчки
# BIND DNS -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 53 -j ACCEPT -A RH-Firewall-1-INPUT -p udp -m udp --dport 53 -j ACCEPT # RNDC (FOR DNS) -A RH-Firewall-1-INPUT -p tcp -s 127.0.0.1 -d 127.0.0.1 --dport 953 -j ACCEPT
Выполним
service iptables restart
Проверим работу
dig @192.168.1.4 proft.com.ua
Все ошибки пишутся в лог /var/log/messages.
Если часто приходиться править файл с зоной и пользуетесь vim'ом, то есть плагин UpdateDNSSerial, который умеет автоматически увеличивать серийный номер SOA.
Для внешней проверки настроек DNS-сервера есть сайт intodns.com.
Для удобного мониторинга запросов к DNS-серверу в реальном времени есть утилита dnstop. Пример установки и использования под Ubuntu:
# установка sudo apt-get install dnstop # пример использования sudo dnstop -4 eth0
Теоретическая часть
Дополнительное чтиво
Сервис для проверки DNS