DNS установка · 5 min read · Oct 03, 2025

[Debian Sarge] Установка мастер/слейв DNS системы Bind9

[Debian Sarge] Установка мастер/слейв DNS системы Bind9

Версия: 1.0 - 23 авг, 2006

Добро пожаловать

В этом руководстве мы установим 2 сервера DNS Bind, один в качестве мастера, а другой в качестве слейва. По соображениям безопасности мы будем использовать chroot для Bind9 в его собственной изоляции.

Использование двух серверов для домена является распространенной конфигурацией, и для хостинга вашего собственного домена вам необходимо иметь как минимум 2 сервера домена. Если один выйдет из строя, другой сможет продолжать обслуживать ваш домен.

Наша конфигурация будет использовать Debian Sarge 3.1 (stable) в качестве основы. Простая, чистая и актуальная установка будет достаточной, так как мы установим необходимые пакеты с помощью этого руководства.

В этом руководстве я буду использовать вымышленный домен “linux.lan”. DNS-серверы будут использовать 192.168.254.1 и 192.168.254.2 в качестве их IP.

Некоторые последние слова перед началом: я прочитал руководство Джо (также на этом сайте) и несколько других, но ни одно из них не работало без некоторых доработок. Поэтому я сделал свое собственное руководство. И оно ДОЛЖНО работать с первого раза :)


Установка программного обеспечения

Сначала вам потребуется чистая установка Debian Sarge. Убедитесь, что она актуальна!

apt-get update; apt-get upgrade

Также нам нужны некоторые инструменты сборки Debian, так как нам нужно будет загрузить исходные пакеты:

apt-get install devscripts

Далее мы установим программное обеспечение, необходимое для Bind. Чтобы использовать шифрование для передачи файла зоны между мастером и слейвом, нам нужна более новая версия Bind9 (версия >=9.3), чем та, что находится в репозитории Sarge. Мы будем использовать исходный код из ветки -testing. Поэтому убедитесь, что у вас есть строка, подобная этой в вашем

/etc/apt/sources.list :

deb-src http://---your.debian.mirror---/debian testing main contrib non-free

Bind9 из testing зависит от lsb-base из testing. Давайте его получим:

(Объяснение синтаксиса: -y говорит apt отвечать “да” на все вопросы, build-dep устанавливает все пакеты, необходимые для -testing_packageX- из репозитория sarge, а с -b исходный код собирается сразу.)

cd ~/a/dir/for/lsb-base/
apt-get -y build-dep lsb-base
apt-get source lsb-base -b
dpkg-i lsb-base*.deb

Следующий шаг - Bind9:

cd ~/a/dir/for/bind9
apt-get -y build-dep bind9
apt-get source bind9 -b
dpkg -i *.deb

Теперь все наше программное обеспечение установлено и готово к настройке.

Настройка мастера

Сначала нам нужно остановить bind9:

/etc/init.d/bind9 stop

Чтобы использовать chroot для bind, нам нужно установить опцию в

/etc/default/bind9 :

С:

OPTIONS="-u bind"

На:

OPTIONS="-u bind -t /var/lib/named"

Теперь он будет работать как пользователь ‘bind’, изолированный в ‘/var/lib/named’.

Далее мы редактируем строку forwarders в

/etc/bind/named.conf.options чтобы соответствовать DNS от нашего провайдера:

forwarders { 194.109.6.66; };

Эти шаги необходимы для chroot jail:

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
mv /etc/bind /var/lib/named/etc
ln -s /var/lib/named/etc/bind /etc/bind
mknod /var/lib/named/dev/null c 1 3
mknod /var/lib/named/dev/random c 1 8
chmod 666 /var/lib/named/dev/
chown -R bind:bind /var/lib/named/var/

chown -R bind:bind /var/lib/named/etc/bind

Теперь у Bind есть свой собственный каталог с местом для .pid файлов и конфигурационных файлов. Чтобы все было понятно, мы создали символическую ссылку обратно на /etc/.

Теперь отредактируйте /etc/init.d/sysklogd, чтобы разрешить ведение журнала активности bind:
С:

SYSLOGD=""

На:

SYSLOGD="-a /var/lib/named/dev/log"

Последний шаг - добавить IP этого вновь установленного DNS-сервера (localhost) в ваш

/etc/resolv.conf чтобы использовать его: echo “search linux.lan” > /etc/resolv.conf
echo “nameserver 127.0.0.1” >> /etc/resolv.conf

