Установка и настройка DNS сервера bind под Ubuntu 12.04 server в chroot

Материал из Wiki МИАЦ ВО
Перейти к навигации Перейти к поиску

Все основное взято тут.

Установка

Чтобы не писать 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