Установка и настройка DNS сервера bind под Ubuntu 12.04 server в chroot
Все основное взято тут.
Содержание
Установка
Чтобы не писать sudo для каждой команды запустим консоль от имени рута:
sudo su
Затем установим сам DNS сервер bind:
apt-get install bind9
Настройка запуска в chroot
Судя по документациям и советам многих системных администраторов, 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
Теперь нужно настроить apparmor, для запуска bind в chroot окружении
nano /etc/apparmor.d/usr.sbin.named
И добавляем туда строку.
# Allow Plesks configuration for bind9 to run with Apparmor in chroot /var/lib/named/** rwm,
Перезапускаем apparmor:
/etc/init.d/apparmor restart
Создание ссылки на openssl библиотеку для запуска в chroot
mkdir -p /var/lib/named/usr/lib/x86_64-linux-gnu/openssl-1.0.0/engines
Путь мб другой, в зависимости от дистра (32 или 64 бит). См имя каталога x86_64-linux-gnu
Редактируем файл /etc/fstab и добавляем строку.
# Для работы bind9 в chroot /usr/lib/x86_64-linux-gnu/openssl-1.0.0/engines /var/lib/named/usr/lib/x86_64-linux-gnu/openssl-1.0.0/engines none bind 0 0
Имя каталогов мб другими. См имя каталога x86_64-linux-gnu.
Монтируем каталог.
mount /var/lib/named/usr/lib/x86_64-linux-gnu/openssl-1.0.0/engines
И если все нормально, то в каталоге /var/lib/named/usr/lib/x86_64-linux-gnu/openssl-1.0.0/engines появятся файлы библиотек.
Запуск bind9
/etc/init.d/bind9 start
Если все сделано правильно, то ошибок быть не должно. Если bind вдруг не запустился, то советую проверить /var/log/syslog на наличие ошибок:
tail /var/log/syslog
Настройка кэширующего сервера
Открываем конфигурационный файл
nano /etc/bind/named.conf.options
добавляем в уже имеющийся код, следующее
forwarders { 8.8.8.8; 10.0.0.1; }; listen-on { 127.0.0.1; 172.16.130.1; };
Что это значит:
forvarders - вышестоящий DNS сервер, используется для переадресации запроса в случае если URL не найден в вашей базе (8.8.8.8 DNS google)
listen-on - адреса которые будут обслуживаться нашим DNS сервером (локалхост и сетевая карта смотрящая в локальную сеть)
В общем файл named.conf.options должен выглядеть вот так:
options { directory «/var/cache/bind»; // If there is a firewall between you and nameservers you want // to talk to, you may need to fix the firewall to allow multiple // ports to talk. See http://www.kb.cert.org/vuls/id/800113 // If your ISP provided one or more IP addresses for stable // nameservers, you probably want to use them as forwarders. // Uncomment the following block, and insert the addresses replacing // the all-0′s placeholder. // forwarders { // 0.0.0.0; // }; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; forwarders { 8.8.8.8; 10.0.0.1; }; listen-on { 127.0.0.1; 172.16.130.1; }; };
Редактируем файл /etc/resolv.conf Там дб не закоментированная одна строка
nameserver 127.0.0.1
И перезапускаем bind
service bind9 restart