
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.