Автоматическое создание вторичных зон DNS

На доскональное знание данной темы, не может претендовать, пожалуй ни один спец, из ныне живущих на земле. ;-)
Так поможем друг другу.

Модераторы: Trinity admin`s, Free-lance moderator`s

Ответить
Osmolovsky
Power member
Сообщения: 39
Зарегистрирован: 15 июл 2004, 13:57
Контактная информация:

Автоматическое создание вторичных зон DNS

Сообщение Osmolovsky » 08 апр 2005, 12:27

Добрый день.
Вопрос следующего характера.
Есть Primary сервер DNS, обслуживающий довольно таки много зон. Есть секондари. На первичном польователи сами управляют зонами и тд. А на вторичном хотя бы саму зону руками обновлять приходиться.
Устало.

Есть ли возможность вторичник настроить так, чтобы он раз в 30-60 минут сам лез на первичку и смотрел, появились ли новые зоны, изменились ли старые, удалились ли существующие. И соотв-но изменял все в себе сам. Новые создавал и зеркалировал, в текущих менял записи и удалял удаленные. Изменять то проблем нет. Важно чтоб создавал зоны и удалял автоматически. Эдакое DNS зеркало.

Аватара пользователя
corvax
free-lance moderator
Сообщения: 877
Зарегистрирован: 06 авг 2004, 17:21
Откуда: Kiev, Ukraine
Контактная информация:

Re: Автоматическое создание вторичных зон DNS

Сообщение corvax » 08 апр 2005, 12:58

Osmolovsky писал(а):Есть ли возможность вторичник настроить так, чтобы он раз в 30-60 минут сам лез на первичку и смотрел, появились ли новые зоны, изменились ли старые, удалились ли существующие. И соотв-но изменял все в себе сам. Новые создавал и зеркалировал, в текущих менял записи и удалял удаленные. Изменять то проблем нет. Важно чтоб создавал зоны и удалял автоматически. Эдакое DNS зеркало.
без указания используемого DNS сервера и места хранения инфы о зонах на первичном NS точный ответ дать невозможно
--
/corvax

Osmolovsky
Power member
Сообщения: 39
Зарегистрирован: 15 июл 2004, 13:57
Контактная информация:

Сообщение Osmolovsky » 08 апр 2005, 13:50

bind 9.3.0 - первичник. FreeBSD
named 8.3.7 стандартный демон FreeBSD на вторичке.

Аватара пользователя
corvax
free-lance moderator
Сообщения: 877
Зарегистрирован: 06 авг 2004, 17:21
Откуда: Kiev, Ukraine
Контактная информация:

Сообщение corvax » 08 апр 2005, 14:01

Osmolovsky писал(а):bind 9.3.0 - первичник. FreeBSD
named 8.3.7 стандартный демон FreeBSD на вторичке.
если named.conf доступен по scp/sftp/rsync, то дальше - дело одного перлового скрипта

а каким образом добавляются/удаляются зоны на первичном DNS сервере? ручками в named.conf?
--
/corvax

Osmolovsky
Power member
Сообщения: 39
Зарегистрирован: 15 июл 2004, 13:57
Контактная информация:

Сообщение Osmolovsky » 08 апр 2005, 14:30

нет :( не доступен. хотя можно на самом деле как нить подумать. банально раз в 5 минут на удаленную машину по фтп класть :)

нет. из панели управления. как создание доменов, управление DNS, удаление.

а в самом сервере нету функции читать сторонний и оттуда брать все?

Аватара пользователя
corvax
free-lance moderator
Сообщения: 877
Зарегистрирован: 06 авг 2004, 17:21
Откуда: Kiev, Ukraine
Контактная информация:

Сообщение corvax » 08 апр 2005, 15:04

Osmolovsky писал(а):нет :( не доступен. хотя можно на самом деле как нить подумать. банально раз в 5 минут на удаленную машину по фтп класть :)
т. е. инициировать ftp соединение с первичного DNS сервера и аплоадить конфиг на вторичный DNS сервер?
Osmolovsky писал(а):нет. из панели управления. как создание доменов, управление DNS, удаление.
а что эта панель управления делает? хачит named.conf?
Osmolovsky писал(а):а в самом сервере нету функции читать сторонний и оттуда брать все?
AFAIK нет. ибо "оттуда брать все" смысла нет никакого
--
/corvax

