我们有一个带有 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-eth7
eth
我试过:
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
以下评论。