Вопрос или проблема
Я работаю с кастомным сервером 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 – это системный демон, который управляет сетевыми конфигурациями. Он обнаруживает и настраивает сетевые устройства по мере их появления, может также создавать виртуальные сетевые устройства.
- DHCP клиент systemd-networkd
- SystemdNetworkd | wiki.debian.org
- systemd-networkd | wiki.archlinux.org
udhcpc
udhcpc – это очень маленькая программа DHCP клиента, ориентированная на встраиваемые системы. Утилита стремится быть полностью функциональной и совместимой с RFC 2131 и является аббревиатурой от Micro – DHCP – Client (μDHCPc).
dhcpcd
dhcpcd
– это клиент DHCP и DHCPv6. В настоящее время это самый функционально богатый открытый клиент DHCP; полное описание функций смотрите на главной странице.
- Главная страница dhcpcd
- dhcpcd — клиент DHCP | Ubuntu
- dhcpcd | wiki.archlinux.org
- Реальная разница между dhclient и dhcpcd
dhcpcanon
dhcpcanon – это реализация DHCP клиента для профилей анонимности DHCP (RFC7844), использующая Scapy Automaton.
- dhcpcanon – профиль анонимности DHCP
- dhcpcanon-script – скрипт конфигурации сети DHCP клиента | Ubuntu
- dhcpcanon – Профиль анонимности DHCP клиента | manpages.debian.org
NetworkManager
По умолчанию NetworkManager использует свой внутренний DHCP-клиент. Внутренний DHCPv4 плагин основан на библиотеке nettools’ n-dhcp4, а внутренний DHCPv6 плагин сделан из кода на основе systemd-networkd.
- NetworkManager | wiki.archlinux.org
- NetworkManager | wiki.debian.org
- Глава 19. Настройка DHCP в NetworkManager
- n-dhcp4
- Узнать DHCP сервер в сети
odhcp6c
odhcp6c – это минимальный клиент DHCPv6 и RA, предназначенный для использования во встроенных системах Linux, особенно в маршрутизаторах. Он компилируется до около 35 КБ (-Os -s).
coredhcp клиент
Coredhcp — это быстрый, многопоточный, модульный и расширяемый DHCP сервер, написанный на Go. В CoreDHCP почти все реализовано как плагин. Каждый запрос оценивается, вызывая каждый плагин по порядку, пока один не остановит оценку и не ответит, либо не удалит запрос.
- coredhcp | github.com
- Пакет: coredhcp-client (0.0.0+git.20220602.a2552c5-2) | debian
Пакет golang-github-coredhcp-coredhcp в Ubuntu- coredhcp-client бинарный пакет в Ubuntu Noble amd64
Настройка 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 – это 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 клиенты основаны на следующих требованиях:
- DHCP клиент должен поддерживать DHCPv6.
- DHCP клиент в initramfs должен быть достаточно маленьким, чтобы не увеличивать размер заметно.
- 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
весьма популярен в встраиваемых системах из-за своего маленького размера.
Применение
-
Установка
isc-dhcp-client
:Если вы всё ещё хотите установить ISC DHCP клиент, выполните команду:
sudo apt update sudo apt install isc-dhcp-client
Это установит клиент и сделает доступной команду
dhclient
для запроса IP-адреса от DHCP-сервера. -
Альтернативы:
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 <интерфейс>
-
Конфигурация через Netplan:
Ubuntu 20.04 использует Netplan для управления сетевой конфигурацией. Найдите соответствующий файл в
/etc/netplan/
и отредактируйте его, чтобы включить DHCP:network: version: 2 renderer: networkd ethernets: eth0: dhcp4: true dhcp6: true
Примените изменения:
sudo netplan apply
-
Перезагрузка службы сети:
Чтобы изменения вступили в силу, перезапустите службы сети:
sudo systemctl restart networking
Заключение
Выбор конкретного DHCP-клиента зависит от ваших потребностей и требований сети. Если вы используете стандартные серверные или десктопные приложения, dhcpcd
— это надежный выбор благодаря своей полной поддержке функциональности DHCP. Для встраиваемых решений и малых систем udhcpc
предлагает лёгкий вес и простоту.
При активной разработке и эволюции сетевых протоколов, знать о новейших инструментах и уметь адаптироваться к изменениям — это необходимость для IT-профессионалов, работающих с сетевой конфигурацией.