ISC DHCP 客户端(dhclient)替代品?

ISC DHCP 客户端(dhclient)替代品?

我刚刚看到新闻https://www.isc.org/dhcp

ISC 已于 2022 年初停止了 ISC DHCP 客户端的开发。此客户端实现不再维护,不应再在生产中使用。

现在dhclient似乎已经退役了,我应该使用哪个 DHCP 客户端?

更具体地说,我使用 Debian 11,我需要一个可以从命令行指示续订租约的 DHCP 客户端。目前我这样做:

sudo dhclient -r
sudo dhclient

或者,对于特定的接口,例如eth0

sudo dhclient -r eth0
sudo dhclient eth0

- - 编辑 - -

该问题的其他讨论:

他们似乎建议systemd-networkd

答案1

我按照以下方式将 dhclient 替换为 systemd-networkd 的 DHCP 客户端:

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,这些接口将由 systemd-networkd 的 DHCP 客户端配置。更新接口配置很容易,例如:

sudo networkctl renew enp1s0

这是非常主观的,但我的初步经验是 systemd-networkd 的 DHCP 客户端比 dhclient 更值得信赖且反应更快。如果我更改网络连接(这在我的使用案例中经常发生),我会获得不错的即插即用体验。


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.confresolve首先添加hosts

...
hosts:      resolve [!UNAVAIL=return] files dns
...

现在systemd-resolve就可以工作了,但仍将使用DHCP 客户端nslookup写入的 DNS 服务器。为了解决这个问题,请将其转换为 systemd-resolved 使用的 resolv.conf 文件的软链接:/etc/resolv.conf/etc/resolv.conf

cd /etc
sudo rm resolv.conf
sudo ln -s /run/systemd/resolve/stub-resolv.conf resolv.conf

重启 systemd-resolved 后,该文件第一行包含 8.8.8.8,其下方是 DHCP 客户端从所连接网络的 DHCP 服务器收集的 DNS 服务器信息,例如:

nameserver 8.8.8.8
nameserver 192.168.1.1
nameserver 192.168.42.129

答案2

我刚刚用 udhcpc 替换了 isc-dhcp-client:

apt purge isc-dhcp-client udhcpc+

更新(使用默认的 eth0):

udhcpc renew

相关内容