我正在使用以下方式更改/欺骗我的 MAC
sudo ifconfig wlan0 down
sudo ifconfig wlan0 hw ether xx:xx:xx:xx:xx:xx
sudo ifconfig wlan0 up
但问题是当我尝试连接 AP 时,它不允许我连接。然后我的 MAC 会自动更改为我的原始 MAC。
显然我可以连接到 AP。
问题的原因是什么。据我所知,网络应该是允许的。因为更改 MAC 后。我像新设备一样连接。
那么解决方案是什么呢?
我也尝试过从 GUI,编辑连接
Ubuntu 版本是 14.04
答案1
网络管理器正在干扰 mac 地址的更改。
您可以使用 udev 规则自动执行 mac 欺骗。它将在启动时自动应用。
/etc/udev/rules.d/99-mac-spoofing.rules
创建包含以下内容的文件
ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="XX:XX:XX:XX:XX:XX", RUN+="/sbin/ip link set dev %k address YY:YY:YY:YY:YY:YY"
XX:XX:XX:XX:XX:XX
旧的 mac 地址和YY:YY:YY:YY:YY:YY
新的mac 地址在哪里。
甚至可以使用随机 mac 地址macchanger-r 工具在 udev 规则中。
wifi AP 可能启用了 MAC 地址过滤。
答案2
注意事项:a) 网络管理器存在问题,重新启动后会恢复到原始硬件 mac 地址 b) 停止然后重新启动网络管理器时,VPN 的 GUI 不再可见 c) 带交换机的 Macchanger 不工作或在启动时工作
因此我编写了一个如下脚本来构建随机 MAC 并将其分配给 wlan0
##################################################
#!/bin/bash
#add chars to the mac
this+=$(echo "obase=16; $(shuf -i 0-15 -n 1) " | bc )
this+=$(echo "obase=16; $(shuf -i 0-15 -n 1) " | bc )
this+=":"
this+=$(echo "obase=16; $(shuf -i 0-15 -n 1) " | bc )
this+=$(echo "obase=16; $(shuf -i 0-15 -n 1) " | bc )
this+=":"
this+=$(echo "obase=16; $(shuf -i 0-15 -n 1) " | bc )
this+=$(echo "obase=16; $(shuf -i 0-15 -n 1) " | bc )
this+=":"
this+=$(echo "obase=16; $(shuf -i 0-15 -n 1) " | bc )
this+=$(echo "obase=16; $(shuf -i 0-15 -n 1) " | bc )
this+=":"
this+=$(echo "obase=16; $(shuf -i 0-15 -n 1) " | bc )
this+=$(echo "obase=16; $(shuf -i 0-15 -n 1) " | bc )
this+=":"
this+=$(echo "obase=16; $(shuf -i 0-15 -n 1) " | bc )
this+=$(echo "obase=16; $(shuf -i 0-15 -n 1) " | bc )
sudo ifconfig wlan0 down
sudo ifconfig wlan0 hw ether $this
sudo ifconfig wlan0 up
######################################################
在网络管理器 GUI 中,取消选择“启用 wifi”,然后选择“启用 wifi”。您可以执行 ifconfig 来确认 mac 已更改。网络管理器仍然可见并可连接到您的 VPN。