Erzwingen Sie, dass Linux-Server automatisch versuchen, eine IP-Adresse abzurufen, wenn sie diese verlieren

8

Wir verwenden statische DHCP-Leases für unsere Linux-Server in unserem Netzwerk für kleine Unternehmen. Kürzlich ist dem DHCP-Server etwas Schlimmes passiert, und alle Linux-Server haben ihre IP-Adressen verloren, da sie keinen DHCP-Server im Netzwerk gefunden haben.

Einen Tag später war der DHCP-Server wieder betriebsbereit, aber die Server schienen nicht mehr nach dem DHCP-Server zu suchen, daher hatten sie keine IP-Adresse und versuchten nicht, eine zu erhalten. Am Ende musste ich manuell und physisch zu jedem Server gehen und das Netzwerk neu starten. Zu diesem Zeitpunkt erhielten sie sofort ihre IP-Adresse zurück.

Kann ich auf den Servern etwas tun, um dieses Problem in Zukunft zu verhindern? Ich bin mir sicher, dass die Server nach dem Ausfall des DHCP-Servers möglicherweise versucht haben, eine IP-Adresse für eine Weile zu erneuern, aber schließlich haben sie anscheinend einfach aufgehört, es zu versuchen.

Natürlich besteht eine Lösung darin, einen Backup-DHCP-Server zu haben, aber tun wir einfach so, als wäre dies keine Option. Gibt es eine Möglichkeit, Server zu zwingen, weiterhin zu versuchen, ihre IP auf unbestimmte Zeit zu erneuern?

Die Server sind eine Mischung aus CentOS und Fedora.

Jake Wilson
quelle
8
Stöhnen - Deshalb empfehle ich DHCP nicht für Server
Matt Simmons
Sind Sie sicher, dass die Maschinen nicht erneuert werden sollen? Wie lange hast du gewartet? Bitte erinnern Sie uns Nicht-CentOS-Benutzer daran, welchen DHCP-Client CentOS verwendet. Möglicherweise gibt es clientspezifische Optionen zum Festlegen des Wiederholungsintervalls.
Zoredache

Antworten:

13

Sind sie zur APIPA-Adressierung zurückgekehrt? 169.254.0.0/16? Sie können dies mit der Anweisung NOZEROCONF = Yes in / etc / sysconfig / network deaktivieren.

Sie sollten Ihre DHCP-Lease auch auf das Doppelte des längsten angemessenen Ausfallintervalls des DHCP-Servers verlängern. Kunden warten in der Regel die Hälfte der Mietdauer, bevor sie versuchen, eine Verlängerung vorzunehmen. Wenn sie nur alle paar Tage einmal einchecken, haben Sie erheblichen Spielraum, um den Server zu reparieren oder einen neuen zu installieren.

Wir betreiben vollständig reserviertes DHCP in der Produktion. Es war kein Zuverlässigkeitsproblem. Tatsächlich behaupte ich, dass die statische IP-Adressierung eine der letzten manuellen Operationen ist, an denen sich die Leute festhalten, und es ist größtenteils ein Anachronismus. Ich habe keine formelle Analyse durchgeführt, aber in drei Jahren hatten wir ein DHCP-Problem, und das war ein Admin-Fat-Finger, der ein "Release Now" -Skript fehlgeschlagen hat. Auf dem Histogramm der "Ups" Ursachen ist DHCP weit draußen auf dem Long-Tail.

Ich weiß, dass jeder gerne unter Windows schlackt, aber IME, wenn APIPA deaktiviert und DHCP aktiviert ist, sind Windows-Computer geradezu hartnäckig, wenn es darum geht, an ihrer letzten DHCP-Zuweisung festzuhalten. Ich habe Maschinen nach Monaten des Mottenballs eingeschaltet, und wireshark zeigt ihnen, wie sie nach der letzten von DHCP zugewiesenen Adresse fragen.

AndyN
quelle
6

Ich verwende statische IP-Adressen für Server, DHCP nur für PCs.

Obwohl ich glaube, dass DHCP einige Anstrengungen unternimmt, um eine Änderung der IP-Adresse eines Geräts zu vermeiden, ist dies nicht garantiert. Nach Ablauf eines Leasingvertrags wird dem Computer möglicherweise von DHCP eine andere IP-Adresse zugewiesen. Ich habe immer angenommen, dass dies eine schlechte Sache wäre, um einen Server mitten in einem Arbeitstag passieren zu lassen.

