![在 /etc/network/interfaces 中永久更改 Mac 地址](https://linux22.com/image/1150448/%E5%9C%A8%20%2Fetc%2Fnetwork%2Finterfaces%20%E4%B8%AD%E6%B0%B8%E4%B9%85%E6%9B%B4%E6%94%B9%20Mac%20%E5%9C%B0%E5%9D%80.png)
问题:
我如何才能具体更改enp3s0和wlp2s0通过/etc/network/interfaces
文件实现接口?我必须在里面包含什么代码?遗憾的是,我已经尝试了一段时间,但都没有成功。
详细说明:
因此我在网上找到了这篇很棒的文章,解释了如何通过/etc/network/interfaces
Ubuntu 上的文件永久更改 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 status
sudo macchanger -s enp10s0
调试:
sudo systemctl status
systemctl daemon-reload
sudo systemctl restart
https://medium.com/@benmorel/creating-a-linux-service-with-systemd-611b5c8b91d6