Альтернатива ISC DHCP-клиенту (dhclient)?
Я только что видел новости на https://www.isc.org/dhcp :
ISC завершила разработку DHCP-клиента ISC в начале 2022 года. Эта реализация клиента больше не поддерживается и не должна больше использоваться в рабочей среде.
Теперь, когда
dhclient
кажется, вышел на пенсию, какой DHCP-клиент мне следует использовать?
Точнее, я использую Debian 11, и мне нужен DHCP-клиент, которому можно дать команду из командной строки продлить аренду. В настоящее время я делаю это:
sudo dhclient -r
sudo dhclient
Или, для конкретного интерфейса, напримерeth0
:
sudo dhclient -r eth0
sudo dhclient eth0
--- РЕДАКТИРОВАТЬ ---
Другие обсуждения этого вопроса:
- https://groups.google.com/g/linux.debian.user/c/FSEkTKp3zEg
- https://lists.debian.org/debian-devel/2021/09/msg00407.html
Кажется, они предлагаютsystemd-networkd
.
2 ответа
Я только что заменил isc-dhcp-client на udhcpc:
apt purge isc-dhcp-client udhcpc+
Чтобы продлить (используя значение по умолчанию eth0):
udhcpc renew
Я заменил dhclient DHCP-клиентом systemd-networkd следующим образом:
1. Удалить dhclient
sudo apt purge -y isc-dhcp-client
sudo apt purge -y isc-dhcp-common
2. Запустите systemd-networkd.
sudo systemctl start systemd-networkd
sudo systemctl enable systemd-networkd
3. Заставьте systemd-networkd управлять сетевыми интерфейсами, используя собственный DHCP-клиент.
Для каждого интерфейса создайте*.network
файл конфигурации в/etc/systemd/network
, например05-enp1s0.network
:
[Match]
Name=enp1s0
[Network]
DHCP=yes
После перезапуска Linux или перезапуска systemd-networkd, илиsudo networkctl reload
, эти интерфейсы будут настроены DHCP-клиентом systemd-networkd. Обновить конфигурации интерфейса легко, например:
sudo networkctl renew enp1s0
Это очень субъективно, но мой первоначальный опыт показывает, что DHCP-клиент systemd-networkd более надежен и реагирует быстрее, чем dhclient. Если я меняю сетевые подключения, что часто случается в моем случае использования, я получаю хороший опыт plug-n-play.
4. [Необязательно] Добавьте 8.8.8.8 в качестве основного DNS-сервера.
Включите systemd-resolved:
sudo systemctl start systemd-resolved
sudo systemctl enable systemd-resolved
В/etc/systemd/resolved.conf
:
[Resolve]
DNS=8.8.8.8
В/etc/nsswitch.conf
, добавлятьresolve
на первом месте поhosts
:
...
hosts: resolve [!UNAVAIL=return] files dns
...
Сейчасsystemd-resolve
будет работать, ноnslookup
по-прежнему будет использовать DNS-сервер, записанный DHCP-клиентом. Чтобы решить эту проблему, преобразуйте/etc/resolv.conf
в мягкую ссылку на файл resolv.conf, используемый systemd-resolved:
cd /etc
sudo rm resolv.conf
sudo ln -s /run/systemd/resolve/stub-resolv.conf resolv.conf
После перезапуска systemd-resolved этот файл содержит в первой строке 8.8.8.8 и ниже DNS-серверы, собранные DHCP-клиентом с DHCP-серверов подключенных сетей, например:
nameserver 8.8.8.8
nameserver 192.168.1.1
nameserver 192.168.42.129