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-freeBind9 из 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!
Get new posts in your inbox
No spam. Unsubscribe anytime.