<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body><div><div style="font-family: Calibri,sans-serif; font-size: 11pt;">Ja das ist was mir vorschwebte. Allerdings funktioniert der Transfer noch nicht.<br>Hast du den Bind schon neu gestartet?<br><br>Grüße Jan</div></div><div dir="ltr"><hr><span style="font-family: Calibri,sans-serif; font-size: 11pt; font-weight: bold;">Von: </span><span style="font-family: Calibri,sans-serif; font-size: 11pt;"><a href="mailto:tim.niemeyer@mastersword.de">Tim Niemeyer</a></span><br><span style="font-family: Calibri,sans-serif; font-size: 11pt; font-weight: bold;">Gesendet: </span><span style="font-family: Calibri,sans-serif; font-size: 11pt;">‎15.‎10.‎2015 21:42</span><br><span style="font-family: Calibri,sans-serif; font-size: 11pt; font-weight: bold;">An: </span><span style="font-family: Calibri,sans-serif; font-size: 11pt;"><a href="mailto:mayosemmel@googlemail.com">mayosemmel</a></span><br><span style="font-family: Calibri,sans-serif; font-size: 11pt; font-weight: bold;">Cc: </span><span style="font-family: Calibri,sans-serif; font-size: 11pt;"><a href="mailto:michael@fritscher.net">Michael Fritscher</a>; <a href="mailto:fff@chrisi01.de">Christian Dresel</a>; <a href="mailto:franken-dev@freifunk.net">franken-dev@freifunk.net</a></span><br><span style="font-family: Calibri,sans-serif; font-size: 11pt; font-weight: bold;">Betreff: </span><span style="font-family: Calibri,sans-serif; font-size: 11pt;">Re: DNS Zone File</span><br><br></div>Hi<br><br>Also ich hab auf ro1 nun folgendes getan:<br><br>Den ro1 selbst nicht mehr als dns via dhcp verteilt. Hier habe ich jetzt<br>temporär 8.8.8.8 drin.<br><br>cd /etc/bind/<br>Dein Script (siehe unten) in /etc/bind/sync.sh gepackt.<br>chmod +x sync.sh<br>touch db.fff.community<br>chmod g+w db.fff.community<br>chown root:bind db.fff.community<br>mkdir backup<br>chmod g+w backup<br>chown root:bind backup<br><br>in named.conf.local:<br>--- %< ---<br>zone "fff.community" {<br>        type master;<br>        file "/etc/bind/db.fff.community";<br>        allow-transfer {10.50.252.15; 10.50.252.39; 10.50.252.27;};<br>};<br>--- >% ---<br><br>Die config von sync.sh angepasst:<br>--- %< ---<br>DnsPeers=(10.50.252.15 10.50.252.38 10.50.252.27)<br>DomainZone="fff.community"<br>OwnZoneFile="/etc/bind/db.fff.community"<br>TempDir="/tmp/fff-dns"<br>BackupDir="/etc/bind/backup"<br>--- >% ---<br><br>Cron angelegt (/etc/crontab):<br>*/5 *   * * *   bind    /etc/bind/sync.sh<br><br>Geb mal kurz Rückmeldung ob das so in etwa das ist, was dir vorschwebte.<br><br>Tim<br><br>Am Donnerstag, den 15.10.2015, 20:49 +0200 schrieb mayosemmel:<br>> Hallo zusammen,<br>> <br>> ich hab das jetzt endlich bei mir aufgesetzt, nachdem mein Server nun<br>> wieder läuft.<br>> Als Sync Partner/Adressen habe ich die folgenden 3 eingetragen:<br>> 10.50.252.15 10.50.252.39 10.50.252.27<br>> Das sind die Server von Chris, Tim und Michael.<br>> <br>> Sobald ihr die Root Zone auch drin habt kann Christian das entsprechend<br>> eintragen hat lassen. Anschließend kann es mit den Delegations und dem<br>> DynDns weiter gehen.<br>> <br>> @Liste: Im Zone file habe ich ein paar Zeilen gelöscht, wegen den<br>> öffentlichen IPs - somit ist es durchaus möglich das hier was fehlt<br>> <br>> Viele Grüße<br>> Jan<br>> <br>> Am Dienstag, den 06.10.2015, 22:53 +0200 schrieb Tim Niemeyer:<br>> > Klingt alles gut. Ist nur grad zu spät um mich da rein zu denken.<br>> > Wegen mit können wir das aber einfach mal machen. Durch probieren<br>> > kommt man meist schneller zum Ziel, als wen man nur rum rätselt. :-) <br>> > <br>> > Ich versuche das morgen mal umzusetzen.<br>> > <br>> > Tim<br>> > <br>> > Am 6. Oktober 2015 22:46:09 MESZ, schrieb mayosemmel<br>> > <mayosemmel@googlemail.com>:<br>> >         Hallo zusammen,<br>> >         <br>> >         zuerst möchte anmerken, das die Mail mit Absicht nicht an die Liste<br>> >         geht, da in den Zone Files öffentliche IP Adressen sind.<br>> >         <br>> >         Ich hab das mit den Zone Files soweit fertig gemacht. Allerdings ist das<br>> >         mit den Delegations schwer zu testen, solange in der offiziellen Zone<br>> >         noch andere Server eingetragen sind.<br>> >         Ich würde daher folgendes vorschlagen:<br>> >         Wir 3 (Tim, Michael und Ich) spielen auf unseren Servern das Zone File<br>> >         ein und richten die Synchronisierung ein.<br>> >         Anschließend trägt Christian die Server beim Provider ein.<br>> >         Nun sollte zumindest die reguläre Zone funktionieren und wir können mir<br>> >         der Delegation weitermachen.<br>> >         Was haltet ihr von der Vorgehensweise?<br>> >         <br>> >         Man kann aus den Zones sicherlich noch ein bisschen was rauswerfen, was<br>> >         ich jetzt für den Testbetrieb eingefügt habe. Ansonsten sollte das alles<br>> >         soweit funktionsfähig sein.<br>> >         Falls ihr die Zone-Files<br>> >         einspielt und den Sync scharf macht, probiert<br>> >         bitte zuerstmal nur mit einem der anderen zu syncen (um die aktuelle<br>> >         Version zu haben).<br>> >         <br>> >         Viele Grüße<br>> >         Jan<br>> >         <br>> >         Zone File für die "Root-Server":<br>> >         <br>> >         fff.community.  3600 IN SOA NS1.fff.community. franken.freifunk.net. 2015100600 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 37.120.190.92<br>> >         nuernberg.fff.community. 3600 IN NS fff-test1.nuernberg.fff.community.<br>> >         fff-test1.nuernberg.fff.community. 3600 IN AAAA<br>> >         fff.community.  3600 IN SOA NS1.fff.community. franken.freifunk.net. 2015100600 3600 1800 604800 600<br>> >         <br>> >         <br>> >         Beispielhaftes Zonefile für eine Delegation<br>> >         <br>> >         nuernberg.fff.community.        3600 IN SOA fff-test1.nuernberg.fff.community. franken.freifunk.net. 2015100600 3600 1800 604800 600<br>> >         nuernberg.fff.community.        3600 IN NS fff-test1.nuernberg.fff.community.<br>> >         fff-test1.nuernberg.fff.community.       3600 IN AAAA 2a01:4a0:2001:2074:2::30<br>> >         test.nuernberg.fff.community.        3600 IN A  10.50.40.100<br>> >         <br>> >         <br>> >         Script zum Synchronisieren<br>> >         <br>> >         <br>> >                  #!/bin/bash<br>> >                  <br>> >                  #Server die<br>> >                 abgefragt werden sollen (Alle DNS Peers)<br>> >                  DnsPeers=(ns1.kraus.moe kraus.moe ns2.kraus.moe)<br>> >                  #Name der Zone die verteilt werden soll<br>> >                  DomainZone="kraus.moe"<br>> >                  #Position und Name des Zone Files<br>> >                  OwnZoneFile="/etc/bind/db.kraus.moe"<br>> >                  #Temporäres Verzeichnis - muss pro Zone exclusiv sein!<br>> >                  TempDir="/tmp/fff-dns"<br>> >                  #Backup Verzeichnis<br>> >                  BackupDir="/home/freifunk/DNS-Backup"<br>> >                  #Wie viele Backups sollen aufgehoben werden? Nur Integer Werte!<br>> >                  BackupsToStore=20<br>> >                  <br>> >                 <br>> >                  function backup<br>> >                  {<br>> >                   datetime=$(date +"%Y-%m-%d_%H-%M-%S")<br>> >                   mkdir -p $1/$datetime<br>> >                   cp $OwnZoneFile $1/$datetime/.<br>> >                   BackupFiles=( $(ls -t $1) )<br>> >                   if [ -n ${BackupFiles[0]} ]  && [ ${#BackupFiles[@]} -gt 20 ]<br>> >                   then<br>> >                    rm -rf $1/${BackupFiles[$BackupsToStore]}<br>> >                   fi<br>> >                  }<br>> >                  <br>> >                  function exit_script<br>> >                  {<br>> >                   rm -rf $TempDir<br>> >                   exit $1<br>> >                  }<br>> >                  <br>> >                  mkdir -p $TempDir<br>> >                  cd $TempDir<br>> >                  OwnSerial=$(grep SOA $OwnZoneFile |awk 'NR==1{print $7}')<br>> >                  HighestSerialSoFar=0<br>> >                  for peer in "${DnsPeers[@]}"<br>> >                  do<br>> >                   #Zone File von Peering DNS Servern herunterladen<br>> >                   dig @$peer $DomainZone axfr |grep -v ";"> $peer<br>> >                   #Seriennummer des Zone Files einlesen<br>> >                   PeerSerial=$(grep SOA $peer |awk 'NR==1{print $7}')<br>> >                   #Falls keine Seriennummer vorhanden, ist das File invalid oder die Verbindung zum Peer ist nicht in Ordnung<br>> >                   if [ -z $PeerSerial ]<br>> >                   then<br>> >                    rm -f $peer<br>> >                    continue<br>> >                    PeerSerial=1<br>> >                   fi<br>> >                   #Falls eigenes Zone File keine Seriennummer enthält und somit invalid ist, automatisch erstbestes valides nutzen<br>> >                   if [ -z $OwnSerial ]<br>> >                   then<br>> >                    named-checkzone  $DomainZone $peer<br>> >                    if [ $? -eq 0 ]<br>> >                    then<br>> >                     cp $peer $OwnZoneFile<br>> >                    fi<br>> >                    exit 0<br>> >                   fi<br>> >                   #Nur die Zone-Files mit dem höchsten Serial behalten - wenn dieser höher ist als der bereits vorhandene<br>> >                   if [ $OwnSerial -ge $PeerSerial ]<br>> >                   then<br>> >                    rm -f $peer<br>> >                    continue<br>> >                   elif [ ${HighestSerialSoFar[0]} -gt $PeerSerial ]<br>> >                   then<br>> >                    rm -f $peer<br>> >                    continue<br>> >                   else<br>> >                    HighestSerialSoFar=( $PeerSerial $peer )<br>> >                   fi<br>> >                  done<br>> >                  <br>> >                  #Anzahl der verbliebenen Zone Files ermitteln<br>> >                  PeerZoneFileCount=$(ls -l|wc -l)<br>> >                  #Im Falle von einem Update vorher ein Backup machen<br>> >                  if [ $PeerZoneFileCount -gt 1 ]<br>> >                  then<br>> >                   backup $BackupDir $BackupsToStore<br>> >                  else<br>> >                   exit_script 0<br>> >                  fi<br>> >                  <br>> >                  #Falls nur ein Zone File verblieben ist, direkt einspielen und neustarten<br>> >                  if [ $PeerZoneFileCount -eq 2 ]<br>> >                  then<br>> >                   named-checkzone  $DomainZone ${HighestSerialSoFar[1]}<br>> >                          if [ $? -eq 0 ]<br>> >                          then<br>> >                           cp ${HighestSerialSoFar[1]} $OwnZoneFile<br>> >                          fi<br>> >                   /etc/init.d/bind9 restart<br>> >                   exit_script 0<br>> >                  #Im Fall von mehreren Zone Files, prüfen ob alle<br>> >                 identisch sind. Falls nicht Abbruch. Ansonsten einspielen und neustart<br>> >                  else<br>> >                   md5=$(md5sum ${HighestSerialSoFar[1]} |awk '{print $1}')<br>> >                   for ZoneFile in *<br>> >                   do<br>> >                    loopmd5=$(md5sum $ZoneFile |awk '{print $1}')<br>> >                    if [ $md5 != $loopmd5 ]<br>> >                    then<br>> >                     echo $md5 $loopmd5<br>> >                     exit_script 1<br>> >                    fi<br>> >                   done<br>> >                   <br>> >                   named-checkzone  $DomainZone ${HighestSerialSoFar[1]}<br>> >                          if [ $? -eq 0 ]<br>> >                          then<br>> >                                  cp ${HighestSerialSoFar[1]} $OwnZoneFile<br>> >                   fi<br>> >                          /etc/init.d/bind9 restart<br>> >                          exit_script 0<br>> >                  fi<br>> >         <br>> <br>> <br><br></body></html>