Osmolovsky
Power member
Сообщения: 39
Зарегистрирован: 15 июл 2004, 13:57
Контактная информация:

Сообщение Osmolovsky » 08 апр 2005, 16:12

т. е. инициировать ftp соединение с первичного DNS сервера и аплоадить конфиг на вторичный DNS сервер?
ну типа, аплоадить конфиг на вторичник, там его локально скриптом разобрать повыдергивав только имена доменов, по рыбе забить эти имена как слейвы в конфиг намеда на вторичнике и рестартануть его. делать оное раз в 10 минут. или типа того. но уж кривой путь больно :)

как вариант на первичнике сразу ставить вторичник и NOTYFY ему посылать как надо. а на том ловить эти NOTIFY и из них уже генерить слейв зоны, но как это сделать я вообще не представляю :) хотя если оно в лог пишет что нить типа "Recivied notyfy for www.loosers.com from 111.111.111.111, cannot update lalala" то можно отсюда зоны ловить и по ним генерить. но тоже гемор. :)
а что эта панель управления делает? хачит named.conf?

ну почему прям хачит :) она в него пишет то что надо и рестартует DNS периодически.

Аватара пользователя
corvax
free-lance moderator
Сообщения: 877
Зарегистрирован: 06 авг 2004, 17:21
Откуда: Kiev, Ukraine
Контактная информация:

Сообщение corvax » 08 апр 2005, 16:25

Osmolovsky писал(а):
т. е. инициировать ftp соединение с первичного DNS сервера и аплоадить конфиг на вторичный DNS сервер?
ну типа, аплоадить конфиг на вторичник, там его локально скриптом разобрать повыдергивав только имена доменов, по рыбе забить эти имена как слейвы в конфиг намеда на вторичнике и рестартануть его. делать оное раз в 10 минут. или типа того. но уж кривой путь больно :)
чего это он кривой? нормальный вполне
Osmolovsky писал(а):как вариант на первичнике сразу ставить вторичник и NOTYFY ему посылать как надо. а на том ловить эти NOTIFY и из них уже генерить слейв зоны,
и как ловить этот NOTIFY?!?!
Osmolovsky писал(а):но как это сделать я вообще не представляю :)
во-во
Osmolovsky писал(а): хотя если оно в лог пишет что нить типа "Recivied notyfy for www.loosers.com from 111.111.111.111, cannot update lalala" то можно отсюда зоны ловить и по ним генерить. но тоже гемор. :)
как по мне, так это явно не лучше, чем генерить фрагмент named.conf на основании фрагмента named.conf с первичного DNS сервера
--
/corvax

Osmolovsky
Power member
Сообщения: 39
Зарегистрирован: 15 июл 2004, 13:57
Контактная информация:

Сообщение Osmolovsky » 08 апр 2005, 16:29

будем есть попробовать :)

Аватара пользователя
setar
Site Admin
Site Admin
Сообщения: 1990
Зарегистрирован: 22 авг 2002, 12:03
Откуда: St. Petersburg

Сообщение setar » 11 апр 2005, 17:20

:) аналогичную проблемму я решил очень просто, вот скрипт :
скрипт add_zone_support

Код: Выделить всё

#!/bin/bash
zone=$1

delete_from_conf (){
cat /etc/named.conf | awk -v RS='};' -v ORS='' '
NR != 1 && !/'$zone'/ {print "};"}
!/'$zone'/ { print }
' > /etc/named.new && mv -f /etc/named.new /etc/named.conf
}

delete_zone_file (){
rm -f /var/named/$zone.zone
}

