Назад | Перейти на главную страницу

Самостоятельное восстановление DHCP в Linux после долгого простоя?

У меня есть несколько систем CentOS 6/7 (непроизводственные, экспериментальные), которые были настроены на использование DHCP для своего IP-адреса. На прошлой неделе произошел серьезный сбой в работе сети, и я обнаружил, что эти системы потеряли свой IP-адрес, а DHCP-клиент отключился. Я думаю, после слишком многих / слишком долгих попыток.

Что правильный способ заставить его восстановить навсегда? Есть ли настройка клиента DHCP, которая может это сделать? Или мне следует добавить запись cron, которая каждый час выполняет что-то вроде ifup eth0? Или есть способ сделать это лучше?

Я знаю, что CentOS 6 и CentOS 7 делают эти вещи по-разному, и я ищу ответы для обоих этих случаев.


Обновить:

На данный момент я создал этот сценарий (который я поместил в /etc/cron.hourly/), который, кажется, работает в конкретной ситуации CentOS 6. Это, вероятно, не лучшее решение, но оно «работает на моей машине».

#!/bin/bash

IF=eth0

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

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

Все еще ищу правильный способ сделать это, поэтому я не думаю, что это правильный ответ на мой вопрос.

Оба CentOS 6 и 7 должны принимать параметр PERSISTENT_DHCLIENT в файлах / etc / sysconfig / network-scripts / ifcfg *.

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

Это указывает сценарию ifup-eth запускать dhclient без (по умолчанию) -1 вариант

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

С этой опцией dhclient попробует один раз. Со страницы руководства

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

Без этой опции dhclient должен время от времени повторять попытки (по умолчанию каждые 5 минут) снова со страницы руководства 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.