在 /etc/network/interfaces 中永久更改 Mac 地址

在 /etc/network/interfaces 中永久更改 Mac 地址

问题:

我如何才能具体更改enp3s0wlp2s0通过/etc/network/interfaces文件实现接口?我必须在里面包含什么代码?遗憾的是,我已经尝试了一段时间,但都没有成功。


详细说明:

因此我在网上找到了这篇很棒的文章,解释了如何通过/etc/network/interfacesUbuntu 上的文件永久更改 Mac 地址。

文章中写道:

在 Debian、Ubuntu 和类似系统上,将以下内容放在 /etc/network/interfaces 的相应部分(在 iface 节内,例如,紧接着网关行),以便在启动网络设备时设置 MAC 地址:

硬件地址 以太 02:01:02:03:04:08

来源:更改你的 MAC 地址/Linux—维基百科

现在,当我使用以下代码时:

cat /etc/network/interfaces

我得到以下输出

# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

当我在 ubuntu 上执行 ifconfig 时,我得到了 3 个不同的接口:

  • enp3s0

  • wlp2s0

我想更改所有接口 (enp3s0、wlp2s0) 的 mac 地址 (lo 是环回,所以不需要),但我不熟悉文件中的命令/etc/network/interfaces。我一直在网上看教程,但似乎无法正确操作,之后我的电脑甚至开始出现几次非常奇怪的行为。

答案1

首先,您链接的指南。这是一本不错的指南。遗憾的是,它也会给不同类型的连接带来一些麻烦。并且通常情况下,/etc/network/interfaces除了环回接口之外,其余部分都保持不变,而网络管理器会管理您的连接。


有几个原因,主要是因为/etc/network/interfaces如果你切换 wifi 网络,配置无线会很麻烦,因为你必须编辑配置和重新加载手动加载(有时直到您重新启动后才会加载)。这也非常麻烦,因为您必须将连接数据硬编码为wpa2-supplicant无线网络名称、密码(纯文本),有时甚至是 wifi 频段和频道号。所有这些都很麻烦,因为您必须更改它才能切换到其他网络。

我确实提到过,使用/etc/network/interfaces将阻止网络管理器处理您的连接。网络管理器的工作方式是,它取得未在中定义的网络设备的“所有权”,/etc/network/interfaces并动态更新每个设备的配置,或者使用过去建立的旧连接的预定义连接配置文件。如果您决定走这/etc/network/interfaces条路,将要必须调整您连接互联网的方式,下面我给出了一些有关此方式的 wifi 连接的描述。以及一个更有用的链接。


以太网并不是那么糟糕。以太网实际上可以很好地与此配合使用,因为您可以简单地将以太网设置为 DHCP 连接(动态分配的 IP 地址,而不是静态配置;请注意,为了更容易理解,我在这里使用“eth0”而不是您的实际设备):

auto eth0
iface eth0 inet dhcp
    hwaddress ether 01:23:45:67:89:0A

唯一令人头疼的是如果你有静态 IP 地址而不是 DHCP 处理的 IP 地址。但这仍然很简单。


然而,在无线网络上,情况就不那么好了。步骤很乱,通常涉及iwlist/etc/network/interfaces配置、的高级配置wpa2_supplicant等。对于标准的住宅级共享密码网络,当您完成后,您最终会得到如下所示的结果,但这仅适用于您的一个无线网络:

auto wlan0
iface wlan0 inet dhcp
    hwaddress ether 00:11:22:33:44:55
    wpa-ssid WIFI_NAME
    wpa-psk HASHED_PASSWORD

当您需要切换网络或使用具有身份验证后端的企业级连接(称为 WPA2-EAP 或 WPA2 802.1x Enterprise,或其他名称)时,它会变得更加复杂,我不会在此详细介绍。

您还会注意到,我没有复制获取哈希密码的步骤。这是我的错,我时间紧迫,但这一切都在下一段链接的 wiki 中(来自 Debian,但它有效)。

Debian Wiki 上的 Wifi 以及如何在命令行上使用它是这里无线部分的大部分信息的来源,由于它们是无头的,我个人必须在两个 Raspberry Pi 设备上手动进行设置,我可以证明这是设置无线最痛苦的方法。


这里还有第二个要素:网络设备 MAC 地址被硬编码到设备中。您永远无法“永久”更改设备的 MAC 地址。MAC/etc/network/interfaces更改器和网络管理器(通过“克隆 MAC 地址”功能)的作用是暂时地更改宣传的以太网地址,但它们不会更改核心硬件地址。您可以使其与网络管理器一起工作,但您必须为您使用的每个 wifi 网络手动配置它。MAC 更改器,类似情况,它需要在启动时运行。在 /etc/network/interfaces启动时执行此操作,但您会失去网络管理器对设备的管理。

答案2

假设您不使用 NetworkManager 来配置您的连接,我认为这会起作用:

# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
  iface lo inet loopback

iface enp3s0
  hwaddress ether 02:01:02:03:04:08

iface wlp2s0
  hwaddress ether 02:01:02:03:04:09

答案3

这将创建一个 systemd 服务,用于关闭您的网卡、更改您的 mac 地址、打开您的网卡。此服务会在您的计算机启动时运行。

apt install macchanger -y

创建 unitd 服务sudo vim /etc/systemd/system/[email protected] 将下面的所有位置的 enp10s0 更改为您的无线网卡名称。更改您要使用的 mac 地址。可以在 中找到ip a

[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
ExecStartPre=/usr/bin/ip link set dev enp10s0 down
ExecStart=/usr/bin/macchanger -m 39:31:2E:60:10:6D enp10s0
ExecStartPost=/usr/bin/ip link set dev enp10s0 up
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

启动它 检查它是否与和一起工作sudo systemctl enable [email protected]sudo systemctl statussudo macchanger -s enp10s0

调试: sudo systemctl status systemctl daemon-reload sudo systemctl restart https://medium.com/@benmorel/creating-a-linux-service-with-systemd-611b5c8b91d6

相关内容