Von Arne
Auf der RCS DNS-Infrastruktur werden mittlerweile ca. 30 Domains gehostet, das alte System bestand dabei aus einem Bind Master und einem Bind Slave, die Zonen wurden von Hand in den Bind Zonefiles gepflegt. Dass dieses System nicht wirklich gut zu managen ist war klar.
Die neue DNS-Infrastruktur sollte wie folgt funktionieren: Ein DNS Server agiert als sog. Hidden-Primary, d.h. er ist der autoritive Master Server für alle verwalteten Domains, ist aber bei keinem Registrar als zuständiger Server eingetragen.
Der Hidden-Primary sollte in unserem Setup als PowerDNS laufen, dieser kann so eingerichtet werden, dass er die Zonen-Information in Echtzeit aus einer MySQL Datenbank bezieht. Die Zonen-Informationen in der Datenbank können nun über ein Web-Frontend verwaltet werden.
Zusätzlich zu dem Hidden-Primary sollte es drei Bind Slaves geben, welche die Zonen vom Hidden-Primary replizieren. Diese drei Slaves sind beim Registrar als zuständige Nameserver eingetragen und sind allesamt autoritiv für die Zonen.
Nachdem der PowerDNS Master inkl. Datenbank aufgesetzt war, wurde zuerst eine Administrations-Oberfläche entwickelt. Die Oberfläche basiert auf dem Django Web-Framework und benutzt bisher nur die im Framework eingebaute Admin-Applikation. Neben dem reinen Editieren von Domains und Records bietet die Django-Anwendung noch die Möglichkeit eine beliebige Anzahl von Bind-Slaves per SSH zu verwalten. Beim anlegen neuer Domains oder beim Löschen von Domains werden die Slaves automatisch per SSH aktualisiert. Des Weiteren gibt es die Möglichkeit den Status aller Slaves in einer Übersicht zu sehen und für die Migration wurde ein Import-Tool für Bind-Zonefiles integriert.
Die drei verwendeten Bind-Slaves zu konfigurieren ist sehr einfach. Wir verwenden jeweils die Standard-Konfiguration der Ubuntu bzw. Debian Server Distributionen und legen einen Benutzeraccount für die Remote-Administration an. Dieser Benutzer erhält per Dateiberechtigung Zugriff auf die named.conf.local, in welcher alle Slave-Zonen eingetragen sind (diese werden automatisch von der Django-Anwendung eingetragen). Außerdem erhält der Benutzer per Sudo Zugriff auf das rndc Binary um damit den Status des Bind Servers abzufragen und diesen bei Änderungen in der Konfiguration zu Reloaden.
Das Ergebnis ist eine stabile DNS-Infrastruktur mit einer leicht zu bedienenden Web-Oberfläche. Die Slave-Server funktionieren nach dem Prinzip Setup-and-forget, d.h. sie müssen nach der initialen Einrichtung nie wieder angefasst werden (Security Updates ausgenommen).
Die RCS DNS-Infrastruktur besteht nun aus 2 DNS-Servern in Hamburg, in unterschiedlichen Class-C Netzen, einem Server in Köln und der vierte Server steht in München. Der Hidden-Primary steht übrigens auch in Hamburg.