Debian Buster dhclient 随机使用其 MAC 地址或生成的 DUID-LLT 作为其 DHCP 客户端 ID。
我可以强制它始终使用 MAC 地址而不是生成的 DUID-LLT 吗?
我知道这个选项send dhcp-client-identifier = xx:xx:xx:xx:xx:xx;
,但它迫使我使用自己的 MAC 地址手动配置每个接口,如果可能的话,我宁愿避免这种情况。
正如我之前所说,它已经在这样做了,但是是随机的。
可以强迫它总是这样做吗?
Debian Buster dhclient 随机使用其 MAC 地址或生成的 DUID-LLT 作为其 DHCP 客户端 ID。
我可以强制它始终使用 MAC 地址而不是生成的 DUID-LLT 吗?
我知道这个选项send dhcp-client-identifier = xx:xx:xx:xx:xx:xx;
,但它迫使我使用自己的 MAC 地址手动配置每个接口,如果可能的话,我宁愿避免这种情况。
正如我之前所说,它已经在这样做了,但是是随机的。
可以强迫它总是这样做吗?
dhclient.conf
解决方案很简单,但没有记录(至少不在手册页上)。您可以设置该选项send dhcp-client-identifier = hardware
,而不是硬编码特定的 MAC 地址。完整示例:
它配置
dhclient
为发送硬件地址作为客户端标识符,删除以前的租约并使用新设置重新启动接口。在此更改后,它将自动使用 MAC 地址作为每个接口的客户端 ID。由于此更改 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=906894 ifupdown 已将 -i 参数添加到 dhclient。
但这里有一个修复:此更改 https://salsa.debian.org/debian/ifupdown/-/commit/40eb51499fe71e4fb20c27bea23045c62e9ba07 转到 ifupdown 0.8.36 并使 -i 选项可选。这是在 /etc/network/interfaces 的(足够新的)手册页中记录的:man interfaces / INET ADDRESS FAMILY / "The dhcp Method" / Options / client
所以,就我而言,实际的解决方案是在我的 /etc/network/interfaces 中添加“client no”,比如
这带来了旧的行为,即: ifup 在没有“-i”的情况下调用 dhclient,如下所示: https://salsa.debian.org/debian/ifupdown/-/blob/40eb51499fe71e4fb20c27beea23045c62e9ba07/inet.defn#L101 备案,我查看命令行参数进行确认:
ps aux | grep dhclient
(顺便说一句,要查看日志,可以像这样
sudo journalctl | grep -i dhcp | less
:)通过这种方式,它可以与害怕 RFC 4361 的 DHCP 服务器通信。
这附带了一些细则:对于 Debian 10,我不得不反向移植 ifupdown 包。我已按照https://unix.stackexchange.com/a/112160/203082 在本地获取
ifupdown_0.8.36~bpo10+1_amd64.deb
包。安装后,我无法干净地重新启动我的网络(可能是由于一些与 systemd 相关的复杂性)。所以我不得不重新启动,不幸的是。然后它能够按预期获取IP地址。