CentOS 7 启动时强制 HWADDR 在 ifcfg-eth0 网络脚本中进行自我纠正

CentOS 7 启动时强制 HWADDR 在 ifcfg-eth0 网络脚本中进行自我纠正

问题:

我想找到一种方法,让 ifcfg-eth0 脚本中的 HWADDR 行在启动时验证/更新自身,以防在虚拟机克隆或副本发生时发生更改。有办法这样做吗?在 CentOS 6 中,从 ifcfg-eth0 脚本中删除 HWADDR 行使其更加动态,但我还没有找到一种方法来阻止 ifcfg-eth0 在 CentOS 7 中没有 HWADDR 行的情况下改回 ifcfg-eno1677776。提前寻求帮助!


背景

我正在通过 VMware Workstation 运行 CentOS 7.2.1511 虚拟机。默认情况下 CentOS 7 摆脱了以太网0其网络脚本的命名约定,现在配置为使用名为ifcfg-eno1677776或类似的东西。我有一个软件可以重重地依赖于以太网0命名方案。所以我重新配置了我的ifcfg-eno1677776脚本作者:

  1. 重命名/etc/sysconfig/network-scripts/ifcfg-eno1677776/etc/sysconfig/network-scripts/ifcfg-eth0
  2. 修改ifcfg-eth0是(从 获取 HWADDR /sys/class/net/eno1677776/address):

    BOOTPROTO=dhcp NAME=eth0 DEVICE=eth0 ONBOOT=yes NM_CONTROLLED=no HWADDR=00:0c:29:d6:d2:65

  3. 添加网络.ifnames=0到最后GRUB_CMDLINE_LINUX文件中的行/etc/sysconfig/grub

  4. 重新启动并运行 ifconfig (并庆祝!):

    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 10.176.15.148 netmask 255.255.252.0 broadcast 10.176.15.255 inet6 fe80::20c:29ff:fed6:d265 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:d6:d2:65 txqueuelen 1000 (Ethernet) RX packets 2141073 bytes 749959853 (715.2 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 65237 bytes 35352127 (33.7 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

每次启动时,这个 eth0 接口都会保留。然而,该虚拟机将在团队成员之间分发并最终交付给客户。这就是问题出现的地方。 VMware 的优点在于您可以克隆虚拟机的快照以进行分发,但这会更改虚拟机的 MAC 地址。


编辑:

您必须grub2-mkconfig -o /boot/grub2/grub.cfg在进行@larsks 下面建议的更改后运行才能使其发挥作用。为我工作!

答案1

最简单的解决方案可能是通过在内核命令行上设置以下选项来禁用“可预测设备命名”行为:

biosdevname=0 net.ifnames=0

完成此操作后,系统上的第一个以太网接口将被命名为eth0,第二个将被命名为eth1,等等。这已记录在案这里

完成此操作后,只需HWADDR从配置文件中删除该行,一切就应该按您的预期工作。

相关内容