Bind Zonentransfer

Bind, PowerDNS
Post Reply
kos
Posts: 56
Joined: 2004-02-15 03:36
 

Bind Zonentransfer

Post by kos »

Hallo,

wir sind 3 Personen die je 1 Server haben. Bisher hat eigentlich jeder seinen eigenen Nameserver genutzt und das ausfallrisiko selbst getragen. Wir möchten uns nun zusammenschließen und somit 3 NS miteinander verbinden.
Die verwendete Software ist Bind.

Ich stelle mir nun das Vorgehen so vor, das jeder seine Domains auf dem eigenen Server als Master anlegt und die Domains der anderen automatisch als Slave übertragen werden.
Mir ist bekannt wie ich eine Domain als Slave anlege und auch wie ich somit die Zone bzw. die Records rüber ziehe.

Code: Select all

zone "abc.de" in {
type slave;
file "/var/cache/bind/abc.de.db"
masters { 123.123.123.123; };
};
Was mich nun an der Sache stört ist, das immer die Domains bzw. die Grundzonen auf den jeweils anderen Servern angelegt werden müssen damit die Zonen transferiert werden können.
Meine Frage ist es nun ob es Praxislösungen gibt, um die Zonenfiles auf allen Master/Slaves abzugleichen ohne selbst Hand anzulegen. Mit ausnahme des Anlegens der eigenen Domain als Master.

Am Interessantesten stelle ich mir das so vor:
Person 1 legt auf seinem Server A die Domain xyz.de an. Server A sendet eine art Info an Server B und C die dann ebenfalls xyz.de anlegen, jedoch als Slave und gleichzeitig entsprechend den Zonentransfer durchführen.
Das selbe könnte nun auch Person 2 oder 3 an seinem Server machen.

Ich hoffe mir kann jemand dazu helfen. Ich habe nicht wirklich Lust selbst eine Lösung zu striken.

Vorab schonmal vielen Dank!
User avatar
nyxus
Posts: 626
Joined: 2002-09-13 08:41
Location: Lübeck
Contact:
 

Re: Bind Zonentransfer

Post by nyxus »

genau nach sowas habe ich vor ein paar Wochen auch gesucht und folgendes gefunden:

Code: Select all

#!/bin/bash

master_server="xxx.xxx.xxx.xxx"
named_conf_file="/etc/bind/named.conf"
ssh_command="ssh $master_server -l named_transfer"
named_slave_file="/etc/named/named.slaves.conf"
zones_file="/etc/named/slave.zones"
zones_tmp_file="/tmp/zones.tmp"

$ssh_command cat $named_conf_file | awk '/dmn [([^{].*)] cfg entry BEGIN/{ print $3}' | cut -d[ -f2 | cut -d] -f1 | sort > $zones_tmp_file

touch $zones_file
cmp $zones_file $zones_tmp_file >/dev/null
if [ $? != 0 ]; then
        echo "Rebuilding zones"
        awk '{ print "zone ""$1"" IN {nttype slave;ntfile "slave."$1"";ntmasters {ntt$master_server;nt};ntallow-query { any; };n};n"}' $zones_tmp_file | sed s/$master_server/$master_server/g > $named_slave_file
        /etc/init.d/bind9 reload
fi
mv $zones_tmp_file $zones_file
Eingesetzt habe ich es noch nicht und blöderweise habe ich mir auch nicht die Quelle notiert. Vielleicht hilft das ja trotzdem. Kann per Cron auf dem Slave aufgerufen werden und schreibt eine Datei die in der Config eingebunden wird.

Ich habe es nicht genutzt weil ich keine Poll-Lösung haben wollte, sondern eine, die die Änderung zum zweiten Server pusht. Müßte sich aber umstellen lassen können.
Last edited by nyxus on 2006-09-26 07:59, edited 1 time in total.
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten
Contact:
 

Re: Bind Zonentransfer

Post by captaincrunch »

Was mich nun an der Sache stört ist, das immer die Domains bzw. die Grundzonen auf den jeweils anderen Servern angelegt werden müssen damit die Zonen transferiert werden können.
Meine Frage ist es nun ob es Praxislösungen gibt, um die Zonenfiles auf allen Master/Slaves abzugleichen ohne selbst Hand anzulegen. Mit ausnahme des Anlegens der eigenen Domain als Master.
Im Allgemeinen läuft der Vorgang vollständig automatisiert ab. Wenn nicht, würde ich eher einen Fehler an deiner Config, bzw. an den Berechtigungen deines Filesystems (schau dir mal die Rechte des übergeordneten Ordners an) suchen.
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
User avatar
nyxus
Posts: 626
Joined: 2002-09-13 08:41
Location: Lübeck
Contact:
 

