RHEL:为网络接口创建稳定名称

RHEL:为网络接口创建稳定名称

我们有一个带有 8 个接口的 RHEL 5.5 盒子。而且eth接口命名也很随意。有时eth0出现在第七个物理端口上,有时出现在另一个物理端口上。

我们希望命名按照 PCI 总线的顺序。我做了研究,发现

cat /sys/devices/pci0000\:00/0000\:00\:1e.0/0000\:07\:07.0/net\:eth0/address\

该位置具有设备的 MAC 地址eth。因此,如果我从该 PCI 总线位置按顺序获取“地址”并将它们按 PCI 总线位置的顺序放入,我的ifconfig-eth0命名将是稳定的。ifconfig-eth7eth

我试过:

find /sys/devices/ -name "address"

但它不会带来任何结果。我不知道为什么……

这里有什么帮助吗?

答案1

您是否尝试过将 MAC 地址包含在各种以太网设备的不同 ifcfg-ethX 文件中?此外,您还可以通过 udev 文件控制哪个设备获得哪个 ethX 句柄60-net.rules

例如

# /etc/sysconfig/network-scripts/ifcfg-eth0

# Intel Corporation 82573E Gigabit Ethernet Controller (Copper)
DEVICE=eth0
BOOTPROTO=static
DHCPCLASS=
HWADDR=00:30:48:56:A6:2E
IPADDR=10.10.10.15
NETMASK=255.255.255.192
ONBOOT=yes

然后在文件中/etc/udev/rules.d/60-net.rules

KERNEL=="eth*", SYSFS{address}=="00:30:48:56:A6:2E", NAME="eth0"

我相信此信息用于保持设备从启动到启动的配置一致。

配置多个 ethX 设备

要处理更多设备,只需设置每个设备相应的/etc/sysconfig/network-scripts/ifcfg-ethX文件,并向该60-net.rules文件添加另一行。

KERNEL=="eth*", SYSFS{address}=="00:30:48:56:A6:2E", NAME="eth0"
KERNEL=="eth*", SYSFS{address}=="00:30:48:56:A6:2F", NAME="eth1"

以上是在 CentOS 5.X 中的操作方法。该文件在 CentOS 6.x 中更改为70-persistent-net.rules,并且格式也略有不同:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="54:52:00:ff:ff:dd", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

参考

答案2

据我所知,您需要一个相对较新的版本。红帽6似乎支持这一点(一致的网络设备命名)虽然确实需要特别启用在大多数系统上。Fedora 15+也这样做,并且到了 Fedora 17,它似乎成为默认模式。

我不知道这个更改何时被完全采用,对于这个问题更重要的是,是否有任何方法可以将其向后移植到 RHEL 5 系列。至少这是一个开始。

答案3

您应该通过以下方式获取硬件地址:

ifconfig -a | grep HWaddr

也许:

tail -v /sys/devices/*/*/net/eth*/address
# or
tail -v /sys/devices/*/*/*/net/eth*/address

find应该已经匹配了。

另请检查:

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

以下评论

相关内容