如何让 NetworkManager 为 eth0 分配固定的 MAC 地址?

如何让 NetworkManager 为 eth0 分配固定的 MAC 地址?

更新 - 2020 年 2 月 21 日:

我从未找到一种优雅的方法让 NetworkManager 为我的磁盘启动的系统上的第一个/唯一一个以太网适配器分配特定的 MAC 地址。我还意识到我可以通过重新配置 DHCP 服务器以根据系统名称而不是 MAC 地址分配 IP 地址来解决我的特定问题。我还开始通过而systemd-networkd不是 NetworkManager 或 netplan 在大多数系统上配置网络。(systemd-networkd可能更好,但在我看来仍然有缺陷。)最后,我不再相信我的 2019 年 10 月 14 日更新是正确的。换句话说,Ubuntu 的默认安装(可能是 19.10?)可能不再包含该ifupdown软件包。

更新 - 2019 年 10 月 14 日:

(注:截至 2020 年 2 月,我怀疑本段内容可能不正确和/或已过时。)本周我安装了 Ubuntu 19.04 的桌面版。看来该软件包ifupdown默认安装在 Ubuntu 19.04 上。(耶!)因此,这个问题可能仅适用于选择从ifupdown默认安装中排除该软件包的 Ubuntu 衍生产品。而且这个问题可能不适用于 Ubuntu 本身。出于这个和其他原因,我预计在未来的所有安装中,我都会更喜欢原始 Ubuntu,而不是其任何衍生产品。

原始问题 - 2019 年 2 月 26 日

在(遥远的?)过去,我可以通过将以下节添加到 to 来为网络接口分配 MAC 地址/etc/network/interfaces

auto         eth0
iface        eth0
  hwaddress  00:12:34:56:78:9a

从 Lubuntu 18.04 开始,这不再起作用(因为该ifupdown包未默认安装)。

我的问题是,我应该编辑什么配置文件,以及如何编辑它,以便 NetworkManager 将我选择的固定 MAC 地址分配给eth0

(旁白:是的,我知道默认情况下 Ubuntu 18.04 会重命名eth0为“可预测”的名称,例如enp1s0。我已经禁用该重命名功能,因此eth0我的系统上确实有一个界面。)

我浏览了以下文档:

根据以上文档,我尝试添加类似以下内容/etc/NetworkManager/NetworkManager.conf

[device]
match-device=interface-name:eth0
ethernet.assigned-mac-address=00:22:68:1c:59:b1

不幸的是,上述方法似乎不起作用。

我的用例是,我将 Lubuntu 安装在 USB 上。在任何系统上启动 USB 时,我希望 NetworkManager 为 分配一个预定的固定 MAC 地址eth0

答案1

如上所述,密钥文件格式的属性 nmcliNetworkManager.conf被称为ethernet.cloned-mac-address。只有在 D-Bus API 上才被称为ethernet.assigned-mac-address—— 这是有历史原因的。

通常情况下,你会根据配置文件设置此项,例如通过nmcli connection modify "$PROFILE" ethernet.cloned-mac-address 00:22:68:1c:59:b1。通过编辑,NetworkManager.conf你可以指定使用的默认值如果每个配置文件的值未指定。这在 中有解释man NetworkManager.conf

修改配置文件后,您需要重新激活它以使更改生效。同样,如果您编辑了 中的默认值NetworkManager.conf,则需要使用 重新加载它SIGHUP并重新激活配置文件。

关于可预测的接口名称:NetworkManager 不会(重新)命名设备,这通常由 udev 完成。您可以通过设置connection.interface-name为设备的名称来将配置文件限制为接口。您可以使用ip link或来查看该名称nmcli devicematch-device=interface-name:的设置也是如此NetworkManager.conf

答案2

总结:

nmcli con show

在最后一列中查找您的设备 (eth0),并使用连接名称执行以下命令。例如,如果连接名称为“Default”:

sudo nmcli con modify Default 802-3-ethernet.cloned-mac-address 00:12:34:56:78:9a

较长的答案:

nmcli --version

NetworkManager 正在持续开发中,有时配置参数或名称会发生​​变化。有些变化令人困惑。

对比和比较:

和:

我在使用 Xubuntu 18.04 时也遇到了同样的问题。忽略了破坏兼容性的配置更改。

答案3

对于使用网络管理器 (nmcli -v 1.40.0) 的 wifi 连接,您可以使用以下方式配置固定的克隆 mac 地址:

nmcli con show
nmcli con modify HotelWifiName wifi.cloned-mac-address 70:48:f7:1a:2b:3c
nmcli device disconnect wlp0s20f3
nmcli device connect wlp0s20f3

当您需要使用没有浏览器的设备登录酒店 wifi 强制门户时非常有用。

对于有线连接,它应该是这样的:

nmcli con show
nmcli con modify Wired ethernet.cloned-mac-address 70:48:f7:1a:2b:3c
nmcli device disconnect enp0s31f6
nmcli device connect enp0s31f6

相关内容