最近正在研究iSCSI的多路径问题,在suse linux上测试一下,不料遇到了一个棘手的问题。

主机1 系统suse enterprise 11 sp1 两块网卡,

eht0  192.168.10.11

eth1  192.168.10.12

 

主机2 系统oracle enterprise linux 5.5 两块网卡,

eht0  192.168.10.54

eth1  192.168.10.55

使用同一台交换机连接这4块网卡。

在主机1上用带源地址的ping命令测试连通性,同时执行下面的ping命令。

suse11:~ # ping -I eth0 -s 65000 192.168.10.54    用主机1的eth0去ping主机2的eth0,通畅。(简称p1)

 

suse11:~ # ping -I eth1 -s 65000 192.168.10.55    用主机1的eth1去ping主机2的eth1, 通畅。(简称p2)

实验1:断开主机1上eth1的连接,p2的ping超时,p1的ping保持通畅。测试正常。
实验2:断开主机1上eth0的连接,p1的ping超时,p2的ping也超时。测试不正常。
经过反复实验,观察网卡状态,和在网上搜索相关问题得到答案:linux下如果多块网卡的ip被设置成同网段,所有的数据包会通过一块网卡发出去,当断开这条链路,数据包默认不会自动切换到正常的网卡上。
可是我在主机2上做相同的实验却获得了成功。

在主机1上用带源地址的ping命令测试连通性,同时执行下面的ping命令。

[root@OEL5 ~]# ping -I eth0 -s 65000 192.168.10.11  

 用主机2的eth0去ping主机1的eth0,通畅。(简称p3)

 

[root@OEL5 ~]# ping -I eth1 -s 65000 192.168.10.12  

 用主机2的eth1去ping主机1的eth1, 通畅。(简称p4)

实验3:断开主机2上eth1的连接,p4的ping超时,p3的ping保持通畅。测试正常。
实验4:断开主机2上eth0的连接,p3的ping超时,p4的ping保持通畅。测试正常。
有可能oracle enterprise linux 5.5在网络的设置上改动了什么地方,让他和suse有所不同。在google和baidu两位大哥那里我已经问他们好几天了,给我一些解决方法都不太好使,哪位做过这方面的研究并且对suse linux有了解的大虾给我个解决方法。