自动更改MAC 16.04

所以我遇到了一个常见的问题,即eth0被称为其他东西(enpXsX)与systemd。 所以我尝试创建文件/etc/udev/rules.d/10-network.rules。 这很好用。 问题是我需要使用我的服务器的这个精确副本并使用SD卡定期在几个物理服务器之间移动以进行测试。 因为10-network.rules需要MAC地址,所以每次我将卡插入新设备时它都会不断变化。 我创建了一个自动更改它的脚本,并且它在启动时作为服务(changeMAC.service)运行。

这项服务运行良好。 不幸的是,尽管在networking.service启动之前更改了MAC地址,但网络总是失败。 为了使它工作,我必须重新启动。 我需要它在第一次启动时正确启动。

使用systemd-analyze图,我可以告诉changeMAC.service实际上是在networking.service之前完成的。 我认为问题可能是它需要尽快开始。 但是我目前只有一张SD卡可以一次性启动。 但是,当我拍摄该图像并将其放在我的计算机上以在VirtualBox中运行时,它又回到需要重新启动的状态。 我找不到SD卡和vhd之间的区别。

我也尝试过使用ifup,ifdown,/ etc / init.d / network restart,systemctl start networking.service强制联网重新评估其情况并查看10-network.rules。 前三个产生错误并且不会执行,最后一个将执行但network.service将再次无法启动。

所以我需要知道如何让changeMAC.service及时运行,以便谁需要10-network.rules可以得到它,或者我需要知道如何强制谁需要10-network.rules重新启动而不重新启动整个系统。

您可以在/etc/default/grubGRUB_CMDLINE_LINUX_DEFAULT添加一个选项以关闭预测名称。

 GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0" 

你可以保留该行的其他选项。 这样您就不必担心其中包含设置MAC地址的10-network.rules文件。

确保在重新引导主机之前修改该行后更新grub。

 sudo update-grub 

希望这可以帮助!