Warum muss ein Linux-Server neu gestartet werden, um eine Änderung in resolv.conf ordnungsgemäß zu verarbeiten?


8

Ich weiß, dass dies nur ein Mangel an Verständnis sein muss, aber hier ist das Problem.

Wir haben kürzlich die DNS-Server von 192.168.1.1 auf .2 geändert, also bin ich zu allen 8 meiner Linux-Server gegangen und habe /etc/resolv.conf geändert, um die Änderung widerzuspiegeln. Beachten Sie, dass sie alle statisch sind und kein DHCP beteiligt ist.

Nachdem ich die Änderung vorgenommen habe, kann ich die Ergebnisse sofort mit nslookup und dig testen, und alles sieht gut aus. Ich habe einen Neustart von /etc/init.d/networking durchgeführt, um das Netzwerksubsystem neu zu starten, und Apache und Postfix auf jedem der Server neu gestartet, nur um sicherzugehen.

Ein paar Tage später erhalte ich einen Bericht, der besagt, dass auf unseren Websites keine E-Mails mehr gesendet werden. Beim Durchsuchen der Protokolle stellte ich fest, dass der Prozess mod_php DNS-Einträge zum Senden von E-Mails nicht auflösen konnte. Nachdem ich mir etwa 30 Minuten lang den Kopf geschlagen hatte, startete ich den Server neu und alles normalisierte sich wieder.

Am nächsten Tag erhalte ich auf einem anderen Server (unter Verwendung von CentOS anstelle unseres normalen Ubuntu) einen Bericht, der besagt, dass E-Mails nicht durchlaufen werden, und ein Blick in die Protokolle zeigt, dass Postfix Namen nicht auflösen kann. Neustart und es liefert fast sofort alle in der Warteschlange befindlichen E-Mails.

Was vermisse ich hier? Welchen Teil dieses Prozesses habe ich nicht richtig verstanden?

Antworten:


11

Sie wurden wahrscheinlich von nscd gebissen: http://linux.die.net/man/8/nscd

Prost


Vielen Dank! Es scheint sehr wahrscheinlich, dass dies mir Probleme bereitete. Ich wusste nicht einmal, dass lokales DNS-Caching Teil des gemeinsamen Linux-Systems ist.
Grau

Hast du tatsächlich getestet? Jasons Hypothese ist möglich, aber nicht sicher.
Bortzmeyer

@bortzmeyer - ja, ich stimme zu. Ihre eigene Antwort ist die gleiche, die ich gegeben hätte (und in der Tat zwei verwandte Fragen in letzter Zeit). Es ist viel wahrscheinlicher, dass der Status res_init () zwischengespeichert wird als nscd.
Alnitak

8

Die meisten Anwendungen initialisieren den Resolver einmal beim Start (mit res_init) und wiederholen ihn danach nie wieder. Dies ist kein Problem für Anwendungen mit kurzer Lebensdauer wie Ping, sondern schwerwiegender für Daemons mit langer Laufzeit.

Der Apache-Prozess (der mod_php ausführt) war wahrscheinlich in diesem Fall. Ein Neustart von Apache wäre ausreichend.


3

resolv.conf weist Resolver an, wo nach Namen gesucht werden soll. In den meisten Fällen ist dies der libc-Resolver. Es kann jedoch auch andere Fälle geben, z. B. vPostMaster, in dem die Python-DNS-Resolver-Bibliothek für SPF-Suchvorgänge verwendet wird.

Also, es KöNNTE sein , dass der Resolver für lang laufende Prozesse die resolv.conf Informationen zwischenspeichert, aber es klang wie Sie neu gestartet Postfix, die verursacht haben , sollte es mit einer frischen resolv.conf Datei zu starten.

Überprüfen Sie in Ihrer /etc/nsswitch.conf, ob darin etwas Besonderes für "Hosts" angegeben ist. Die Standard-Fedora 11-Leitung auf meinem Laptop lautet beispielsweise:

Hosts: Dateien mdns4_minimal [NOTFOUND = return] DNS

In diesem Fall werden also mdns sowie / etc / hosts und DNS verwendet. In diesem Fall würde ich mich fragen, ob es die mdns waren, die dies verursachten, wenn DNS-Änderungen nicht erfasst wurden.

Sean


1

Wahrscheinlich wird etwas zwischengespeichert. Wir hatten ein ähnliches Problem mit sendmailund durch Neustart des Dienstes wurde es behoben.

Manchmal ist es einfacher, den Server neu zu starten und alle diese Caches an einer beliebigen Stelle im System zu löschen, als die ganze Zeit damit zu verbringen, festzustellen, welcher Dienst zu lange zwischengespeichert wird. Andererseits kann es sich als Investition herausstellen, wenn es erneut passiert und Sie wissen, welcher Dienst neu gestartet werden muss.


Ich stimme zu, ein Neustart ist der einfachste Ausweg, aber wenn der Server kritisch ist, kann es schwierig sein, Zeit für einen Neustart zu finden. Danke für Ihre Hilfe!
Grau
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.