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

Заставить серверы Linux автоматически пытаться получить IP-адрес, если они его потеряют

Мы используем статическую аренду DHCP для наших серверов Linux в нашей сети малого бизнеса. Недавно с DHCP-сервером случилось что-то плохое, и все Linux-серверы потеряли свои IP-адреса, так как не смогли найти DHCP-сервер в сети.

Перенесемся на следующий день, DHCP-сервер был снова запущен и работал, но серверы, похоже, больше не искали DHCP-сервер, поэтому у них не было IP-адреса и они не пытались его получить. В итоге мне пришлось вручную и физически перейти к каждому серверу и перезапустить сеть, после чего они сразу же вернули свой IP-адрес.

Что я могу сделать на серверах, чтобы предотвратить эту проблему в будущем? Я уверен, что после того, как DHCP-сервер вышел из строя, серверы, возможно, какое-то время пытались обновить IP-адрес, но в конечном итоге они, по-видимому, просто прекратили попытки.

Очевидно, решение состоит в том, чтобы иметь резервный DHCP-сервер, но давайте просто представим, что это не вариант. Есть ли способ заставить серверы продолжать попытки продлевать свой IP бесконечно?

Серверы представляют собой смесь CentOS и Fedora.

Они вернулись к адресации APIPA? 169.254.0.0/16? Вы можете отключить это с помощью NOZEROCONF = Да директива в / etc / sysconfig / network.

Вам также следует продлить срок аренды DHCP, чтобы он был вдвое больше разумного интервала простоя DHCP-сервера. Клиенты обычно ждут половину срока аренды, прежде чем пытаться продлить; если они проверяются только раз в пару дней, у вас есть значительная свобода действий, чтобы починить сервер или установить новый.

Мы используем полностью зарезервированный DHCP в производственной среде; это не было проблемой надежности. Фактически, я утверждаю, что статическая IP-адресация - это одна из последних ручных операций, за которую люди цепляются, и в значительной степени это анахронизм. Я не проводил формального анализа, но через три года у нас возникла одна проблема, связанная с DHCP, и это был толстый палец администратора, который не позволил сценарию «Выпустить сейчас». На гистограмме причин «К сожалению» DHCP находится далеко позади.

Я знаю, что каждый любит шлак на Windows, но IME, когда APIPA отключен и включено DHCP, машина Windows, прямо-таки живуча о проведении на независимо от их последнего назначения DHCP было. Я включил машины после месяцев нафталином, и wirehark показывает им, что они запрашивают последний назначенный DHCP адрес.

Вы можете установить PERSISTENT_DHCLIENT=yes в / etc / sysconfig / network-scripts / ifcfg-ethX. Это эффективно устраняет -1 флаг, который по умолчанию отправляется dhclient в системах стиля RedHat. Из man dhclient:

Флаг -1 заставляет dhclient попробовать один раз, чтобы получить аренду. В случае сбоя dhclient завершает работу с кодом выхода два.

Однако в случае, если у вас отключено электричество и ваши серверы вернутся в сеть раньше, чем это сделают коммутаторы, это не сработает из-за https://bugzilla.redhat.com/show_bug.cgi?id=234075. По сути, эта ошибка говорит о том, что ifup сначала проверяет, присутствует ли ссылка в интерфейсе, прежде чем пытаться запустить dhclient. Нет ссылки -> нет dhclient.

Мое решение - добавить это в crontab root:

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

Также добавьте это в /etc/dhcp/dhclient.conf для быстрого восстановления:

retry 10
timeout 10

Я использую статические IP-адреса для серверов, DHCP только для персональных компьютеров.

Хотя я считаю, что DHCP прилагает некоторые усилия, чтобы избежать изменения IP-адреса устройства, это не гарантируется - по истечении срока аренды компьютеру может быть выделен другой IP-адрес DHCP. Я всегда считал, что это плохо, если это случится с сервером в середине рабочего дня.

Сроки аренды устанавливаются сервером, а не клиентом. Вы можете попробовать увеличить срок аренды для любой области, на которую назначены ваши серверы, но на самом деле это всего лишь пластырь. Вам действительно нужно либо настроить резервный DHCP-сервер, либо, желательно, переместить ваши серверы на статически назначенные адреса.