我想像在 Windows 10 中一样在每次启动时随机化我的 mac 地址。为此,我尝试了以下方法 -
根据这帖子,从 NetworkManager 1.4.1+ 开始,我们可以进行 MAC 地址随机化。我的是 1.10.6(使用 Ubuntu 18.04)-
$ dpkg -s network-manager | grep '^Version:'
Version: 1.10.6-2ubuntu1.1
在那篇文章中他指出了这一点要旨了解配置详情。要点几乎完全相同,只是它有一条指令 -
# Be sure to change your existing (saved) connections in
# /etc/NetworkManager/system-connections/*
我不太明白这一点,也不知道该怎么做,所以我跳过了它,希望一切顺利。要点中还有一个链接,指向侏儒博客用于 1.4.0 版网络管理器中的 mac 地址欺骗。
尽管作者给出了一个示例来展示更改,但他提到要更改中的文件/usr/lib/NetworkManager/conf.d
,而不是更改中的文件。 现在,在我的情况下,源文件仅包含一个文件,如下所示 -/etc/NetworkManager/conf.d
/etc/NetworkManager/conf.d/30-mac-randomization.conf
conf.d
/etc
user@user:/etc/NetworkManager/conf.d$ ls
default-wifi-powersave-on.conf
另一个(来自/usr
)有-
user@user:/usr/lib/NetworkManager/conf.d$ ls
10-dns-resolved.conf 20-connectivity-ubuntu.conf
10-globally-managed-devices.conf no-mac-addr-change.conf
我从以下位置编辑了文件no-mac-addr-change.conf
-
[device-mac-addr-change-wifi]
match-device=driver:rtl8723bs,driver:rtl8189es,driver:r8188eu,driver:8188eu,driver:eagle_sdio,driver:wl
wifi.scan-rand-mac-address=no
wifi.cloned-mac-address=preserve
ethernet.cloned-mac-address=preserve
到 -
[device-mac-addr-change-wifi]
match-device=driver:rtl8723bs,driver:rtl8189es,driver:r8188eu,driver:8188eu,driver:eagle_sdio,driver:wl
wifi.scan-rand-mac-address=yes
wifi.cloned-mac-address=random
ethernet.cloned-mac-address=preserve
然后我重新启动了网络管理器 -
$ sudo systemctl restart NetworkManager
并从 GUI 重新启动了 WiFi,但 mac 地址仍然相同。通过以下方式检查cat /sys/class/net/wlp2s0 address
这是否与我没有遵循的要点说明有关?我错过了什么?
文件名也重要吗?因为我在其他地方看到的文件名都不一样?
答案1
作者提到要更改 /usr/lib/NetworkManager/conf.d 中的文件,而不是 /etc/NetworkManager/conf.d 中的文件
...如果您是分销商或将文件作为安装的一部分进行安装。用户配置应该在/etc
。
我从以下位置编辑了文件 no-mac-addr-change.conf -
同样:作为用户,您最好不要编辑 中的文件/usr
。相反,将文件放在 中/etc/NetworkManager/conf.d
,然后覆盖设置。配置文件按特定顺序读取(如man NetworkManager.conf
)。稍后读取的文件将修改/覆盖先前的设置。
该文件/usr/lib/NetworkManager/conf.d/no-mac-addr-change.conf
禁止更改某些驱动程序的 MAC 地址,因为驱动程序不支持它。因此,除非您拥有这些设备类型之一,否则该文件对您来说没有任何影响,并且添加到该部分也没有任何影响。请参阅部分match-device
。
请注意,该文件禁止更改某些驱动程序的 MAC 地址,因为这些驱动程序不支持此功能。你有什么问题GENERAL.DRIVER
?nmcli -f all device show wlp2s0
如果你有列出的驱动程序之一,即使你在 NetworkManager 中配置它,它也可能无法工作。
一般来说,查看 NetworkManager 的日志文件。请参阅网络管理器配置文件关于如何启用调试日志记录。您应该查看 NetworkManager 是否无法设置设备的 MAC 地址(以及它是否首先尝试这样做)。
此外,放入wifi.cloned-mac-address=
部分[device*]
也不起作用。请参阅man NetworkManager.conf
。这属于[connection*]
。
但请注意,[ 下的设置connection*]
仅在每个配置文件设置中未指定相应值时才生效。例如,如果您的配置文件名为“我的 Wi-Fi”,则将nmcli connection show "My Wi-Fi"
显示wifi.cloned-mac-address
所使用的每个配置文件。仅当未设置每个配置文件的值时,才会参考配置文件的回退。因此,通常您不会在 NetworkManager.conf 中设置默认值,而是使用 来设置每个配置文件
nmcli connection modify "My Wi-Fi" wifi.cloned-mac-address random
。
总结:
nmcli connection modify "$PROFILE" wifi.cloned-mac-address random
nmcli connection up "$PROFILE"
# verify
nmcli device
ip link