Когда сервер DHCP не отвечает, как заставить dhclient использовать статическую аренду из dhclient.conf вместо предыдущей аренды DHCP?

Вопрос или проблема

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

Я настроил следующий статический лизинг в /etc/dhcp/dhclient.conf:

timeout 30;

lease {
  interface "eth0";
  fixed-address 192.168.1.254;
  option subnet-mask 255.255.255.0;
  option routers 127.0.0.1;
  expire never;
}

Это работает, но eth0 получит этот IP только тогда, когда файлы dhclient.eth0.leases и dhclient.leases в /var/lib/dhcp/ будут пустыми.

Если у вас нет уважительной причины мне противоречить, я бы предпочел, чтобы статический лизинг из dhclient.conf назначался, когда DHCP-сервер не отвечает, вместо использования старых лизингов. Это упростит процесс устранения неполадок и позволит каким-то образом получить доступ к оборудованию, которое доступно только через SSH и не имеет дисплея для вывода текущего IP.

Я прочитал руководство dhclient и множество результатов поиска в Google, но не нашел встроенного способа или каких-либо предложений, как это сделать.

Решения, о которых я подумал:

1-Убрать содержимое dhclient.leases и установить права так, чтобы его нельзя было изменить
2-Связать dhclient.leases с /dev/null и установить права так, чтобы его нельзя было изменить
3-Точно так же, как в пункте 1, но вместо настройки статического лизинга в dhclient.conf, вручную добавить его в dhclient.leases перед установкой прав.

Также есть AVAHI, главная цель которого – назначить IP-адрес, когда все остальное подводит.

AVAHI должен выдавать непрактичный адрес 169.254.x.x.

RFC 5735 определяет 169.254.0.0/16 как «связевой локальный» блок, как описано в RFC3927. Это диапазон адресов, который должен использоваться для автонастройки хостов, например, когда сервер DHCP не может быть найден.

https://help.ubuntu.com/community/HowToZeroconf

Я создал ‘/etc/sysconfig/network-scripts/ifcfg-eth0:0’:

DEVICE=eth0:0
BOOTPROTO=none
ONBOOT=yes
NETWORK=192.168.222.0
NETMASK=255.255.255.0
IPADDR=192.168.222.22
USERCTL=no

Это просто привязывает второй статический IP к сетевому интерфейсу, используя псевдоним. Это не совсем то, что я хотел, но будет работать, пока я не разберусь с конфигурацией dhclient.conf.

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

Ответ или решение

Когда DHCP-сервер не отвечает, чтобы заставить dhclient использовать статическую аренду из dhclient.conf вместо предыдущих DHCP-аренд, вам необходимо внести небольшие изменения в конфигурацию dhclient.conf и применить некоторые обходные пути, которые помогут избежать использования старых аренды. Вот несколько шагов, которые вы можете предпринять:

  1. Измените конфигурацию dhclient.conf:

    Убедитесь, что ваш файл /etc/dhcp/dhclient.conf настроен на использование статической аренды. Проверьте, чтобы в нем были указаны параметры timeout и retry, а также статическая аренда была правильно описана. Например:

    timeout 5;
    retry 5;
    
    lease {
     interface "eth0";
     fixed-address 192.168.1.254;
     option subnet-mask 255.255.255.0;
     option routers 127.0.0.1;
     expire never;
    }

    В данном примере мы уменьшили время ожидания до 5 секунд и установили количество попыток до 5. Это позволит dhclient быстро переходить к использованию статической конфигурации.

  2. Очистка предыдущих аренд:

    Чтобы гарантировать, что старые аренды не будут использованы, вы можете вручную очистить файлы аренды либо перед запуском dhclient, либо в автоматическом режиме:

    sudo rm /var/lib/dhcp/dhclient.leases

    Вы можете добавить скрипт (например, в /etc/network/if-up.d/) для автоматической очистки файла аренды всякий раз, когда сетевой интерфейс активируется.

  3. Настройка прав на файлы аренды:

    После удаления файлов аренды вы можете изменить права доступа к /var/lib/dhcp/dhclient.leases, чтобы предотвратить его модификацию:

    sudo chattr +i /var/lib/dhcp/dhclient.leases

    Команда chattr +i делает файл «неизменяемым», что позволяет избежать случайного перезаписывания файла аренды.

  4. Настройка независимого статического IP:

    В качестве альтернативы вы можете рассмотреть возможность добавления статического IP-адреса через конфигурацию сети, например в файле /etc/sysconfig/network-scripts/ifcfg-eth0:

    DEVICE=eth0
    BOOTPROTO=static
    ONBOOT=yes
    IPADDR=192.168.1.254
    NETMASK=255.255.255.0

    Это позволяет сетевому интерфейсу получать статический IP-адрес независимо от dhclient и DHCP-сервера.

  5. Исключите DHCP (опционально):

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

  6. Использование Avahi:

    Как вы упомянули, Avahi может предоставить вам альтернативный вариант для получения локального адреса 169.254.x.x в случае, если DHCP не доступен. Однако Имейте в виду, что этот адрес будет недоступен за пределами текущего канала сети.

Эти шаги помогут вам гарантировать, что ваш интерфейс eth0 будет использовать статическую аренду из dhclient.conf, когда DHCP-сервер недоступен.

Оцените материал
Добавить комментарий

Капча загружается...