如何在Linux中永久更改MAC地址

本文介绍如何永久更改/欺骗网络接口MAC地址。为此, Mac Changer用于操纵MAC地址的实用程序,它创建一个在引导时自动启动的systemd单元。

我在本文中用于更改MAC地址的工具Macchanger提供了一项服务,询问我是否每次计算机启动时都更改MAC,但这在Ubuntu 18.04上不起作用。由于Macchanger所做的更改将在系统重新启动时被重置,因此本文包含创建systemd单元的步骤,该单元将在Linux计算机启动时自动运行Macchanger并每次更改MAC地址。我是要使用本指南,显然要在Linux系统上使用systemd。1.安装Macchanger
Macchanger必须位于主要Linux发行版的存储库中。要在Debian / Ubuntu / Linux Mint上安装,请使用以下命令:

sudo apt install macchanger

2.查找要更改其MAC地址的网络接口。
您可以为此使用以下命令:

ifconfig -a

如果您的系统无法正常运行,则可以运行以下命令。

ip link show

网络接口将如下所示:

  • 为了 ifocnfig -a
$ ifconfig -a
enp10s0: flags=4163  mtu 1500
        inet 192.168.1.211  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe60::cc24:29cf:2c1:1c5a  prefixlen 64  scopeid 0x20
        ether 1d:21:da:ab:1d:71  txqueuelen 1000  (Ethernet)
        RX packets 164861  bytes 215658240 (215.6 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 45118  bytes 8577639 (8.5 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 265  bytes 20133 (20.1 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 265  bytes 20133 (20.1 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlp3s0: flags=4098  mtu 1500
        ether 1e:14:57:1c:66:11  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  • 为了 ip link show
$ ip link show
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp10s0:  mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 1d:21:da:ab:1d:71 brd ff:ff:ff:ff:ff:ff
3: wlp3s0:  mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
    link/ether 1e:14:57:1c:66:11 brd ff:ff:ff:ff:ff:ff

这是有线网络接口 enp10s0 无线网络接口 wlp3s0 (之前, eth0,1等用于有线接口, wlan0,1等无线)。记下欺骗MAC地址的网络接口。 3。检查Macchanger是否在您的系统上实际工作
在创建一个在每次重新启动时自动更改MAC地址的systemd unity之前,请检查Macchanger是否可以实际更改MAC地址(请查看MAC地址是否由于某些原因而无效)。是的。要临时更改MAC地址(系统重新启动后,更改将被撤消),请按以下方式运行Macchanger:

sudo macchanger -r NETWORK-INTERFACE

NETWORK-INTERFACE 修改本文第2步中列出的MAC的网络接口(例如enp10s0,wlp3s0)。
如果Macchanger工作, -r 该选项将MAC更改为随机MAC地址,并且该命令应打印原始MAC地址和新MAC地址。创建一个systemd单元,以在每次系统引导时自动运行Macchanger(每次系统引导时MAC地址都会更改)
建立 /etc/systemd/system/[email protected] 在文本编辑器中以root身份打开systemd单位文件。

sudo touch /etc/systemd/system/[email protected]
gedit admin:///etc/systemd/system/[email protected]

如果您尚未安装Gedit,请将上述命令中的Gedit替换为系统上安装的另一个文本编辑器。
粘贴以下内容 [email protected] 档案:

[Unit]
Description=changes mac for %I
Wants=network.target
Before=network.target
BindsTo=sys-subsystem-net-devices-%i.device
After=sys-subsystem-net-devices-%i.device

[Service]
Type=oneshot
ExecStart=/usr/bin/macchanger -r %I
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

系统单位是 macchanger -r 更改MAC。 -r 设置一个完全随机的MAC地址。你可以改变 -r-e 更改MAC但保留原始NIC供应商字节 -a 例如,设置相同类型的随机供应商MAC。您可以通过运行以下命令查看所有可用选项:

macchanger --help

您还可以设置自定义的非随机MAC地址。为此 ExecStart=/usr/bin/macchanger -r %I 行到这样的东西:

ExecStart=/usr/bin/macchanger --mac=XX:XX:XX:XX:XX:XX %I

交换 XX:XX:XX:XX:XX:XX 使用新的MAC地址5。启用Macchanger systemd服务
在启动时启用systemd服务的时间。为此,请使用:

sudo systemctl enable [email protected]

交换 enp10s0 使用步骤2中的网络地址。
您可以使用同一命令来启用多个网络接口的MAC地址更改。重新启动系统
现在为网络接口配置了新的MAC地址。有关如何查找旧(原始)MAC地址和新MAC地址的信息,请参见下文。

如何查找原始和新的MAC地址

您可以使用Macchanger通过运行以下命令来查找原始MAC地址和新MAC地址:

macchanger -s NETWORK-INTERFACE

哪里 NETWORK-INTERFACE 在步骤2中使用命令找到了网络接口。
范例:

$ macchanger -s enp10s0
Current MAC:   1d:21:da:ab:1d:71 (unknown)
Permanent MAC: 72:ab:3d:89:88:88 (Intel Corporate)

如何在每次systemd重新启动时禁用MAC更改

要撤消更改,请首先禁用systemd MAC更改程序服务。

sudo systemctl disable [email protected]

交换 enp10s0 步骤2中的网络地址(来自初始设置过程)。对先前已启用该服务的每个网络接口执行此操作。
现在,您可以删除MAC changer systemd服务文件。

sudo rm /etc/systemd/system/[email protected]
Sidebar