Bis jetzt war alles Spaß. Für einen Produktionsserver sind noch
einige Dinge zu beachten. Im folgenden ein paar Tips, die das
Leben hoffentlich vereinfachen.
Im Allgemeinen muß man natürlich vor allem sorgfältig arbeiten.
Die meisten Leute sind es sowieso gewohnt, dass DNS-Einträge bis zu
drei Tage dauern. Man sollte sich also Zeit lassen, nicht
"eben mal auf die Schnelle ein paar RRs einfügen".
Man sollte immer Backups von den Datenbanken haben. Dabei bietet
sich ein Revision Control System an, z.B. rcs
oder cvs. Verwaltet man mehrere Zonen,
so kann man darüber nachdenken, ein Script zu erstellen, das
dnswalk für alle Zonen automatisch machen
kann.
Evtl. kann man den Primary direkt nach ausgesuchteten, sehr
wichtigen Adressen per cron fragen, um im
Fehlerfalle schnell eine EMail zu bekommen.
Es ist auch zu beachten, dass sich unter Umständen Fehler erst
nach einigen Tagen zeigen, da die Cachezeiten u.U. relativ groß
sind.
|
Es ist sinnvoll, die Option "check-names fail;" beim
Primary zu setzen, um Fehler schnellstmöglich festzustellen, bevor
ebtl. falsche Daten von Secondaries geholt werden. Im Extremfalle
verwenden diese diese Option, und werfen die fehlerhafte Zone
nach dem Transfer sofort weg!
Um sicher zugehen, nach jeder Änderung die Serial richtig zu
setzen, kann ein kleines Script verwendet werden. Dies erscheint
sinnvoll, da die Serial eine wichtige Rolle spielt. Da man in der
Regel das Datum im Format JJJJMMTT plus eine zweistellige
laufende Nummer verwendet (falls man mehrmals am Tag etwas
ändert), wird diese zwangsläufig immer größer. Ein großes Problem
aber ist z.B., wenn man sich vertippt, und eine Ziffer zuviel
verwendet. Dann hat man eine Serial, die so groß ist, dass sie nie
"richtig" erreicht wird. Eine Serial zurückzusetzen, ist
so einfach jedoch nicht möglich.
Ein derartiges Script könnte z.B. nach der Zeichenkette
"; Serial" suchen, die nach einem entsprechenden
Datumscode steht (dieser Kommentar wurde auch hier in den
Beispielen verwendet). Verwendet man dazu perl,
könnte man zu folgender Lösung kommen:
new_serial.pl |
#!/usr/bin/perl -pi.ser
#Y2K stable - Perl RULES :) <steffen@dett.de>
#Starten mit einem Bind Zone File als Paramter. Es wird ein
#Backup erzeugt (Endung .ser), und alle Zeilen der Form
#"JJJJMMTTNN ; Serial", z.B. "2000012501 ; Serial" angepaßt
#aufs aktuelle Datum bzw. die laufende Nummer erhöht.
#start with bind zone files, it will replace serial of the form
#"YYYYMMDD00 ; Serial" i.e. "2000012501 ; Serial"
#to new date or incrementing last two digits
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
localtime(time);
my $date = sprintf("%4d%02d%02d", 1900+$year, $mon+1, $mday);
if (m/((20|19)\d{6})(\d{2})(\s+\;\s+[Ss]erial\s+)$/) {
my $old_date = $1;
my $old_serial = $3;
my $rest = $4;
my $serial = $old_serial;
if ($old_date eq $date) {
$serial++;
} else {
$serial = 0;
}
$serial = sprintf("%02d", $serial);
s/${old_date}${old_serial}${rest}/${date}${serial}${rest}/;
print STDERR "Serial found! Old: [$old_date $old_serial] --> ",
"Changed to [$date $serial]\n";
}
|
Es mag Sinn machen, das so aktualisierte File von diesem Script
auch gleich ins RCS/CVS einzuchecken bzw. zu
"committen" (ci -l <file> /
cvs commit <file> - letzteres geht in der
Regel allerdings nicht als "root").
|