如何在 Linux 上欺骗网络接口的 MAC 地址
48 位 MAC 地址(例如 08:4f:b5:05:56:a0)是与物理网络接口关联的全局唯一标识符,由相应网络接口卡的制造商分配。 MAC地址中的高24位(也称为OUI或“组织唯一标识符”)唯一标识发布该MAC地址的组织,因此所有现有MAC地址之间不会发生冲突。
虽然 MAC 地址是制造商分配的硬件地址,但实际上用户可以修改它。这种做法通常称为MAC 地址欺骗。在本教程中,我将展示如何欺骗 Linux 上网络接口的 MAC 地址。
为什么要欺骗 MAC 地址?
您可能出于多种技术原因想要更改 MAC 地址。一些 ISP 通过用户家庭路由器的 MAC 地址来验证用户的互联网连接。假设您的路由器在这种情况下坏了。当您的 ISP 使用新路由器重新建立互联网访问时,您可以通过将计算机的 MAC 地址更改为损坏的路由器的 MAC 地址来暂时恢复互联网访问。
许多 DHCP 服务器根据 MAC 地址租用 IP 地址。假设出于某种原因您需要通过 DHCP 获取与当前 IP 地址不同的 IP 地址。然后,您可以欺骗您的 MAC 地址,通过 DHCP 获取新的 IP 地址,而不必等待当前的 DHCP 租约到期(谁知道什么时候到期)。
除了技术原因之外,您希望隐藏真实 MAC 地址的原因还有合法的隐私和安全原因。与您的第 3 层 IP 地址不同,您的 MAC 地址可以根据您所连接的网络而变化,无论您身在何处,您的 MAC 地址都可以唯一地识别您的身份。你可以说我是偏执狂,但你知道这对你的隐私意味着什么。还有一种名为“捎带”的众所周知的漏洞,即黑客在公共 WiFi 网络上窥探您的 MAC 地址,并尝试在您离开时使用您的 MAC 地址来冒充您。
如何临时欺骗 MAC 地址
在 Linux 上,您可以在运行时临时切换 MAC 地址。在这种情况下,更改后的 MAC 地址将在重新启动时恢复为原始地址。请注意,在 MAC 地址转换期间,您将暂时失去网络连接。在 Linux 上,有几种简单的方法可以在运行时更改 MAC 地址。
方法一:iproute2
$ sudo ip link set dev eth0 down
$ sudo ip link set dev eth0 address 00:00:00:00:00:01
$ sudo ip link set dev eth0 up
方法二:macchanger
名为 macchanger
的命令行实用程序允许您更改已知供应商列表中的 MAC 地址。
要在 Ubuntu、Debian 或 Linux Mint 上安装 macchanger:
$ sudo apt-get install macchanger
要在 Fedora 上安装 macchanger:
$ sudo yum install macchanger
To install macchanger
on CentOS or RHEL:
$ wget http://ftp.club.cc.cmu.edu/pub/gnu/macchanger/macchanger-1.6.0.tar.gz
$ tar xvfvz macchanger-1.6.0.tar.gz
$ cd macchanger-1.6.0
$ ./configure
$ make
$ sudo make install
以下示例是 macchanger 的一些高级用法。借助 macchanger
,您不再需要手动停用/重新激活网络接口。
要将 MAC 地址欺骗为不同的值:
$ sudo macchanger --mac=00:00:00:00:00:01 eth0
将 MAC 地址欺骗为随机值,同时保留相同的 OUI:
$ sudo macchanger -e eth0
将 MAC 地址欺骗为完全随机的值:
$ sudo macchanger -r eth0
要获取与特定供应商(例如 Juniper)关联的所有 MAC 地址 OUI:
$ macchanger -l | grep -i juniper

要显示原始永久和欺骗的 MAC 地址:
$ macchanger -s eth0
Current MAC: 56:95:ac:ee:6e:77 (unknown)
Permanent MAC: 00:0c:29:97:68:02 (Vmware, Inc.)
如何永久欺骗 MAC 地址
如果您想在重新启动后永久欺骗您的 MAC 地址,您可以在接口配置文件中指定欺骗的 MAC 地址。例如,如果您要更改 eth0
的 MAC 地址,请执行以下操作。
在没有网络管理器的 CentOS/RHEL 或 Fedora 上:
$ sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
MACADDR=00:00:00:00:00:01
在带有网络管理器的 CentOS/RHEL、Fedora、Debian/Ubuntu 上:
在这些系统上,您可以在 /etc/NetworkManager/dispatcher.d
中创建自定义启动脚本,如下所示。我假设您已经安装了 macchanger
。
$ sudo vi /etc/NetworkManager/dispatcher.d/000-changemac
#!/bin/bash
case "$2" in
up)
macchanger --mac=00:00:00:00:00:01 "$1"
;;
esac
$ sudo chmod 755 /etc/NetworkManager/dispatcher.d/000-changemac
在没有网络管理器的 Debian/Ubuntu 上:
在 /etc/network/if-up.d/
中创建自定义启动脚本,如下所示。
$ sudo vi /etc/network/if-up.d/changemac
#!/bin/sh
if [ "$IFACE" = eth0 ]; then
ip link set dev "$IFACE" address 00:00:00:00:00:01
fi
$ sudo chmod 755 /etc/network/if-up.d/changemac