В интернете много различных статей о том, как настроить bind9 или любой другой DNS сервер, но не так уж много статей о том, как автоматизировать обмен изменениями между несколькими DNS серверами. В этой статье я и хотел бы разобрать данный вопрос.
Основная цель: добиться автоматизации распространения обновленных данных на несколько DNS серверов: добавление, редактирование, удаление доменных зон.
Про то, как устанавливать bind, думаю, говорить не стоит. Перейдем непосредственно к автоматизации обмена между главным (master) и вторичным (slave) сервером. Все телодвижения будут выполняться на платформе Debian 6 с Bind9 и Rsync на борту.
Настройка bind на главном сервере.
1. Создаем директорию для размещения файлов доменов:
mkdir /etc/bind/zones
2. Создаем конфигурационный файл для всех зон в только что созданной директории
touch named.conf.zones
3. Подключаем конфигурационный файл в основной
Открываем на редактирование конфиг named.conf
nano named.conf
Вставляем в конец:
include "/etc/bind/zones/named.conf.zones";
Настройка доменных зон на главном сервере
Для заполнения named.conf.zones впоследствии используем шаблон для каждой из зон
zone "example.org" {
type master;
file "/etc/bind/zones/example.org.zone";
};
В соответствии с этим шаблоном файл зоны будет располагаться в директории «/etc/bind/zones/» и называться example.org.zone
Структуру файла зоны для bind можно найти в интернете или же в самом дистрибутиве.
Настройка вторичного сервера имен DNS.
Делаем точно такие же настройки как и на master сервере.
Синхронизация master и slave серверов в автоматическом режиме.
Создадим BASH скрипт, назовем его, к примеру, get-dns
touch /opt/get-dns.sh
Содержимое скрипта:
#!/bin/bash
# Адрес master-сервера с указанием юзера, под которым будет производиться синхронизация.
MAINDNSSRV="dnsuser@master.example.com"
# Директории для синхронизации
SRCSYNCDIR="/etc/bind/zones"
DESTSYNCDIR="/etc/bind"
# Ключи для запуска rsync
RSYNCKEYS="-v -a -r"
# Путь до файла, при помощи которого будет блокироваться повторный запуск скрипта если он еще работает:
RSYNCWORKFILE="/opt/get-dns.work"
###
# Скрипт
###
read RSYNCWORK $RSYNCWORKFILE
rsync $RSYNCKEYS $MAINDNSSRV:$SRCSYNCDIR $DESTSYNCDIR;
/etc/init.d/bind9 reload
echo "0" > $RSYNCWORKFILE
fi
При помощи данного скрипта на slave сервер будут загружаться файлы новых зон, а так же конфигурационный файл.
Данную схему можно применять не только в связке master slave, но и в среде с несколькими slave серверами.
Итог:
1. Необходимость в создании новых доменных зон на нескольких серверах отпадает. Они распространяются автоматически.
2. Редактирование зон не требует дополнительно вносить изменения на других серверах вручную.
3. При использовании лицензионного ПО для редактирования DNS нет нужны платить за slave сервера.
Экономия времени и денег.
Если не хотите заморачиваться с настройкой собственных DNS серверов, то можно воспользоваться услугами компании Stabline по Аренде DNS серверов.
1 домен — бесплатно. Больше — от 30 рублей в год!
Оригинал статьи в моем блоге: Настройка собственных DNS серверов BIND
Не очень разобрался. Мне кажется что bind (named) сам все это выполняет. Я прав ?