RedGrittyBrick
quelle
4
+1 Verwenden Sie DHCP nicht, wenn Sie statische Adressen zuweisen möchten. Sie haben zusätzliche Komplexität / Fehlermethoden hinzugefügt. Richten Sie außerdem einen Backup-DHCP-Server ein. Die Redundanz kritischer Systeme ist ein grundlegendes Element, das jeder Fachmann kennen sollte.
Chris S
Während Ihre Bedenken für dynamische DHCP-Leases richtig sind, verwendet das Poster statische Leases, die immer dieselbe IP basierend auf der MAC-Adresse zuweisen und diesen Nachteil nicht haben.
Martijn Heemels
@Martin - Selbst wenn DHCP-Reservierungen verwendet werden, checken die Client-Systeme am Ende ihrer Lease ein. Wenn der DHCP-Server nicht verfügbar ist, sind alle Wetten deaktiviert. Wie Chris S bereits sagte, erhöht die Verwendung von DHCP für Server nur die zusätzliche Komplexität, die nicht erforderlich ist.
EEAA
@ Martin - ah ja das habe ich verpasst, danke für die Korrektur.
RedGrittyBrick
2
Es besteht die Möglichkeit eines Fehlers, wenn Hosts auch statisch konfiguriert werden, wenn Personen Adressen duplizieren, versuchen, die IP-Adresse für das Gateway festzulegen, eine falsche Maske festlegen usw. Ich habe in den letzten Jahren mehr Fehler von statisch konfigurierten Adressen als von DHCP-Fehlern gesehen. Die Möglichkeit, DNS-Server tatsächlich dynamisch zu aktualisieren oder andere Optionen bereitzustellen, zwingt mich dazu, DHCP häufiger zu verwenden.
Zoredache
5

Sie können PERSISTENT_DHCLIENT=yesin / etc / sysconfig / network-scripts / ifcfg-ethX festlegen. Dadurch wird das -1Flag, das auf RedHat-Systemen standardmäßig an dhclient gesendet wird, effektiv entfernt . Von man dhclient:

Das -1-Flag veranlasst dhclient, einmal zu versuchen, einen Lease zu erhalten. Wenn dies fehlschlägt, wird dhclient mit dem Exit-Code zwei beendet.

Wenn Sie jedoch einen Stromausfall haben und Ihre Server vor den Switches wieder online sind, funktioniert dies aufgrund von https://bugzilla.redhat.com/show_bug.cgi?id=234075 nicht . Grundsätzlich besagt dieser Fehler, dass ifup zuerst überprüft, ob ein Link auf der Schnittstelle vorhanden ist, bevor versucht wird, dhclient auszuführen. Kein Link -> kein Dhclient.

Meine Lösung besteht darin, dies zu crontab von root hinzuzufügen:

*/5 * * * * ifconfig eth0 | grep -q "inet addr:" || ifup eth0 2>&1 >/dev/null

Fügen Sie dies auch zu /etc/dhcp/dhclient.conf hinzu, um eine schnelle Wiederherstellung zu ermöglichen:

retry 10
timeout 10
Scott Duckworth
quelle
Können Sie die Linie erklären, die in die Crontab führt? Ich habe festgestellt, dass Sie in der Ausgabe von nach der IP-Adresse suchen ifconfig eth0, aber danach haben Sie mich verloren.
Shoan
1
grep hat einen Exit-Code von 0 (true), wenn die Suchzeichenfolge gefunden wird, und einen Exit-Code ungleich Null (false), wenn die Suchzeichenfolge nicht gefunden wird. Die || (binärer ODER-Operator) verwendet die Kurzschlussauswertung. Wenn also grep true zurückgibt, wird ifup nicht ausgeführt. Andernfalls wird ifup ausgeführt, wenn grep false zurückgibt. Die 2> & 1 leiten den Standardfehler zur Standardausgabe um, und> / dev / null leitet die Standardausgabe zum Bit-Bucket um (dh es gibt keine Ausgabe und keine störenden E-Mails von cron).
Scott Duckworth
1

Die Lease-Zeiten werden vom Server und nicht vom Client festgelegt. Sie könnten versuchen, die Lease-Länge für den Bereich zu erhöhen, dem Ihre Server zugewiesen sind, aber das ist wirklich nur ein Pflaster. Sie müssen entweder einen redundanten DHCP-Server einrichten oder Ihre Server vorzugsweise an statisch zugewiesene Adressen verschieben.

EEAA
quelle