更新 - 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
我的系统上确实有一个界面。)
我浏览了以下文档:
- Gnome NetworkManager.conf 文档
- Gnome nm-settings 文档
- Thomas Haller 的博客 - NetworkManager 1.4.0 中的 MAC 地址欺骗
根据以上文档,我尝试添加类似以下内容/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 device
。match-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 正在持续开发中,有时配置参数或名称会发生变化。有些变化令人困惑。
对比和比较:
- https://developer.gnome.org/NetworkManager/1.10/NetworkManager.conf.html
- https://developer.gnome.org/NetworkManager/stable/NetworkManager.conf.html
和:
- https://developer.gnome.org/NetworkManager/1.10/settings-802-3-ethernet.html
- https://developer.gnome.org/NetworkManager/stable/settings-802-3-ethernet.html
我在使用 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