Теперь перезапустите sysklogd и bind9:

/etc/init.d/sysklogd restart
/etc/init.d/bind9 start

И протестируйте!

ping www.google.com

Если вы получили ответ, значит, ваш мастер-сервер DNS работает и готов к использованию. Теперь мы заполним и используем домен linux.lan с нашим новым мастер-сервером.


Настройка домена linux.lan

Мастер DNS-сервер в настоящее время просто перенаправляет запросы на сервер вашего провайдера. Поэтому мы сейчас установим и настроим наш собственный домен и позволим нашему новому серверу обрабатывать все запросы, касающиеся этого домена.

Давайте начнем с создания каталога, где мы будем хранить файл зоны. Этот файл содержит всю информацию о домене.

mkdir /etc/bind/zones/

Далее мы создадим файл зон,

/etc/bind/zones/master_linux.lan :

$TTL 3D  

@       IN      SOA     ns1.linux.lan. hostmaster.linux.lan. (
                        199802151       ; серийный номер, дата сегодня + серийный номер сегодня
                        8H              ; обновление, секунды
                        2H              ; повтор, секунды
                        4W              ; истечение, секунды
                        1D )            ; минимум, секунды
;
                TXT     "Linux.LAN, обслуживающий ВАШ домен :)"
                NS      ns1             ; Inet адрес DNS-сервера
        NS    ns2
                MX      10 mail        ; Основной почтовый обменник
localhost    A    127.0.0.1
ns1        A    192.168.254.1
ns2        A    192.168.254.2
www        CNAME    ns1

Здесь мы создали простой файл зоны с обоими DNS-серверами и алиасом www для ns1. На случай, если у нас запущен apache на ns1 ;)

Теперь отредактируйте /etc/bind/named.conf.local и добавьте:

zone "linux.lan" {
        type master;
        file "/etc/bind/zones/master_linux.lan";
};

Вот и все, теперь мы можем перезапустить bind и проверить, работает ли он:

/etc/init.d/bind9 restart
ping ns1.linux.lan

На этом этапе у вас должен быть работающий и используемый DNS-сервер :)

Если он говорит, что не может найти домен, возможно, dhclient изменил вашу запись DNS… Так что убейте его.


Установка слейва

В основном, слейв использует ту же базовую систему, что и мы построили в первой части (прямо перед тем, как мы добавили файл зоны). Мы добавим некоторые небольшие изменения как в мастер, так и в слейв, чтобы они работали вместе. Файл зон будет передан по сети с использованием шифрования.

Если не указано иное, эти команды предназначены только для слейва.

Создайте каталог зон:

mkdir /etc/bind/zones

Для мастера И слейва отредактируйте /etc/bind/named.conf.options и добавьте:

dnssec-enable yes;

Теперь нам нужен безопасный ключ. Это создаст файл .private и файл .key. Строка ‘key=’ в файле .private представляет собой хеш-ключ.

dnssec-keygen -a hmac-md5 -b 128 -n host linux.lan

Добавьте это в ваш /etc/bind/named.conf на мастере И слейве:

key "TRANSFER" {
        algorithm hmac-md5;
        secret "---HASHKEY---";
};

На мастере мы добавляем IP слейва в /etc/bind/named.conf :

server 192.168.254.2 {
        keys {
        TRANSFER;
    };
};

А на слейве мы добавляем IP мастера в /etc/bind/named.conf :

server 192.168.254.1 {
        keys {
        TRANSFER;
    };
};

Добавьте в /etc/bind/named.conf.local :

zone "linux.lan" {
        type slave;
        file "/etc/bind/zones/slave_linux.lan";
        masters { 192.168.254.1; };
        allow-notify { 192.168.254.1; };
};

Последнее, что нужно сделать на ОБОИХ хостах, это добавить это в /etc/bind/named.conf :

include "/etc/bind/rndc.key";

Чтобы успешно передать зону, обе системы должны иметь синхронизированные часы, поэтому:

apt-get -y install ntpdate

Перезапустите bind на обеих машинах и обратите внимание на новый файл зоны на слейве :)

Если вы задаетесь вопросом, почему обновления файла зоны на вашем мастере, похоже, не удаются, проверьте настройки истечения и т.д. внутри файла зоны.

Удачи с вашей новой конфигурацией мастер/слейв DNS!

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.