问题:
我想找到一种方法,让 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脚本作者:
- 重命名
/etc/sysconfig/network-scripts/ifcfg-eno1677776
为/etc/sysconfig/network-scripts/ifcfg-eth0
修改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
添加网络.ifnames=0到最后GRUB_CMDLINE_LINUX文件中的行
/etc/sysconfig/grub
。重新启动并运行 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
从配置文件中删除该行,一切就应该按您的预期工作。