delete_from_secondary (){
echo "give root password for secondary DNS"
echo "
cat /etc/named.conf | awk -v RS='};' -v ORS='' '
NR != 1 && !/'$zone'/ {print \"};\"}
!/'$zone'/ { print }
' > /etc/named.new && mv -f /etc/named.new /etc/named.conf
rm -f /var/named/$zone.zone
rndc reload" |ssh root@192.168.0.25
}


#delete_mail_conf () {
#cat /etc/mail/local-host-names | awk  '!/'$zone'/   {print}' > /etc/mail/lhn && mv -f /etc/mail/lhn /etc/mail/local-host-names
#cat /etc/mail/virtusertable | awk  '!/'$zone'/   {print}' > /etc/mail/vut && mv -f /etc/mail/vut /etc/mail/virtusertable
#}


add_zone_file () {
echo "\$TTL    86400
\$ORIGIN $zone.
@               IN      SOA     ns.trinity.spb.ru. setar.trinity.spb.ru. (
                $(date +%Y%m%d)01
                43200
                7200
                604800
                86400 )
		IN      NS      ns.trinity.spb.ru.
		IN      NS      ns1.trinity.spb.ru.
@               IN      MX 10   gw.trinity.spb.ru.
@               IN      A       81.3.165.126
www             IN      A       81.3.165.126" >/var/named/$zone.zone
}

add_config_zone () {
echo "
//
// autoconf by Setar to $zone
//
zone "$zone" IN {
        type master;
        file \"$zone.zone\";
};" >>/etc/named.conf
}

#add_mail_conf () {
#echo "
# autoconf by Setar to $zone
#$zone" >>/etc/mail/local-host-names

#echo "
## autoconf by Setar to $zone
#@"$zone"	error:nouser 550 No such user here" >>/etc/mail/virtusertable

#rm -f /etc/mail/virtusertable.db
#cd /etc/mail/
#make 
#
#}

do_conf_secondary (){
echo "give root password for secondary DNS"
echo "
echo \"
//
// autoconf by Setar to $zone
//
zone \"$zone\" IN {
        type slave;
	masters {81.3.165.126;};
        file \\\"$zone.zone\\\";
};
\" >>/etc/named.conf
rndc reload" |ssh root@192.168.0.25
}

if [ ! $zone ]; then echo "Enter domain name!";echo "new_zone my_new_domain "; exit ; fi;
delete_from_conf && delete_zone_file && delete_from_secondary && add_zone_file && add_config_zone && rndc reload && do_conf_secondary
echo "All Done!"
Скрипт сами понимаете под правку :) ради бога не поленитесь проверить его весь и осмыслить

здесь

81.3.165.126 = мастер DNS
192.168.0.25 = секондари DNS (доступен из локалки)
меняйте дефаултные шаблоны!
Если требуется протиска дефаут мылера, то раскоментариваем и выполняем соответствующие процедуры.


Ну а это довесок, для удаления поддержки зон.
delete_zone

Код: Выделить всё

#!/bin/bash
zone=$1

delete_from_conf (){
cat /etc/named.conf | awk -v RS='};' -v ORS='' '
NR !=1 && !/'$zone'/ {print "};"}
!/'$zone'/ { print }
' > /etc/named.new
# && mv -f /etc/named.new /etc/named.conf
}

delete_zone_file (){
rm -f /var/named/$zone.zone
}

delete_from_secondary (){
echo "give root password for secondary DNS"
echo "
cat /etc/named.conf | awk -v RS='};' -v ORS='' '
NR != 1 && !/'$zone'/ {print \"};\"}
!/'$zone'/ { print }
' > /etc/named.new && mv -f /etc/named.new /etc/named.conf
rm -f /var/named/$zone.zone
rndc reload" |ssh root@192.168.0.25
}

#delete_mail_conf () {
#cat /etc/mail/local-host-names | awk  '!/'$zone'/   {print}' > /etc/mail/lhn && mv -f /etc/mail/lhn /etc/mail/local-host-names
#cat /etc/mail/virtusertable | awk  '!/'$zone'/   {print}' > /etc/mail/vut && mv -f /etc/mail/vut /etc/mail/virtusertable
#}


send_delete_mail () {
echo "End for suport Primary (81.3.165.126) and Secondary (195.239.141.199) zone for $zone" | mailto root@trinity.spb.ru -s "End support zone $zone"
 }

if [ ! $zone ]; then echo "Enter domain name!";echo "delete_zone my_zone.ru"; exit ; fi;
 delete_from_conf && delete_zone_file && rndc reload && delete_from_secondary && send_delete_mail
 echo "All Done!"
Все скрипты проверены в работе, но заточены под меня лично, так что читайте, вникайте в суть и бакапте те файлы с которыми скрипт работает, на меня в случае потери данных - НЕ ПИНЯТЬ!

Ответить

Вернуться в «Серверы - ПО, Unix подобные системы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 22 гостя