要在较新的 Fedora 和 Arch 上执行此操作,必须进行设置dhcp-client-identifier = hardware
以使 DHCP 正常工作。我怀疑 17.10 也是如此。但是,Artful 使用 netplan 和 systemd-networkd。
对于后者,我可以
[DHCP] ClientIdentifier=mac
在 /etc/systemd/network/(interface name).network 中设置,它会覆盖 /run/systemd/network/10-netplan-(ifname).network。
我更愿意在文件 /etc/netplan/01-netcfg.yaml 或 /etc/netplan/ 中的某处进行此项设置。
不过,这些是解决上述问题的具体方法。总体问题是如何使用 netplan 将具有 MAC 预留的 MS Windows Server 2012 DHCP 服务器与 Ubuntu 17.10 服务器结合使用。如果 DHCP 服务器不会对其他客户端产生重大影响,或者可以以某种方式按预留进行配置,我可能能够请求重新配置 DHCP 服务器。
(我本来想使用标签 windows-server,但由于某种原因它不存在)
答案1
我最近也遇到了这个问题。答案就在 netplan.io 示例中。您可以将该行添加dhcp-identifier: mac
到 /etc/netplan/ 中的 yaml 文件中,然后运行netplan apply
以立即应用更改。
从最后一项开始https://netplan.io/examples:
Windows DHCP 服务器
对于由 Windows Server 使用 dhcp-identifier 键提供 DHCP 的网络,可以实现互操作性:
network: version: 2 ethernets: enp3s0: dhcp4: yes dhcp-identifier: mac
答案2
对于那些在等待 Ubuntu 从上游提取此错误修复时只需要快速解决方案的人:
sudo rm /etc/machine-id
sudo systemd-machine-id-setup
sudo reboot
这通过强制 Ubuntu 客户端生成新的机器 ID 来解决重复的 IP 问题,这反过来又导致 netplan/networkd 生成新的 DUID,因此您将如预期的那样从 DHCP 服务器获得新的 IP 地址。
因此,它实际上并不是读取克隆后更改的 MAC,而是为克隆后的操作系统生成新的 DUID。
本质上,这是 Linux 的 newsid。