我正在使用 Ubuntu 服务器 12.04,该服务器有 6 个 NIC,分为 2 个包:
- eth0 和 eth2 使用绑定模式 1 进行捆绑,接口名称为 bond0,IP 为 [network].8
- eth1、eth3、eth4 和 eth5 使用绑定模式 4 (802.3ad) 进行捆绑,接口名称为 bond1
bond1 将用于将虚拟机连接到我们的网络:它通过具有 IP [网络] 的 br0 桥接。
现在,当我从我们的网络 ping [network].5 时,一切似乎正常,但我们的虚拟机无法访问网络。
经过一段时间的调查,我注意到 br0 的 IP([network].5)与 bond1 的 MAC 地址相关联,即:
arping <[network].5>
返回
Unicast reply from <[network].5> [<bond0's MAC address>] 0.710ms
另外,当我 ping [network].5 时:
tcpdump -i br0 icmp
显示无 ICMP 流量,
tcpdump -i bond1
也没有显示任何流量,但是
tcpdump -i bond0
显示我使用 ping 发送的 ICMP 数据包。
很明显,数据包被发送到了错误的管道。我的问题是:为什么会这样?我该如何解决这个问题?
这是我的 /etc/network/interfaces 文件的内容:
# bond0 part :
auto eth0
iface eth0 inet manual
bond-master bond0
auto eth2
iface eth2 inet manual
bond-master bond0
auto bond0
iface bond0 inet static
address [network].8
gateway [network].254
netmask 255.255.254.0
# bonding mode 1 :
bond-mode balance-rr
bond-slaves none
auto eth1
iface eth1 inet manual
bond-master bond1
auto eth3
iface eth3 inet manual
bond-master bond1
# bond1 and br0 part :
auto eth4
iface eth4 inet manual
bond-master bond1
auto eth5
iface eth5 inet manual
bond-master bond1
auto bond1
iface bond1 inet manual
# bonding mode 4 :
bond-mode 802.3ad
bond-slaves none
bond-miimon 100
bond-downdelay 200
bond-updelay 200
bond_xmit_hash_policy layer2
bond_lacp_rate fast
auto br0
iface br0 inet static
address [network].5
netmask 255.255.254.0
gateway [network].254
bridge_ports bond1
bridge_maxwait 5
bridge_stp off
bridge_fd 0
请注意:
- 交换机端已配置 802.3ad 链路聚合
- 我们已多次验证是否连接了正确的端口
- 同样的问题发生在两台具有完全相同硬件和软件配置的服务器上
[编辑]经过几次重启后,情况正好相反:bond0 与 bond1 的 mac 地址相关联。这似乎是随机发生的。当它发生时,网桥后面的虚拟机可以访问我们的网络和互联网。
答案1
经过进一步搜索后,我发现我的问题的根源就是这里讨论的内容:
Serverfault:arp 响应总是从单个 NIC 发出
由于这个问题更加精确,并且有多个答案,所以如果你有和我同样的问题,你应该去看看