<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<div class="moz-cite-prefix">Hi<br>
<br>
so ich hab jetzt einfach mal Zeit & Lust gehabt und hab mir
Tims Anleitung geschnappt auf mich angepasst und das ganze mal
"probiert".<br>
<br>
Als DnsPeers
hab ich aktuell nur 10.50.252.14 drinnen, da ich zu den anderen
Servern keinen direkten Link habe (theoretisch müsste es aber
dennoch klappen oder? Geht dann halt über 2 Server oder so versteh
ich das richtig?). Soweit ich das jetzt überblicken kann, hat das
ganze problemlos funktioniert:<br>
<br>
******* /etc/bind # /etc/bind/sync.sh <i>(erster Aufruf des
Scripts!)</i><br>
zone fff.community/IN: loaded serial 2015101501<br>
OK<br>
******* /etc/bind # ls<br>
backup bind.keys db.0 db.127 db.255 db.empty
db.fff.community db.local db.root named.conf
named.conf.default-zones named.conf.local named.conf.options
rndc.key sync.sh zones.rfc1918<br>
******* /etc/bind # cat db.fff.community<br>
<br>
fff.community. 3600 IN SOA
fff-gw-m1.fff.community. franken.freifunk.net. 2015101501 3600
1800 604800 600<br>
fff.community. 3600 IN NS ro1.fff.community.<br>
fff.community. 3600 IN NS
fff-wue1.fff.community.<br>
fff.community. 3600 IN NS
fff-gw-m1.fff.community.<br>
FFF-GW-M1.fff.community. 3600 IN A ##########<br>
FFF-GW-M1.fff.community. 3600 IN AAAA ##########<br>
fff-wue1.fff.community. 3600 IN A ##########<br>
ro1.fff.community. 3600 IN A ##########<br>
fff.community. 3600 IN SOA
fff-gw-m1.fff.community. franken.freifunk.net. 2015101501 3600
1800 604800 600<br>
<br>
******* /etc/bind #<br>
<br>
(ich hab manuell ein paar IP Adressen durch Rauten zensiert, dort
stehen eigentlich öffentliche IPs die aber nicht unbedingt durch
die Mailingliste müssen)<br>
<br>
die db.fff.community hab ich nur leer angelegt, sie wurde nach den
ersten ausführen von /etc/bind/sync.sh selbstständig befüllt also
genau das, was eigentlich passieren soll, richtig? Den Cron hab
ich jetzt zur Sicherheit mal noch aus gelassen, will erst
bestätigt haben das bisher alles soweit stimmt. Wenn ihr dann
wollt, kann ich den Cron aktivieren. <br>
<br>
Normales DNS (getestet auch mit Seiten die ich nie besuche, weil
wegen Cache oder sowas) über meinen Server (Ich hab meinen Laptop
im fff-Fürth Netz manuell die IP 10.50.32.151 verpasst, als
Gateway 10.50.32.4 und als einzigen DNS 10.50.32.4) läuft
weiterhin problemlos (wenn man schon nicht soviel Ahnung von dem
Zeug hat, probiert man das zur Sicherheit mal ;)) Zur Sicherheit
hab ich im DHCP jetzt aber mal noch als 2. Nameserver 8.8.8.8 mit
rausgegeben: option domain-name-servers 10.50.32.4, 8.8.8.8;
denke das schadet erstmal nicht oder?<br>
<br>
mfg<br>
<br>
Christian<br>
<br>
Am 15.10.2015 um 21:42 schrieb Tim Niemeyer:<br>
</div>
<blockquote cite="mid:1444938164.8750.121.camel@mastersword.de"
type="cite">
<pre wrap="">Hi
Also ich hab auf ro1 nun folgendes getan:
Den ro1 selbst nicht mehr als dns via dhcp verteilt. Hier habe ich jetzt
temporär 8.8.8.8 drin.
cd /etc/bind/
Dein Script (siehe unten) in /etc/bind/sync.sh gepackt.
chmod +x sync.sh
touch db.fff.community
chmod g+w db.fff.community
chown root:bind db.fff.community
mkdir backup
chmod g+w backup
chown root:bind backup
in named.conf.local:
--- %< ---
zone "fff.community" {
type master;
file "/etc/bind/db.fff.community";
allow-transfer {10.50.252.15; 10.50.252.39; 10.50.252.27;};
};
--- >% ---
Die config von sync.sh angepasst:
--- %< ---
DnsPeers=(10.50.252.15 10.50.252.38 10.50.252.27)
DomainZone="fff.community"
OwnZoneFile="/etc/bind/db.fff.community"
TempDir="/tmp/fff-dns"
BackupDir="/etc/bind/backup"
--- >% ---
Cron angelegt (/etc/crontab):
*/5 * * * * bind /etc/bind/sync.sh
Geb mal kurz Rückmeldung ob das so in etwa das ist, was dir vorschwebte.
Tim
Am Donnerstag, den 15.10.2015, 20:49 +0200 schrieb mayosemmel:
</pre>
<blockquote type="cite">
<pre wrap="">Hallo zusammen,
ich hab das jetzt endlich bei mir aufgesetzt, nachdem mein Server nun
wieder läuft.
Als Sync Partner/Adressen habe ich die folgenden 3 eingetragen:
10.50.252.15 10.50.252.39 10.50.252.27
Das sind die Server von Chris, Tim und Michael.
Sobald ihr die Root Zone auch drin habt kann Christian das entsprechend
eintragen hat lassen. Anschließend kann es mit den Delegations und dem
DynDns weiter gehen.
@Liste: Im Zone file habe ich ein paar Zeilen gelöscht, wegen den
öffentlichen IPs - somit ist es durchaus möglich das hier was fehlt
Viele Grüße
Jan
Am Dienstag, den 06.10.2015, 22:53 +0200 schrieb Tim Niemeyer:
</pre>
<blockquote type="cite">
<pre wrap="">Klingt alles gut. Ist nur grad zu spät um mich da rein zu denken.
Wegen mit können wir das aber einfach mal machen. Durch probieren
kommt man meist schneller zum Ziel, als wen man nur rum rätselt. :-)
Ich versuche das morgen mal umzusetzen.
Tim
Am 6. Oktober 2015 22:46:09 MESZ, schrieb mayosemmel
<a class="moz-txt-link-rfc2396E" href="mailto:mayosemmel@googlemail.com"><mayosemmel@googlemail.com></a>:
Hallo zusammen,
zuerst möchte anmerken, das die Mail mit Absicht nicht an die Liste
geht, da in den Zone Files öffentliche IP Adressen sind.
Ich hab das mit den Zone Files soweit fertig gemacht. Allerdings ist das
mit den Delegations schwer zu testen, solange in der offiziellen Zone
noch andere Server eingetragen sind.
Ich würde daher folgendes vorschlagen:
Wir 3 (Tim, Michael und Ich) spielen auf unseren Servern das Zone File
ein und richten die Synchronisierung ein.
Anschließend trägt Christian die Server beim Provider ein.
Nun sollte zumindest die reguläre Zone funktionieren und wir können mir
der Delegation weitermachen.
Was haltet ihr von der Vorgehensweise?
Man kann aus den Zones sicherlich noch ein bisschen was rauswerfen, was
ich jetzt für den Testbetrieb eingefügt habe. Ansonsten sollte das alles
soweit funktionsfähig sein.
Falls ihr die Zone-Files
einspielt und den Sync scharf macht, probiert
bitte zuerstmal nur mit einem der anderen zu syncen (um die aktuelle
Version zu haben).
Viele Grüße
Jan
Zone File für die "Root-Server":
fff.community. 3600 IN SOA NS1.fff.community. franken.freifunk.net. 2015100600 3600 1800 604800 600
fff.community. 3600 IN NS ro1.fff.community.
fff.community. 3600 IN NS fff-wue1.fff.community.
fff.community. 3600 IN NS fff-gw-m1.fff.community.
FFF-GW-M1.fff.community. 3600 IN A 37.120.190.92
nuernberg.fff.community. 3600 IN NS fff-test1.nuernberg.fff.community.
fff-test1.nuernberg.fff.community. 3600 IN AAAA
fff.community. 3600 IN SOA NS1.fff.community. franken.freifunk.net. 2015100600 3600 1800 604800 600
Beispielhaftes Zonefile für eine Delegation
nuernberg.fff.community. 3600 IN SOA fff-test1.nuernberg.fff.community. franken.freifunk.net. 2015100600 3600 1800 604800 600
nuernberg.fff.community. 3600 IN NS fff-test1.nuernberg.fff.community.
fff-test1.nuernberg.fff.community. 3600 IN AAAA 2a01:4a0:2001:2074:2::30
test.nuernberg.fff.community. 3600 IN A 10.50.40.100
Script zum Synchronisieren
#!/bin/bash
#Server die
abgefragt werden sollen (Alle DNS Peers)
DnsPeers=(ns1.kraus.moe kraus.moe ns2.kraus.moe)
#Name der Zone die verteilt werden soll
DomainZone="kraus.moe"
#Position und Name des Zone Files
OwnZoneFile="/etc/bind/db.kraus.moe"
#Temporäres Verzeichnis - muss pro Zone exclusiv sein!
TempDir="/tmp/fff-dns"
#Backup Verzeichnis
BackupDir="/home/freifunk/DNS-Backup"
#Wie viele Backups sollen aufgehoben werden? Nur Integer Werte!
BackupsToStore=20
function backup
{
datetime=$(date +"%Y-%m-%d_%H-%M-%S")
mkdir -p $1/$datetime
cp $OwnZoneFile $1/$datetime/.
BackupFiles=( $(ls -t $1) )
if [ -n ${BackupFiles[0]} ] && [ ${#BackupFiles[@]} -gt 20 ]
then
rm -rf $1/${BackupFiles[$BackupsToStore]}
fi
}
function exit_script
{
rm -rf $TempDir
exit $1
}
mkdir -p $TempDir
cd $TempDir
OwnSerial=$(grep SOA $OwnZoneFile |awk 'NR==1{print $7}')
HighestSerialSoFar=0
for peer in "${DnsPeers[@]}"
do
#Zone File von Peering DNS Servern herunterladen
dig @$peer $DomainZone axfr |grep -v ";"> $peer
#Seriennummer des Zone Files einlesen
PeerSerial=$(grep SOA $peer |awk 'NR==1{print $7}')
#Falls keine Seriennummer vorhanden, ist das File invalid oder die Verbindung zum Peer ist nicht in Ordnung
if [ -z $PeerSerial ]
then
rm -f $peer
continue
PeerSerial=1
fi
#Falls eigenes Zone File keine Seriennummer enthält und somit invalid ist, automatisch erstbestes valides nutzen
if [ -z $OwnSerial ]
then
named-checkzone $DomainZone $peer
if [ $? -eq 0 ]
then
cp $peer $OwnZoneFile
fi
exit 0
fi
#Nur die Zone-Files mit dem höchsten Serial behalten - wenn dieser höher ist als der bereits vorhandene
if [ $OwnSerial -ge $PeerSerial ]
then
rm -f $peer
continue
elif [ ${HighestSerialSoFar[0]} -gt $PeerSerial ]
then
rm -f $peer
continue
else
HighestSerialSoFar=( $PeerSerial $peer )
fi
done
#Anzahl der verbliebenen Zone Files ermitteln
PeerZoneFileCount=$(ls -l|wc -l)
#Im Falle von einem Update vorher ein Backup machen
if [ $PeerZoneFileCount -gt 1 ]
then
backup $BackupDir $BackupsToStore
else
exit_script 0
fi
#Falls nur ein Zone File verblieben ist, direkt einspielen und neustarten
if [ $PeerZoneFileCount -eq 2 ]
then
named-checkzone $DomainZone ${HighestSerialSoFar[1]}
if [ $? -eq 0 ]
then
cp ${HighestSerialSoFar[1]} $OwnZoneFile
fi
/etc/init.d/bind9 restart
exit_script 0
#Im Fall von mehreren Zone Files, prüfen ob alle
identisch sind. Falls nicht Abbruch. Ansonsten einspielen und neustart
else
md5=$(md5sum ${HighestSerialSoFar[1]} |awk '{print $1}')
for ZoneFile in *
do
loopmd5=$(md5sum $ZoneFile |awk '{print $1}')
if [ $md5 != $loopmd5 ]
then
echo $md5 $loopmd5
exit_script 1
fi
done
named-checkzone $DomainZone ${HighestSerialSoFar[1]}
if [ $? -eq 0 ]
then
cp ${HighestSerialSoFar[1]} $OwnZoneFile
fi
/etc/init.d/bind9 restart
exit_script 0
fi
</pre>
</blockquote>
<pre wrap="">
</pre>
</blockquote>
<pre wrap="">
</pre>
</blockquote>
<br>
<br>
<pre class="moz-signature" cols="72">--
Kontaktmöglichkeiten ChristianD (Christian Dresel):
Jabber: <a class="moz-txt-link-abbreviated" href="mailto:christian@jabber.community">christian@jabber.community</a>
E-Mail: <a class="moz-txt-link-abbreviated" href="mailto:fff@chrisi01.de">fff@chrisi01.de</a>
Facebook: <a class="moz-txt-link-freetext" href="https://www.facebook.com/christian.chili">https://www.facebook.com/christian.chili</a>
Handy/Whatsapp & Festnetz: auf Nachfrage</pre>
</body>
</html>