bind9 über CRON automatisch reloaden
Andreas
- webserver
Hi,
ich versuche gerade meinen bind9 DNS alle 5 Minuten über CRON als root-User automatisch neu zu reloaden. Leider will das nicht ohne Fehlermeldung klappen:
/usr/sbin/rcnamed: line 62: checkproc: command not found
/usr/sbin/rcnamed: line 64: killproc: command not found
..failed
Weiss jemand, warum das so ist?
Ciao
Andreas
Hi,
ich versuche gerade meinen bind9 DNS alle 5 Minuten über CRON als root-User automatisch neu zu reloaden. Leider will das nicht ohne Fehlermeldung klappen:
/usr/sbin/rcnamed: line 62: checkproc: command not found
/usr/sbin/rcnamed: line 64: killproc: command not found
..failedWeiss jemand, warum das so ist?
zeig mal die crontab
Erwin
Ciao
Andreas
Hi,
in der root-crontab steht drin:
*/5 * * * * /usr/sbin/rcnamed reload
Das ist alles...
Ciao
Andreas
Hi,
in der root-crontab steht drin:
*/5 * * * * /usr/sbin/rcnamed reload
Das ist alles...
und was steht in den Zeilen 62 64 /usr/sbin/rcnamed ?
Erwin
Hi,
Zeile 62:
checkproc $NAMED_BIN
Zeile 64:
killproc -HUP $NAMED_BIN
Wenn ich
rcnamed reload
an der Shell manuell ausführe, klappt's übrigens ohne Probleme...
Ciao
Andreas
Moin!
Zeile 62:
checkproc $NAMED_BINZeile 64:
killproc -HUP $NAMED_BIN
KLarer Fall eigentlich: Die cron-Shell hat keine Pfaddefinitionen, oder zumindest andere, als deine interaktive Shell. Und deshalb werden diese zwei Programmaufrufe nicht gefunden.
Ich frage mich aber, warum du alle fünf Minuten deinen Bind9 neustarten willst. Das ist irgendwie nichts, was mir in den Kopf will. Ein Nameserver-Neustart ist schließlich keine kleine Sache - oder in dieser Regelmäßigkeit eine viel zu große Sache.
Wenn du gerne einen Nameserver hättest, dem du relativ problemlos neue Zonendaten eingeben kannst, dann schau dir mal djbdns an. Da kannst du die Definitionsdatei mit einem simplen "make" im jeweiligen Verzeichnis in eine Datenbank kompilieren und dann direkt im Live-Betrieb austauschen lassen, so dass sofort und ohne Betriebsunterbrechung des Nameservers aktuellere Daten ausgegeben werden (übrigens mit automatischem Hochzählen der Seriennummer, das man bei BIND doch gerne mal vergißt, wenn man alles manuell macht).
Fünf Minuten Reload-Zeit sind irgendwie total unsinnig. Entweder hast du ein kleines Intranet - wenn du dann (was sehr selten sein dürfte) tatsächlich mal Änderungen hast, willst du im Zweifel nicht ganze 5 Minuten auf das Ergebnis warten. Und verbrätst unnötig Festplatten- und CPU-Zeit mit 99,9% unnötigen Reloads.
Und wenn du einen tatsächlich stark nachgefragten Server hast, der ständig topaktuell sein muß, und bei dem sich viel ändert, dann ist BIND vielleicht nicht unbedingt das System der Wahl. Selbst DENIC lädt die Nameserver für .de nicht alle fünf Minuten neu, um sie mit neuen Domains zu versorgen, sondern tun das einmal am Tag morgens gegen 6 Uhr. Das wird seinen Grund haben.
- Sven Rautenberg
Hi,
also - vielen Dank für diese ausführliche Antwort! djbdns werde ich mir in jedem Fall mal ansehen.
bind will ich übrigens nicht neu starten, sondern nur reloaden. Mir geht es eigentlich darum, dass Änderungen an den DNS Zonedateien übernommen werden. Und alle fünf Minuten will ich das machen, weil in den Zonedateien Subdomains zu Clients mit dynamischen IP-Nummern zugewiesen werden. Diese Clients können zu jeder Tages- und Nachtzeit eine neue IP bekommen, deshalb alle 5 Minuten.
Aber im Großen und Ganzen hört sich djbdns für meine Zwecke ideal an, denn dass Änderungen in Echtzeit übernommen werden und ich mir dann noch nicht einmal Gedanken über den Counter machen muss, ist äußerst praktisch für meine Zwecke. Vielen Dank nochmal!
Ciao
Andreas
Moin!
Aber im Großen und Ganzen hört sich djbdns für meine Zwecke ideal an, denn dass Änderungen in Echtzeit übernommen werden und ich mir dann noch nicht einmal Gedanken über den Counter machen muss, ist äußerst praktisch für meine Zwecke. Vielen Dank nochmal!
Es ist vielleicht etwas komplizierter zu installieren - das hängt aber sehr von deiner Distribution ab. Wenn du ohne weitere Hilfe Quelltext kompilieren willst, ist es sicherlich eine Stufe schwieriger. Wenn du Gentoo hast, ist es supersimpel (emerge djbdns erledigt das), und wenn du Debian, Redhat oder Suse benutzt, dann dürfte es ebenfalls mehr oder weniger automatisch aus der Tüte fallen.
Der Unterschied zu allen anderen, typischen Daemons ist, dass für djbdns die Daemontools zuständig sind für den Start. Das ist im Prinzip ein Super-Daemon, der diverse Unterdaemons am Laufen hält, auch wenn diese mal abschmieren sollten aus irgendwelchen Gründen.
Aber die Tatsache, dass du einerseits ein sehr sehr simples Textdateiformat hast (das ist eher maschinenlesbar, als menschenlesbar, aber mir gefällt es explizit sehr gut), und dass du die Zonendatei in einem atomaren Prozess austauschst (also entweder klappt es, oder es klappt nicht - dein Nameserver ist aber immer erreichbar und liefert Daten, entweder die funktionierenden alten, oder die funktionierenden neuen, aber nie die nichtfunktionierenden neuen), macht djbdns für solche Geschichten eigentlich ziemlich geeignet. BIND hat (jedenfalls angeblich, ich habe das nicht persönlich nachgeprüft) das Problem, dass es beim Neuladen der Zonendatei erst wieder Anfragen beantwortet, wenn das Zonenfile komplett geparst ist. Bei großen Zonenfiles ist das ein recht zeitaufwendiger Prozeß, der ziemlich störend wirken kann.
Mit anderen Worten: djbdns ist für dich irgendwie wesentlich besser geeignet, würde ich meinen.
- Sven Rautenberg