Настройка DNS сервера bind9. Ubuntu/Debian. Пошаговая инструкция
Сегодня мы поговорим о настройке, пожалуй, самого популярного DNS сервера bind9. Следуйте инструкции, и у Вас всё получится, в этом нет ничего сложного. В этом примере Вы увидите как формируются файлы зон и проследите процесс простой настройки, не вдаваясь при этом в подробности. Это лишь небольшое HowTo, призванное помочь Вам понять принцип работы DNS сервера. Если же Вы настраиваете DNS сервер на шлюзе в сегменте Вашей локальной сети, то в конце статьи Вы увидите как сделать Ваш DNS сервер кэширующим, что позволит существенно сократить время повторного запроса к NS серверам, ведь посещённые адреса будут браться из Вашего локального кэша. Ну что ж, приступим.
Если у Вас ещё не установлен bind9, проделаем это:
apt-get install bind9
Отредактируем файл /etc/init.d/sysklogd, он должен выглядеть следующим образом:
#
# Top configuration file for syslogd
#
#
# Full documentation of possible arguments are found in the manpage
# syslogd(8).
#
#
# For remote UDP logging use SYSLOGD="-r"
#
SYSLOGD="-u syslog"
Перезапустим демона sysklogd:
/etc/init.d/sysklogd restart
Приступим к настройке файла зоны для нашего домена. В качестве примера будет выступать домен zerolab.net. Создаём файл конфигурации для наших зон myzones.conf в папке /etc/bind, содержимое файла:
zone "zerolab.net" {
type master;
file "/etc/bind/zerolab.net";
};
Теперь непосредственно создадим наш файл зоны zerolab.net в той же папке /etc/bind:
$ORIGIN zerolab.net.
$TTL 86400 ; 1 day
@ IN SOA zerolab.net. root.zerolab.net. (
2008082859 ; serial
14400 ; refresh (4 h)
3600 ; retry (1 h)
2592000 ; expire (4w2d)
600 ; minimum (10 minute)
)
NS ns1.zerolab.net.
NS ns2.bla-bla-bla.com.
zerolab.net. A 192.168.0.1
*.zerolab.net. CNAME @
zerolab.net. MX 10 mail.zerolab.net.
mail.zerolab.net. A 192.168.0.1
ns1 A 192.168.0.1
Где 192.168.0.1 — IP Вашего сервера, MX запись нам нужна если Вы поднимаете на своем сервере почтовый сервер. ns1.zerolab.net — наш DNS сервер. Так как для функционирования DNS сервера требуется помимо master ns сервер и slave, прописываем его — ns2.bla-bla-bla.com. Естественно у Вас он должен быть на стороннем сервере, либо если у Вас есть ещё выделенный IP для Вашего сервера, то задача упрощается. Для сервера, находящегося в локальной сети и выдающего имена только в локальную сеть (к примеру у Вас установлен web-сервер, обслуживающий Вашу сеть и настроены виртуальные хосты), достаточно лишь прописать ns1, т.е. адрес Вашего DNS сервера. 2008082859 — смените на текущую дату.
Выставим нужные права на файл зоны zerolab.net:
chown bind:bind /etc/bind/zerolab.net
Отредактируем файл конфигурации bind /etc/bind/named.conf, включив в него конфигурацию для наших зон, добавим в конец файла:
... //Вырезано для экономии места...
include "/etc/bind/myzones.conf";
Ну и обновим конфигурацию bind командой:
rndc reload
Если у Вас DNS сервер установлен на шлюзе в Вашей локальной сети, сделаем его кэширующим. Открываем файл /etc/bind/named.conf.options и раскомментируем следующую строку:
forwarders { ... };
Добавим в неё IP адреса DNS серверов к которым будет обращаться наш сервер, с большой долей вероятности у Вашего провайдера есть свои DNS сервера, укажем их первыми, тем самым экономя трафик:
forwarders {
10.0.0.x; //Первый адрес DNS сервера моего провайдера
10.0.0.x; //Второй адрес DNS сервера моего провайдера
x.x.x.x;
x.x.x.x;
x.x.x.x;
};
Перезапускаем наш DNS сервер:
/etc/init.d/bind9 restart
Ну а далее не забудьте поменять DNS адрес в /etc/resolv.conf на свой.
Вернёмся к особенностям настройки DNS сервера на выделенном сервере, когда нам необходимо прописать два ns адреса. myzones.conf примет немного другой вид:
zone "zerolab.net" {
type master;
file "/etc/bind/zerolab.net";
allow-trasfer {x.x.x.x;}; //Указываем IP адрес нашего slave ns сервера
};
При настройке на slave сервере myzones.conf примет такой вид:
zone "zerolab.net" {
type slave;
file "/etc/bind/zerolab.net";
masters { 192.168.0.1; };
allow-notify { address_match_list; }; //allow-notify { список-шаблонов-адресов }; (первичный сервер зоны, от кого наш сервер как вторичный уполномоченный сервер будет принимать извещения об изменениях зоны. Замените address_match_list
};
На этом всё, настройка закончена. ;) Удачи!