Es gibt einen Punkt, der bei der Administration von Nameservern
beachtet werden muss - wenn man mal davon absieht, dass der Nameserver
funktionieren sollte - und das ist die Aktualisierung der
root.hints
-Datei. Der einfachste Weg hierfür ist die Benutzung von dig.
Zuerst startet man dig ohne Parameter, dann bekommt man die
Datei root.hints
,
die zum eigenen Server gehört. Dann wird einer der aufgelisteten root-Server
mit dig @rootserver
befragt. Die Ausgabe dieses Befehls sieht
erstaunlicherweise nach einer root.hints
-Datei aus. Die Ausgabe wird in
einer Datei gespeichert (dig @e.root-servers.net . ns
>root.hints.new
) und ersetzt dann die alte root.hints
-Datei.
Nicht vergessen, im Anschluss an den Austausch der Cache-Datei den named neu zu laden.
Al Longyear hat mir das folgende Skript geschickt, das automatisch die
root.hints
-Datei aktualisieren kann. Man erstellt einen Eintrag in die
Crontab, um es einmal im Monat zu starten und kann es dann vergessen. Das
Skript geht davon aus, dass der E-Mail-Versand funktioniert und dass es einen
Alias namens »hostmaster« gibt. Es muss noch verändert werden, damit es mit
dem eigenen Setup übereinstimmt.
#!/bin/sh
#
# Dieses Skript aktualisiert einmal im Monat die Nameserver-Cache-Datei.
# Es wird durch einen Cron-Eintrag gestartet.
#
# Original von Al Longyear
# An bind8 angepasst von Nicolai Langfeldt
# Verschiedene Problem-Reports durch David A. Ranch
# Ping-Test vorgeschlagen von Martin Foster
# Übersetzung von Thomas "Balu" Walter
#
(
echo "To: hostmaster <hostmaster>"
echo "From: system <root>"
echo "Subject: Automatisches Update der root.hints Datei"
echo
PATH=/sbin:/usr/sbin:/bin:/usr/bin:
export PATH
cd /var/named
# Sind wir online? Ein Server beim Provider anpingen...
case `ping -qnc some.machine.net` in
*'100% packet loss'*)
echo "Das Netz ist DOWN. root.hints wurde NICHT upgedated"
echo
exit 0
;;
esac
dig @rs.internic.net . ns >root.hints.new 2>&1
case `cat root.hints.new` in
*NOERROR*)
# Funktioniert...
:;;
*)
echo "Das Update der root.hints Datei ist FEHLGESCHLAGEN."
echo "Dig hatte die folgende Ausgabe:"
echo
cat root.hints.new
exit 0
;;
esac
echo "Die root.hints Datei wurde mit den folgenden Einstellungen aktualisiert:"
echo
cat root.hints.new
chown root.root root.hints.new
chmod 444 root.hints.new
rm -f root.hints.old
mv root.hints root.hints.old
mv root.hints.new root.hints
ndc restart
echo
echo "Der Nameserver wurde neu gestartet, um das Update abzuschliessen."
echo "Die ursprüngliche root.hints Datei heisst jetzt /var/named/root.hints.old."
) 2>&1 | /usr/lib/sendmail -t
exit 0
Einige Leser haben mir geschrieben, dass die root.hints
-Datei auch
per FTP von internic zu bekommen ist. Man sollte aber nicht FTP benutzen, um
die Datei zu aktualisieren. Die oben gezeigte Version ist »netter« gegenüber
dem Netz und Internic.