linux – RHEL / CENTOS6旋转MAC的接口命名和IP分配

前端之家收集整理的这篇文章主要介绍了linux – RHEL / CENTOS6旋转MAC的接口命名和IP分配前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
背景:

我正在创建一个RHEL6 OS磁盘映像,它可能会被传递到具有相同硬件的许多不同计算机(除了诸如MAC之类的序列号之外).图像已预先配置,并在系统设置后复制. (所以没有firstboot等)一旦将图像放置在HDD上,HDD可以放置在多个不同的计算机中.

我希望创建的所有网络接口都被命名为eth0而不管MAC.我已删除/修改了持久网络udev规则,以确保可用的单个网络接口名为eth0. (使用持久网络udev规则,eth *会随着驱动器在计算机之间传递而继续计数.)因此这是有效的.

问题陈述:

我还希望所有这些计算机都使用静态IP地址.即使没有连接到计算机的有效网络,我也需要分配IP地址.我修改了ifcfg-eth0来设置IP地址,但这是依赖于MAC的,所以当我将磁盘移动到另一台计算机时它不起作用. (据我所知,NetworkManager也依赖于MAC.)

如果ifcfg-eth0文件没有HWADDR行,那么它在计算机之间移动时工作正常.我在我的udev规则的末尾添加了一个RUN命令来运行一个脚本,该脚本将从ifcfg-eth0中删除HWADDR行,但这不起作用,因为我很确定文件系统在udev期间是只读的,所以它实际上无法修改ifcfg-eth0.

我希望计算机上的单个网络接口在启动时使用预先指定的IP地址,无论当前的MAC是什么.我认为我非常接近,但我似乎无法想出最后的位来强制它将IP地址分配给任何可用的接口.

编辑:

的ifcfg-eth0的:

DEVICE=eth0
IPADDR=10.10.10.10
BROADCAST=10.10.10.255
ONBOOT=yes
NAME=eth0
BOOTPROTO=none
NETMASK=255.255.255.0
TYPE=Ethernet
HWADDR=##:##:##:##:##:##
IPV6INIT=no
USERCTL=no
NM_CONTROLLED=no

如果HWADDR线路与计算机中的MAC匹配则正常.但是如果HWADDR行与启动时抱怨的内核不符,说:

Bringing up interface eth0:  Device eth0 has different MAC address than expected,ignoring.   [Failed]

如果HWADDR行在启动时不存在它可以正常工作,但它会在某个时刻自动填充该行,因此下次移动驱动器时它将无法工作.我想在udev期间使用sed并在启动时删除HWADDR行,但由于只读文件系统,我不认为这实际上是一个好主意(或可行).

解决方法

文件上设置不可变位,使其无法修改(不删除该位):

chattr i / etc / sysconfig / network-scripts / ifcfg-eth0

猜你在找的Linux相关文章