ISC DHCP 客户端(dhclient)替代方案?

kol*_*kol 6 dhcp debian dhclient debian-bullseye

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

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

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

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

sudo dhclient -r
sudo dhclient
Run Code Online (Sandbox Code Playgroud)

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

sudo dhclient -r eth0
sudo dhclient eth0
Run Code Online (Sandbox Code Playgroud)

- - 编辑 - -

这个问题的其他讨论:

他们似乎在暗示systemd-networkd

kol*_*kol 1

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

1.卸载dhclient

sudo apt purge -y isc-dhcp-client
sudo apt purge -y isc-dhcp-common
Run Code Online (Sandbox Code Playgroud)

2.启动systemd-networkd

sudo systemctl start systemd-networkd
sudo systemctl enable systemd-networkd
Run Code Online (Sandbox Code Playgroud)

3.让systemd-networkd使用它自己的DHCP客户端管理网络接口

对于每个接口,*.network在 中创建一个配置文件/etc/systemd/network,例如05-enp1s0.network

sudo apt purge -y isc-dhcp-client
sudo apt purge -y isc-dhcp-common
Run Code Online (Sandbox Code Playgroud)

重新启动 Linux 或重新启动 systemd-networkd 后,sudo networkctl reload这些接口将由 systemd-networkd 的 DHCP 客户端进行配置。更新接口配置很容易,例如:

sudo networkctl renew enp1s0
Run Code Online (Sandbox Code Playgroud)

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


4. [可选]添加8.8.8.8作为主DNS服务器

打开 systemd-resolved:

sudo systemctl start systemd-resolved
sudo systemctl enable systemd-resolved
Run Code Online (Sandbox Code Playgroud)

/etc/systemd/resolved.conf

sudo systemctl start systemd-networkd
sudo systemctl enable systemd-networkd
Run Code Online (Sandbox Code Playgroud)

在 中/etc/nsswitch.confresolve在第一位添加hosts

...
hosts:      resolve [!UNAVAIL=return] files dns
...
Run Code Online (Sandbox Code Playgroud)

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

cd /etc
sudo rm resolv.conf
sudo ln -s /run/systemd/resolve/stub-resolv.conf resolv.conf
Run Code Online (Sandbox Code Playgroud)

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

nameserver 8.8.8.8
nameserver 192.168.1.1
nameserver 192.168.42.129
Run Code Online (Sandbox Code Playgroud)