dhcpd или dhclient не найден

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

Я работаю с кастомным сервером Ubuntu 20.04 и пытаюсь получить для него IP через DHCP. До сих пор сервер работал с статическим IP, и когда я запускаю dhcp или dhclient, выводится dhcpd: command not found и dhclient: command not found.

В /sbin нет директорий dhcpd или dhclient, но существует папка /etc/dhcp, содержащая dhclient-enter-hooks.d и dhclient-exit-hooks.d со скриптами в них, которые, как я полагаю, позволяют стартовать/останавливать dhcp.

Я хочу узнать, возможно ли, что dhcp или dhclient не установлены на этом устройстве, или я просто не вижу путь их установки, и если они не установлены, какой из них лучше установить для получения IP через DHCP.

Если вы получаете command not found при попытке запустить dhcp или dhclient, возможно, они не установлены.

Команда dhcpd, упомянутая вами, используется для DHCP сервера, а не клиента.

Чтобы установить утилиты для DHCP клиента, выполните:

Как уже упомянул в своём сообщении @John Greene, ISC объявила о завершении поддержки ISC DHCP (isc-dhcp-client).

sudo apt install isc-dhcp-client

Это установит пакет isc-dhcp-client, который включает dhclient.

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

Другие альтернативные клиенты для Debian и/или Ubuntu

Альтернативные DHCP-клиенты | Debian Wiki

  • Список взят из Debian Wiki, и стоит удостовериться в наличии соответствующих пакетов для Ubuntu!

  • Вы не должны просто устанавливать пакеты Debian на Ubuntu (или наоборот), поскольку обе системы имеют разные версии библиотек и зависимостей, что может привести к несовместимостям и ошибкам системы.

  • Кроме того, глубокая интеграция пакетов в систему (например, службы или конфигурации) может привести к проблемам, если они не предназначены специально для соответствующего дистрибутива!

Вот набор DHCP клиентов, которые могут подойти в качестве альтернативы из Debian Wiki:

systemd-networkd

systemd-networkd – это системный демон, который управляет сетевыми конфигурациями. Он обнаруживает и настраивает сетевые устройства по мере их появления, может также создавать виртуальные сетевые устройства.

udhcpc

udhcpc – это очень маленькая программа DHCP клиента, ориентированная на встраиваемые системы. Утилита стремится быть полностью функциональной и совместимой с RFC 2131 и является аббревиатурой от Micro – DHCP – Client (μDHCPc).

dhcpcd

dhcpcd – это клиент DHCP и DHCPv6. В настоящее время это самый функционально богатый открытый клиент DHCP; полное описание функций смотрите на главной странице.

dhcpcanon

dhcpcanon – это реализация DHCP клиента для профилей анонимности DHCP (RFC7844), использующая Scapy Automaton.

NetworkManager

По умолчанию NetworkManager использует свой внутренний DHCP-клиент. Внутренний DHCPv4 плагин основан на библиотеке nettools’ n-dhcp4, а внутренний DHCPv6 плагин сделан из кода на основе systemd-networkd.

odhcp6c

odhcp6c – это минимальный клиент DHCPv6 и RA, предназначенный для использования во встроенных системах Linux, особенно в маршрутизаторах. Он компилируется до около 35 КБ (-Os -s).

coredhcp клиент

Coredhcp — это быстрый, многопоточный, модульный и расширяемый DHCP сервер, написанный на Go. В CoreDHCP почти все реализовано как плагин. Каждый запрос оценивается, вызывая каждый плагин по порядку, пока один не остановит оценку и не ответит, либо не удалит запрос.

Настройка DHCP через /etc/network/interfaces

Убедитесь, что /etc/network/interfaces настроен на использование DHCP.

auto eth0
iface eth0 inet dhcp

Замените eth0 на имя сетевого интерфейса в вашей системе.

Перезапустите сетевое подключение:

systemctl restart networking

Вы можете выполнить следующую команду, чтобы запросить IP-адрес:

sudo dhclient

DHCP сервер

Для ресурсов, которые могут помочь в миграции вашего существующего развертывания ISC DHCP сервера на наш новый DHCP сервер, Kea.
ISC DHCP

Миграция на Kea с ISC DHCP

Kea – это DHCP сервер, разработанный ISC для замены isc-dhcp. Он новее и разработан для более современных сетевых сред.

Как установить и настроить isc-kea в Ubuntu

Старый isc-dhcp-server

Если вам нужно настроить и запустить DHCP сервер, вам потребуется установить и настроить пакет isc-dhcp-server.

Настройка сети с помощью netplan:

Найдите файл конфигурации netplan в папке /etc/netplan/ и с расширением .yaml.

Отредактируйте файл, вы должны увидеть структуру yaml, определяющую сетевые интерфейсы и их конфигурации. Установите свойство dhcp4 в true.

