DNS Zone File

Tim Niemeyer tim.niemeyer at mastersword.de
Do Okt 15 21:42:44 CEST 2015


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
> >         
> 
> 

-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 819 bytes
Beschreibung: This is a digitally signed message part
URL         : <http://lists.freifunk.net/pipermail/franken-dev-freifunk.net/attachments/20151015/2c3ccef3/attachment-0002.sig>


Mehr Informationen über die Mailingliste franken-dev