我问之前在这里搜索过,结果发现只能运行 macchanger/etc/rc.local使用这个简单的脚本:
ifconfig enp2s0 down
macchanger -r enp2s0
ifconfig enp2s0 up
(我只是修改了 eth0 因为我的设备名称是 enp2s0)
显然,它只在启动时设置了一个随机的 MAC 地址,但如果我重新连接我的网络设备,它总是会获取我的真实 MAC 地址,所以这不是我想要的。
我尝试至少留下一个永久的欺骗地址,但是ubuntu 默认网络管理器中的 mac 欺骗选项不起作用,它总是发送我的真实地址。
我不记得具体在哪里,但我读到过某处说这可能是 systemd 的错误,但我真的不确定如何处理该事情或是否真的是它的错误。
在 Ubuntu 中连接网络设备时,获取随机 mac 地址的正确方法是什么?我没什么主意了。
答案1
从工作Gnome 博客文章. 这些设置适用于 Ubuntu 17.10
通过 CLI
首先,获取有线互联网连接的名称
nmcli connection show
其次,设置网络连接以生成“稳定”或“随机”地址
nmcli connection modify "wired_connection_name" ethernet.cloned-mac-address random
对于 WiFi 使用wifi.cloned-mac-address
。在网络管理器 1.2.6 上,你将需要设置 MAC 地址代替random
。
最后,检查你的 mac 地址,断开连接并重新连接,然后再次检查你的 mac 地址
ifconfig | grep Ether
nmcli connection down "wired_connection_name"
nmcli connection up "wired_connection_name"
ifconfig | grep Ether
通过 GUI
该程序nm-connection-manager
也可用于访问此设置,调出如下所示的屏幕,其中“克隆的 MAC 地址”下拉框可以更改为多个设置之一。
答案2
我们可以通过使用 的简单脚本来实现这一目标ifconfig
。
在目录中创建可执行脚本文件/etc/network/if-up.d
,这样每次执行命令时都会执行该脚本ifup
,包括系统启动时。我们称该脚本为mac-changer
:
sudo touch /etc/network/if-up.d/mac-changer
sudo chmod +x /etc/network/if-up.d/mac-changer
sudo nano /etc/network/if-up.d/mac-changer
- 复制以下脚本内容并使用
nano
:Shift+Insert粘贴;Ctrl+O和Enter保存;Ctrl+X退出。
脚本的内容mac-changer
应该是:
#!/bin/bash
change_mac(){
# Prevent enless loop on error
if (( COUNT >= 10 )); then exit 0; else COUNT=$(( COUNT + 1 )); echo "Attempt: $COUNT"; fi
# Generate a new MAC address
MAC="$(echo $RANDOM | md5sum | head -c 17 | sed -r 's/(..)./\1:/g')"
# Change the MAC address of the target network interface
/sbin/ifconfig "$1" hw ether "${MAC}"
# Chech whether the MAC is successfully changed anf if is not call the function again
if [ $? -ne 0 ]; then change_mac; fi
# Log the change
echo "Interface: $1 | MAC: $MAC"
}
# Call of the function; Change 'enp0s25' with the actual interface in use; Create a log file `/tmp/mac-changer-...`
change_mac 'enp0s25' > /tmp/mac-changer-enp0s25 2>&1
笔记:
大多数情况下,如果您愿意,您可以直接执行脚本,
sudo
然后 MAC 地址就会改变:sudo /etc/network/if-up.d/mac-changer
请注意,某些网络接口不支持 MAC 更改功能。
以下是该脚本工作原理的演示:
参考: