重启后绑定网络接口不可用

重启后绑定网络接口不可用

我有一些具有多个网络接口的服务器,设置了绑定和一些 VLAN。每当我重新启动服务器时,其他服务器都无法访问其中一个绑定网络接口,也无法从该接口发出任何流量。但是,该接口上 ifconfig 的状态确实表明链路已启动。此时只需重新启动网络即可使一切恢复正常。

事实上,在我重新启动网络后一切都按预期工作,这让我认为我的配置是正确的,但启动顺序中的某些内容在重新启动时无法正常工作,但在重新启动网络时得到了纠正。

我有 7 台相同的服务器,具有相同的设置(除了 IP 地址不同),并且每次重新启动时,所有服务器都会发生这种情况。

有关设置的更多详细信息:

  • 服务器:HP ProLiant DL380
  • 6 个网络接口,设置为 3 个绑定接口,名称为:bondm、bondr、bondt。
  • 4 个内置接口,其余 2 个位于附加 PCI 卡中
  • bondm配置了2个VLAN
  • bondm 用作默认路由
  • bondm 设置为使用 eth0 和 eth2
  • bondm 是重启时失败的接口

更新: 我使用完全相同的配置和 kickstart 文件重新测试了这一点,但使用的是 SL 6.2 与 6.3。在 6.2 中一切都很好,但在 6.3 中我遇到了这种行为。是因为内核不同吗?

以下是 /etc/sysconfig/network-scripts 中的一些相关配置文件:

$ cat ifcfg-eth0 ifcfg-eth2 ifcfg-bondm ifcfg-bondm.132 ifcfg-bondm.832 
DEVICE=eth0
BOOTPROTO=none
NM_CONTROLLED=no
ONBOOT=yes
TYPE=Ethernet
HWADDR=44:1E:A1:03:71:C4
SLAVE=yes
MASTER=bondm
ETHTOOL_OPTS="-s eth0 speed 1000 duplex full"

DEVICE=eth2
HWADDR=44:1E:A1:03:71:C8
NM_CONTROLLED=no
ONBOOT=yes
SLAVE=yes
MASTER=bondm
ETHTOOL_OPTS="-s eth2 speed 1000 duplex full"

DEVICE=bondm
BOOTPROTO=none
NM_CONTROLLED=no
ONBOOT=yes
TYPE=Ethernet
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
BONDING_OPTS="mode=active-backup miimon=100"

DEVICE=bondm.132
BOOTPROTO=none
NM_CONTROLLED=no
ONBOOT=yes
TYPE=Ethernet
IPADDR=192.168.13.19
PREFIX=28
GATEWAY=192.168.13.17
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
BONDING_OPTS="mode=active-backup miimon=100"
VLAN=yes

DEVICE=bondm.832
BOOTPROTO=none
NM_CONTROLLED=no
ONBOOT=yes
TYPE=Ethernet
IPADDR=10.123.94.69
PREFIX=28
DEFROUTE=no
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
BONDING_OPTS="mode=active-backup miimon=100"
VLAN=yes

答案1

modprobe.d

根据此说明RHEL6站点您是否创建了该文件/etc/modprobe.d/bonding.conf并将您的bondm设备添加到该文件中?

alias bondm bonding

缺少第二个网卡的类型

另外,我不是重要的,而是你的以太坊2设备缺少此行:

TYPE=Ethernet

禁用网络管理器?

您是否尝试过禁用 NetworkManager 服务?尝试一下,看看问题是否仍然存在,重新启动以确认。

% chkconfig off NetworkManager

UDEV

您在这些机器上使用 udev 吗?我遇到了 udev 在这里填充文件/etc/udev/rules.d/70-persistent-net.rules.该文件在机器上有 NIC 的冗余条目,我必须手动编辑该文件。我的看起来像这样:

# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# net device () (custom name provided by external tool)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="54:52:00:ff:ff:f5", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

UDEV 根据 MA​​C 地址分配设备,您可以强制它根据 NIC 在 PCI 总线中占据的位置进行分配。

您可以使用此命令来确定 NIC 的 PCI 信息:

% for i in /sys/class/net/*;do printf "device: %6s - %s\n" `basename $i` `readlink -f $i`;done
device:    br0 - /sys/devices/virtual/net/br0
device:   eth0 - /sys/devices/pci0000:00/0000:00:1c.5/0000:09:00.0/net/eth0
device:   eth1 - /sys/devices/pci0000:00/0000:00:2d.5/0000:03:00.0/net/eth1
device:     lo - /sys/devices/virtual/net/lo

根据此输出,您需要填充自己的 udev 规则文件:

% cat > /etc/udev/rules.d/70-persistent-net.rules << EOF
ACTION=="add", SUBSYSTEM=="net", BUS=="pci", KERNELS=="0000:00:1c.5", \
    NAME="eth0"
ACTION=="add", SUBSYSTEM=="net", BUS=="pci", KERNELS=="0000:00:2d.5", \
    NAME="eth1"
EOF

笔记:另请确保删除/禁用任何可能已尝试设置 NIC 的现有 udev 规则文件。

CentOS 6.3 的错误

我遇到了这个漏洞在 CentOS 问题跟踪器上。 6.3 的发行说明也列出了它。

摘自Centos 6.3 发行说明:

在绑定 (802.3ad) 接口和某些 NIC 上使用 802.1q VLANing 时似乎存在问题。有关详细信息,请参阅此上游 bugzilla 条目和此 CentOS bugzilla 条目。随 6.3 一起发布的 CentOS-Plus 内核包含修复此问题的补丁。从内核 2.6.32-279.2.1 开始,此问题已得到修复。

这个问题听起来很像您一直在处理的问题。你运行什么内核? ( uname -a)。

相关内容