Re: Bind Zonentransfer

Post by nyxus »

CaptainCrunch wrote:Im Allgemeinen läuft der Vorgang vollständig automatisiert ab.
Du meinst nicht nur den Zonentransfer, sondern auch das Ändern der Konfigdatei auf dem Slave?
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten
Contact:
 

Re: Bind Zonentransfer

Post by captaincrunch »

Ich bezog mich nur auf den eigentlichen Zonetransfer.
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
thorsten
Posts: 561
Joined: 2003-02-01 13:14
Location: Fuldatal
 

Re: Bind Zonentransfer

Post by thorsten »

Die Einrichtung der zonen-Definition in der named.conf oder named.local.conf muß durch $admin geschehen.Der Abgleich der zonen-Informationen geschieht automatisch, denn der master informiert die slaves, dass es ein Update gibt.

Überprüfen ob das funktioniert kann man das folgendermaßen:

1. man geht nach /etc/named
2. man inkrementiert die serial in einer Zonendatei ( db.domain.tld )
3. man läßt den bind die Zonen neu laden ( /etc/init.d/bind9 reload)
4. man schaut ins logfile (/var/log/daemon.log):

Code: Select all

Sep 26 08:17:33 MASTER named[1388]: loading configuration from '/etc/bind/named.conf'
Sep 26 08:17:33 MASTER named[1388]: zone DOMAINNAME.TLD/IN: loaded serial 2006091302
Sep 26 08:17:33 MASTER named[1388]: zone DOMAINNAME.TLD/IN: sending notifies (serial 2006091302)
Sep 26 08:17:33 MASTER named[1388]: client IP_DES_ERSTEN_SLAVES #32852: transfer of 'DOMAIN.TLD/IN': AXFR-style IXFR started
Sep 26 08:17:33 MASTER named[1388]: client IP_DES_ZWEITEN_SLAVES #40700: transfer of 'DOMAIN.TLD/IN': AXFR-style IXFR started
Das initiale Anlegen der /etc/named/db.DOMAIN.TLD Datei auf dem slave geschieht automatisch.
Aber man muß dem slave in der named.conf aber immer selbst mitteilen, dass er für eine neue Domain zuständig ist.

Das o.g. scheint Script ist für das Massenhosting durchaus interessant.
EDIT:
Quelle des o.g. Scripts: http://vhcs.net/new/modules/newbb/viewt ... 79&forum=3
kos
Posts: 56
Joined: 2004-02-15 03:36
 

Re: Bind Zonentransfer

Post by kos »

Thorsten wrote:Das initiale Anlegen der /etc/named/db.DOMAIN.TLD Datei auf dem slave geschieht automatisch.
Aber man muß dem slave in der named.conf aber immer selbst mitteilen, dass er für eine neue Domain zuständig ist.
Genau so ist mit das auch bekannt. Ich habe ja testweise mal (da ich Zugriff auf den 2. Server habe) eine Domain der named.local.conf hinugefügt was auch funktioniert hat. Das nicht zusätzlich eine Zonendatei wie /var/cache/bind/abc.de.db erstellt werden musst weiß ich auch, nur der Pfad in der named.conf sollte drin stehen.

Edit:
Ich hab jetzt mal das Script von oben probiert. Theoretisch wäre das nicht schlecht, aber abgehen davon das mein Server mit publickey abgesichert ist, habe ich auch nicht vor Zugangsdaten an die Personen weiterzugeben. Immerhin ist es ein Sicherheitsrisiko ein SSH-Zugang einzurichten, auch wenn dieser eine eigene Gruppe hat. Die einzige mir bekannte möglichkeit wäre nur noch den User zu "Jailen" oder chrooten oder wie auch immer und ein symlink auf die named.conf zu legen.

Prinzipiell wäre mir aber eine Lösung Nyxus gesagt hat - die Zonen zu senden - auch lieber.
Dahingehend hab ich eben schon überlegt ein eigene Serveranwendung für diesen Zweck zu schreiben. (da bin ich aber nicht so gut darin und würde dies dann auch in php machen)
User avatar
nyxus
Posts: 626
Joined: 2002-09-13 08:41
Location: Lübeck
Contact:
 