nano /etc/netplan/YOUR_NETPLAN_CONFIG_FILE.yaml

Пример dhcp:

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: true
      dhcp6: true

Если у вас несколько сетевых интерфейсов, вы можете добавить аналогичные секции для каждого интерфейса.

Примените изменения:

netplan apply

Запросите IP-адрес:

sudo dhclient

Источник Ubuntu:

Источник Debian:

Настройка сети:

Поставщик для DHCP клиента изменился, поскольку ISC больше не поддерживает dhclient.

apt remove isc-dhcp-client

Новое имя пакета для dhcpcd в Ubuntu/Debian – dhcp-client.

apt install dhcp-client

Что изменилось?

После версии 23.01+ Ubuntu, dhclient будет недоступен, поскольку ISC завершило поддержку (EOL) клиентской части dhcp (dhclient), (при этом Bug Ubuntu #2024164). Имя пакета было isc-dhcp-client.

Существуют различные альтернативы DHCP клиентам.

Только две жизнеспособные альтернативы: dhcpcd для настольных ПК/серверов и udhcpc для встроенных систем/IoT.

Эти альтернативные DHCP клиенты основаны на следующих требованиях:

  1. DHCP клиент должен поддерживать DHCPv6.
  2. DHCP клиент в initramfs должен быть достаточно маленьким, чтобы не увеличивать размер заметно.
  3. DHCP клиент должен быть вызываемым из оболочки (для initramfs и cloud-init)

Ни systemd-networkd, ни ifconfig не поддерживают DHCP клиента через IPv6. И systemd-networkd является только демоном, а не основанным на CLI, необходимым для выполнения разнообразной кастомизации на основе скриптов, специфичным для каждого сайта (имена серверов, NTP, WINS и особенно systemd).

Примечание: Redhat больше не предоставляет dhcpcd с 2019, который находится в большинстве других дистрибутивов Linux. Redhat предоставляет вместо этого (устаревший) ISC dhclient.

.

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

Если на вашем сервере Ubuntu 20.04 возникает ошибка «dhcpd: command not found» или «dhclient: command not found», это может свидетельствовать о том, что необходимые утилиты для работы с DHCP (Dynamic Host Configuration Protocol) не установлены. Давайте разберемся, как справиться с этой проблемой.

Теория

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

В случае, если вы видите ошибки «command not found», через терминал операционной системы, это говорит о том, что необходимые бинарные файлы отсутствуют в системе, либо они не были установлены изначально.

Пример

На сервере с Ubuntu 20.04 проблема отсутствия команды dhclient может возникнуть, если пакет isc-dhcp-client не установлен. Однако важно учесть, что ISC (Internet Systems Consortium) объявил о завершении поддержки этого клиента, что может вызвать дополнительные проблемы с его получением и обновлением.

Другие возможности включают использование альтернативных клиентов, таких как dhcpcd или udhcpc, каждый из которых имеет свои особенности и применимость. Например, dhcpcd предоставляет богатую функциональность и поддерживает как IPv4, так и IPv6, а udhcpc весьма популярен в встраиваемых системах из-за своего маленького размера.

Применение

  1. Установка isc-dhcp-client:

    Если вы всё ещё хотите установить ISC DHCP клиент, выполните команду:

    sudo apt update
    sudo apt install isc-dhcp-client

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

  2. Альтернативы:

    a. Установка dhcpcd:

    sudo apt update
    sudo apt install dhcpcd

    После установки dhcpcd можно использовать:

    sudo dhcpcd <интерфейс>

    Замените <интерфейс> на имя вашего сетевого интерфейса (например, eth0).

    b. Установка udhcpc:

    udhcpc интегрирован в пакет BusyBox. Убедитесь, что он установлен:

    sudo apt update
    sudo apt install busybox

    Используйте udhcpc следующим образом:

    sudo udhcpc -i <интерфейс>
  3. Конфигурация через Netplan:

    Ubuntu 20.04 использует Netplan для управления сетевой конфигурацией. Найдите соответствующий файл в /etc/netplan/ и отредактируйте его, чтобы включить DHCP:

    network:
     version: 2
     renderer: networkd
     ethernets:
       eth0:
         dhcp4: true
         dhcp6: true

    Примените изменения:

    sudo netplan apply
  4. Перезагрузка службы сети:

    Чтобы изменения вступили в силу, перезапустите службы сети:

    sudo systemctl restart networking

Заключение

Выбор конкретного DHCP-клиента зависит от ваших потребностей и требований сети. Если вы используете стандартные серверные или десктопные приложения, dhcpcd — это надежный выбор благодаря своей полной поддержке функциональности DHCP. Для встраиваемых решений и малых систем udhcpc предлагает лёгкий вес и простоту.

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

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

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