在 Linux VM 中更改 MAC 地址的正确方法?

在 Linux VM 中更改 MAC 地址的正确方法?

我尝试在 ubuntu VM(virtualbox)中更改 MAC 地址,但之后在启动过程中出现很多错误,并且我没有互联网连接。

然后我看到接口被重命名为 eth1,所以我编辑 /etc/network/interfaces 将 eth0 更改为 eth1,重新启动(不知道如何重新启动网络),现在启动速度更快,互联网运行良好。

但是现在每次登录后,我都会收到 1 或 2 条错误消息,但什么都没有说,他们只会问我是否要报告。

所以我想知道,是否有适当的方法来改变 MAC 地址,以避免这些问题?

答案1

如果您在 VirtualBox 的高级网络设置中执行此操作,则很可能使用“正确”方法来更改 MAC 地址。但是,Zuul 的另一个答案中的临时更改可能最适合您的目的,因为它会更改 MAC 而不会引起太多其他问题 - 但是它在重启后无法继续存在。

在 VirtualBox 中更改它当然会在重启后保留,但您面临的问题在于udev。这是查看硬件并设置硬件的过程/dev(或可能需要执行的任何其他操作)。它默认执行的一件事是尝试维护网络接口卡 [nics] 的持久名称。这是因为当您有多个 nic 时,您希望它们始终具有相同的 ethX 名称,以便您的/etc/network/interfaces配置每次启动时都针对正确的 nic。操作系统不能依赖它们每次都物理地位于同一位置 - 例如,您可能会移动它们,或者某些系统在每次启动时不会按照相同的顺序报告它们的物理连接。

因此udev使用基于网卡 MAC 地址的持久性规则。如果它有一个具有已知 MAC 地址的 eth1 条目,并且出现了具有不同 MAC 地址的卡,它将为接口分配不同的 ethX 设备名称。

为了解决这个问题,你只需要更新规则udev。编辑:

vi /etc/udev/rules.d/70-persistent-net.rules

并查找包含您当前 MAC 地址的行:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="11:22:33:44:55:66", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

如果您在此处将 MAC 地址更改为在 VirtualBox 设置中选择的新地址,则它将在下次启动时保留相同的 ethX dev 编号。

最好的顺序可能是先在这里编辑它,然后关闭 VM,然后编辑 VB MAC 设置,然后启动。

答案2

您可以使用以下 4 个简单步骤更改 MAC 地址是否配置

打开终端(键盘快捷键:ctrl++ altt

  1. 查找当前的 mac 地址:

    ifconfig | grep HWaddr
    
  2. 关闭接口(假设它用于eth0下一步)

    ifconfig eth0 down
    
  3. 设置新的mac地址:

    ifconfig eth0 hw ether 00:1E:68:35:FF:91
    
  4. 标志导致接口被激活:

    ifconfig eth0 up
    

现在你可以重新检查你的接口 mac 地址:

ifconfig eth0 |grep HWaddr

笔记:您可以选择任何 48 位十六进制地址作为您的 MAC 地址。


为了完整性,您可以将步骤 2 和 3 合并为一行:

ifconfig eth0 down hw ether 00:00:00:00:00:01

相关内容