Re: Bind Zonentransfer

Post by nyxus »

noch ein Vorschlag: Auf dem Master die zones.conf (oder wie auch immer die bei euch heißt) ins Webverzeichnis kopieren (evtl. vorher von Ballast befreien), vom slave per wget regelmäßig holen lassen und automatisch wie in dem obigen Script umschreiben. Das sollte sogar ohne Verschlüsselung gehen, da in dieser Datei keine wirklich sensitiven Informationen enthalten sind (für *meinen* Einsatz wäre das jedenfalls nicht sensitiv ;-) ).
Das spart schonmal den SSH-Zugang.
User avatar
nyxus
Posts: 626
Joined: 2002-09-13 08:41
Location: Lübeck
Contact:
 

Re: Bind Zonentransfer

Post by nyxus »

und es geht weiter ...
man muß nichtmal pollen. Wenn ich auf meinem Server1 eine neue Domain test1234.de anlege und ein "/etc/init.d/bind9 reload test1234.de" mache, dann kommt auf server2 im syslog

Code: Select all

Sep 26 14:42:04 urania named[6340]: received notify for zone 'test1234.de': not authoritative
Darauf könnte man einen logcheck laufen lassen, der dann vom server1 die Datei aus dem Webverzeichnis liest und die lokale Konfiguration ergänzt.
Oder gibt es dabei Nachteile, die ich gerade übersehe?
kos
Posts: 56
Joined: 2004-02-15 03:36
 

Re: Bind Zonentransfer

Post by kos »

Hm also die Idee mit dem wget hatte ich auch schon gehabt.
... ich hab grad mal die Logs durchgeschaut und ich finde im Server2 keineb Eintrag wie bei dir wenn ich auf Server1 eine Domain anlege.

Vielleicht doch falsch Konfiguriert? Wie sieht das denn bei dir aus?
Edit: Ähm ... d.h. der Slaveserver (Server2) ist ausser als

Code: Select all

allow-transfer { xxx.xxx.xxx.xxx; };
im MasterServer (Server1) nicht eingetragen. Fehlt da noch was?
Last edited by kos on 2006-09-26 15:32, edited 1 time in total.
User avatar
nyxus
Posts: 626
Joined: 2002-09-13 08:41
Location: Lübeck
Contact:
 

Re: Bind Zonentransfer

Post by nyxus »

KoS wrote:ich hab grad mal die Logs durchgeschaut und ich finde im Server2 keineb Eintrag wie bei dir wenn ich auf Server1 eine Domain anlege.
Ein reload der Domain hast Du aber auch gemacht?
kos
Posts: 56
Joined: 2004-02-15 03:36
 

Re: Bind Zonentransfer

Post by kos »

Ja, den reload hab ich so gemacht wie du gesagt hast. Ich habs auch mit "rndc reload test1234.de" gemacht.
Bei mir sind die ganzen Logs zu bind/named im daemon.log. Auf dem Slave tut sich da garnichts, nur auf dem Master.
whyte
Posts: 61
Joined: 2006-01-09 14:21
Contact:
 

Re: Bind Zonentransfer

Post by whyte »

Hallo,

vielleicht hilft dir das etwas:

Einrichten des pDNS:
http://www.server-wissen.de/linux/hilfe ... chten.html

Einrichten des sDNS:
http://www.server-wissen.de/linux/hilfe ... chten.html

Und falls du weiterhin den Fehler bekommst, prüfe mal die Zonendatei auf dem pDNS. Ich hatte mich auch mal dämlich gesucht, der Fehler lag in einer nicht komformen Zonendatei, die der Slave dann nicht annahm, bzw der Master auch nicht akzeptierte.

Gruß
Marco
kos
Posts: 56
Joined: 2004-02-15 03:36
 

Re: Bind Zonentransfer

Post by kos »

Danke für die zwei Links. Werd ich mal mal vereinnahmen.
Aber was das Problem betraf hatte sich schon erledigt, hatte nur leider vergessen zu posten.

Bei mir hat folgendes gefehlt in der named.conf:

Code: Select all

notify: yes;
also-notify { xxx.xxx.xxx.xxx; };
Post Reply