В настоящее время у меня есть DNS-сервер, который служит главным DNS-сервером для ряда наших доменов. Я хочу настроить новый вторичный DNS-сервер. Могу ли я автоматически настроить BIND на новом сервере в качестве вторичного для всех доменов на первичном сервере?
В случае необходимости, у меня есть Webmin на основном сервере. Я считаю, что у Webmin есть возможность создать зону в качестве вторичной на другом сервере при создании новой главной зоны на одном сервере, но я не знаю ни одного способа пакетного создания вторичных зон для ряда существующий мастер-зоны. Может я что-то упускаю.
Есть ли способ «пакетного создания» подчиненных DNS-зон на новом подчиненном DNS-сервере для всех DNS-зон существующего главного?
Написание сценария для этого не займет много времени, особенно если вы называете файлы зон после домена.
ls master.dir > domain.list
foreach domain (`cat domain.list`)
echo 'zone "$domain" { type slave; file "slave/$domain"; masters { 1.2.3.4 }; };' >> named.conf.slaves
end
И добавить include named.conf.slaves;
в ваш named.conf
Поскольку это все равно попало на главную страницу:
Настроить rndc
и при установке опция
allow-new-zones yes;
в твоем named.conf
. Затем вы можете добавить новые подчиненные зоны из командной строки (без ручного редактирования named.conf на подчиненном сервере) с помощью
rndc addzone example.com '{ type slave; masters { master_ip; }; };'
rndc reconfig
который можно легко создать и повторить для любой дополнительной зоны, которую вы хотите добавить.
В Webmin, когда вы настраиваете новое ведомое устройство, вам будет предоставлена возможность скопировать все зоны на ведущем устройстве на новое ведомое устройство. В документации Virtualmin есть раздел, посвященный подчиненным DNS-серверам, и если вы используете только Webmin, вы просто пропустите заключительные биты о том, как заставить Virtualmin использовать подчиненный сервер. Шаги для Webmin такие же.
http://www.virtualmin.com/documentation/dns/slave-configuration
В частности, вам нужен вариант «Создать все существующие главные зоны на подчиненном?» который скопирует все данные.
Webmin также может в будущем превратить подчиненное устройство в главное устройство.
Вероятно, потребуется сценарий. Получите список всех доменов, для которых вы являетесь главным, и используйте этот список для настройки подчиненных конфигураций.
Возможно, вам также потребуется настроить мастера, чтобы разрешить передачу с подчиненного сервера. Другой вариант - TSIG ( http://www.cyberciti.biz/faq/unix-linux-bind- named-configuring-tsig/ )
Самый простой способ - скопировать конфигурацию с мастера.
Короткий сценарий perl должен уметь заменять ключевое слово master на slave и добавлять указатель на master.
Как заметил Кристофер, вам также необходимо будет изменить конфигурацию мастера, чтобы разрешить передачу зон от мастера.
Я также заметил уведомление о безопасности для привязки, в котором указано, что вы должны убедиться, что все ваши зоны имеют предложение allow-query.
Принимая во внимание то, что было сказано ранее, я адаптировал сценарий оболочки от Криса С. Сначала сценарий проверяет, существует ли файл экспорта, и, если да, он удаляет его, чтобы иметь возможность запускать этот сценарий несколько раз без получения нескольких экземпляров одного и того же зона. export.list не является предварительно существующим файлом, который является частью BIND, поэтому не беспокойтесь. Он получает список доменов, затем удаляет 3 последних символа файла (db) (формат файла зоны - domain.tld.db), чтобы получить зону и написать правильную директиву для каждой зоны.
#!/bin/bash
ls *.db > domains.list
if [ -f export.list ]; then
rm export.list
fi
for domain in `cat domains.list`; do
domain1="${domain::-3}"
echo "zone \"$domain1\" { type slave; file \"slaves/$domain\"; masters {
XX.XX.XX.XX; }; };" >> export.list
done
затем я могу скопировать и добавить содержимое export.list в /etc/ named.conf в нижней части файла моего вторичного сервера имен.