Selbstwiederherstellendes DHCP unter Linux nach sehr langer Ausfallzeit?

Selbstwiederherstellendes DHCP unter Linux nach sehr langer Ausfallzeit?

Ich habe einige CentOS 6/7-Systeme (nicht für die Produktion, zu experimentellen Zwecken), die so konfiguriert wurden, dass sie DHCP für ihre IP-Adresse verwenden. Letzte Woche gab es eine große Netzwerkstörung und ich stellte fest, dass diese Systeme ihre IP-Adresse verloren hatten und der DHCP-Client beendet wurde. Ich schätze, nach zu vielen/zu langen Wiederholungsversuchen.

Was ist derrichtigwie kann ich es dazu bringen, immer wieder zu versuchen, sich wiederherzustellen? Gibt es eine DHCP-Client-Einstellung, die das kann? Oder sollte ich einen Cron-Eintrag hinzufügen, der jede Stunde etwas wie „ifup eth0“ ausführt? Oder gibt es eine viel bessere Möglichkeit, das zu tun?

Ich weiß, dass CentOS 6 und CentOS 7 diese Dinge unterschiedlich machen, und ich suche nach Antworten für beide Fälle.


Aktualisieren:

Vorerst habe ich dieses Skript erstellt (das ich in /etc/cron.hourly/ eingefügt habe), das in der speziellen Situation von CentOS 6 zu funktionieren scheint. Dies ist wahrscheinlich nicht die beste Lösung, aber es „funktioniert auf meiner Maschine“.

#!/bin/bash

IF=eth0

ifconfig ${IF} | fgrep 'inet addr' > /dev/null

if [ $? -ne 0 ];
then
    echo "Network is dead, trying restart"
    ifup ${IF}
fi

Ich bin immer noch auf der Suche nach der richtigen Vorgehensweise, daher glaube ich nicht, dass dies die richtige Antwort auf meine Frage ist.

Antwort1

Sowohl CentOS 6 als auch 7 sollten die Option PERSISTENT_DHCLIENT in /etc/sysconfig/network-scripts/ifcfg*-Dateien akzeptieren.

# /etc/sysconfig/network-scripts/ifcfg-eth0 
BOOTPROTO=dhcp
PERSISTENT_DHCLIENT=yes
ONTBOOT=yes
DEVICE=eth0

Dies weist das ifup-eth-Skript an, den dhclient ohne den (Standard) auszuführen.-1Möglichkeit

if is_true "${PERSISTENT_DHCLIENT}"; then
    ONESHOT="";
else
    ONESHOT="-1";
fi;
...
DHCLIENTARGS="${DHCLIENTARGS} ${ONESHOT} -q ${DHCLIENTCONF} -lf ${LEASEFILE} -pf /var/run/dhclient-${DEVICE}.pid"

Mit dieser Option versucht dhclient es einmal. Aus der Manpage

-1 Try once to get a lease. One failure, exit with code 2.

Ohne diese Option sollte dhclient gelegentlich (standardmäßig alle 5 Minuten) einen erneuten Versuch starten, siehe Manpage von dhclient.conf.

retry time;

The retry statement determines the time that must pass after the client 
has determined that there is no DHCP server present before it tries 
again to contact a DHCP server. By default, this is five minutes.

verwandte Informationen