如何在网络设备启动或关闭时自动更改 MAC 地址?

如何在网络设备启动或关闭时自动更改 MAC 地址?

macchanger 自动脚本不起作用。

我问之前在这里搜索过,结果发现只能运行 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
  • 复制以下脚本内容并使用nanoShift+Insert粘贴;Ctrl+OEnter保存;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 更改功能。

以下是该脚本工作原理的演示:

在此处输入图片描述

参考:

相关内容