DNS Zone File
Christian Dresel
fff at chrisi01.de
Sa Okt 17 10:05:27 CEST 2015
Hi
so ich hab jetzt einfach mal Zeit & Lust gehabt und hab mir Tims
Anleitung geschnappt auf mich angepasst und das ganze mal "probiert".
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:
******* /etc/bind # /etc/bind/sync.sh /(erster Aufruf des Scripts!)/
zone fff.community/IN: loaded serial 2015101501
OK
******* /etc/bind # ls
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
******* /etc/bind # cat db.fff.community
fff.community. 3600 IN SOA fff-gw-m1.fff.community.
franken.freifunk.net. 2015101501 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 ##########
FFF-GW-M1.fff.community. 3600 IN AAAA ##########
fff-wue1.fff.community. 3600 IN A ##########
ro1.fff.community. 3600 IN A ##########
fff.community. 3600 IN SOA fff-gw-m1.fff.community.
franken.freifunk.net. 2015101501 3600 1800 604800 600
******* /etc/bind #
(ich hab manuell ein paar IP Adressen durch Rauten zensiert, dort stehen
eigentlich öffentliche IPs die aber nicht unbedingt durch die
Mailingliste müssen)
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.
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?
mfg
Christian
Am 15.10.2015 um 21:42 schrieb Tim Niemeyer:
> 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:
>> 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:
>>> 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
>>> <mayosemmel at googlemail.com>:
>>> 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
>>>
>>
--
Kontaktmöglichkeiten ChristianD (Christian Dresel):
Jabber: christian at jabber.community
E-Mail: fff at chrisi01.de
Facebook: https://www.facebook.com/christian.chili
Handy/Whatsapp & Festnetz: auf Nachfrage
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: <http://lists.freifunk.net/pipermail/franken-dev-freifunk.net/attachments/20151017/7396204b/attachment-0002.html>
Mehr Informationen über die Mailingliste franken-dev