Установка и настройка BIND9 + Ubuntu

Долгое время настройка DNS сервера, особенно bind мне казалась большой магией… До тех пор, пока не пришлось настроить его самому. Под Ubuntu 10.04. В этой статье я постараюсь описать этот процесс максимально подробно и по шагам.

Чтобы не писать sudo для каждой команды запустим консоль от имени рута:

sudo su
Затем установим сам DNS сервер bind:

apt-get install bind9
Судя по документациям и советам многих системных администраторов, bind настоятельно рекомендуют запускать в chroot среде. Не будем отступать от этого правила. Для этого сначала остановим bind:

/etc/init.d/bind9 stop
Чтобы показать серверу, что он должен запускаться в chroot среде нужно отредактировать файл /etc/default/bind9:

nano /etc/default/bind9
изменив в нем строку OPTIONS="-u bind" на OPTIONS="-u bind -t /var/lib/named"
Теперь нужно создать все необходимые для работы bind в croot среде директории:




mkdir -p /var/lib/named/etc
mkdir /var/lib/named/dev
mkdir -p /var/lib/named/var/cache/bind
mkdir -p /var/lib/named/var/run/bind/run
Далее перемещаем все текущие файлы конфигурации bind в созданный каталог:

mv /etc/bind /var/lib/named/etc
Чтобы Ubuntu могла найти файлы bind, например для обновления, создадим со старого места конфигов симлинк на новые:

ln -s /var/lib/named/etc/bind /etc/bind
в chroot-каталоге создадим null и random девайсы и установим права на директории:





mknod /var/lib/named/dev/null c 1 3
mknod /var/lib/named/dev/random c 1 8
chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random
chown -R bind:bind /var/lib/named/var/*
chown -R bind:bind /var/lib/named/etc/bind
Теперь нужно удалить настройку bind из apparmor, так как apparmor становится ненужным, при запуске bind в chroot окружении

rm /etc/apparmor.d/usr.sbin.named
Перезапускаем apparmor:

/etc/init.d/apparmor restart
и запускаем bind9:

/etc/init.d/bind9 start
Если все сделано правильно, то ошибок быть не должно. Если bind вдруг не запустился, то советую проверить /var/log/syslog на наличие ошибок:

tail /var/log/syslog
Если все работает правильно, то самое время приступить к настройке зоны для нашего домена domain.com
Создадим файл конфигурации зон:

nano /var/lib/named/etc/bind/zones.conf
со следующим содержанием:




zone "domain.com" {
  type master;
  file "/etc/bind/domain.com";
};
и установим его владельца:

chown bind:bind /var/lib/named/etc/bind/zones.conf
Отредактируем файл конфигурации bind, чтобы он цеплял конфигурацию зон:

nano /var/lib/named/etc/bind/named.conf
добавим в него строку include "zones.conf";
Осталось лишь создать файл нашей зоны domain.com:

nano /var/lib/named/etc/bind/domain.com
со следующим содержанием:
















$TTL 86400
@ IN SOA ns1.domain.com. root.domain.com. (
2010081301 ; Serial
3600 ; Refresh
900 ; Retry
604800 ; Expire
86400 ; Minimum
);
@ IN    NS      ns1.domain.com.
@       IN      A       192.168.1.1
ns1     IN      A       192.168.1.1
ns2     IN      A       192.168.1.1
www     IN      CNAME   @
domain.com — соответственно имя вашего домена. Поменяйте значение перед параметром ;Serial на текущую дату. Последние цифры в строке с датой (01) обозначают сколько раз раз зона редактировалась за текущие сутки. Так же не забудьте поменять IP адрес, с которым вы связываете свой домен (в моем случае это 192.168.1.1)
После сохранения файла выставляем его владельца:

chown bind:bind /var/lib/named/etc/bind/domain.com
Все готово. Теперь осталось обновить конфигурацию bind командой

rndc reload
и проверять работу сервера:

nslookup domain.com 127.0.0.1
Если все работает верно, вы должны получить от сервера примерно такой ответ:






Server:         127.0.0.1
Address:        127.0.0.1#53
Non-authoritative answer:
Name:   domain.com
Address: 192.168.1.1
На этом настройка завершена. Надеюсь, что у вас все получилось.
Если что-то не получилось, то в первую очередь советую посмотреть лог:

tail /var/log/syslog
Обычно из него бывает все понятно.
За более полной информацией обращайтесь на https://www.isc.org/software/bind

Скопипастено для личных целей отсюда :)