最近项目中碰到这样一个场景,一个设备有2个独立的网卡(独立的mac控制器,独立的PHY芯片),但是2个网口上网出现下面这些现象:
1. 如果2个网卡配置的IP在同一网段,同一网关
网络配置为 eth0 10.3.2.10, eth1 10.3.2.11,网关都为10.3.2.254, 子网掩码为255.255.255.0, 2个网线都接上网络时候,2个网卡都可以上网,
外面也可以ping通2个IP,telnet,ssh也可以访问此设备,但是如果把eth0网线拔掉,则eth1不能上网, 把eth1拔掉,eth0上网不受影响。
2. 如果2个网卡配置的IP在不同网段,不同网关(比如实验室环境左右2边电脑在2个网段)
网络配置为 eth0 10.3.2.10,网关为10.3.2.254, eth1 10.3.3.11,网关为10.3.3.254, 子网掩码为255.255.255.0, 2个网线都接上网络时候,
2个网卡都可以上网,外面也可以ping通2个IP,telnet,ssh也可以访问此设备,但是如果把eth0网线拔掉,则eth1如果Ping eth0网段地址, 则不通,
如果把eth0 ifconfig eth0 down掉后,eth1则可Ping eth0网段地址。
最开始以为是网卡驱动没有适配好,后来反复实验确定了上述2个现象后,和同事,技术支持讨论后,怀疑是路由策略问题,
从下面这个现象确认了是路由问题,
同一网段场景,eth0网线拔掉,eth1网线接上,在串口ping 10.3.2.100, 发现如下回复来自 eth0 IP 10.3.2.10
~# ping 10.3.2.100
PING 10.3.2.100 (10.3.2.100) 56(84) bytes of data.
From 10.3.2.10 icmp_seq=1 Destination Host Unreachable
From 10.3.2.10 icmp_seq=2 Destination Host Unreachable
From 10.3.2.10 icmp_seq=3 Destination Host Unreachable
此时eth0物理网线是没接的,eth1网线是接上的,我们期望是通过eth1 IP 10.3.2.11能够ping通同网段地址10.3.2.100,
从上面结果看,当我们输入ping命令时候,icmp包实际是通过eth0 IP 10.3.2.10发出去,由于eth0是down的,所以此时出现不通现象。
此时可以先添加一条路由如下, 再Ping,则可以发现在eth1可以ping通同网段地址(由于同网段包默认是通过eth0出去的)
~# ip route add 10.3.2.100 dev eth1 src 10.3.2.11
~# ping 10.3.2.100
PING 10.3.2.100 (10.3.2.100) 56(84) bytes of data.
64 bytes from 10.3.2.11: icmp_req=1 ttl=64 time=1.71 ms
64 bytes from 10.3.2.11: icmp_req=2 ttl=64 time=0.880 ms
64 bytes from 10.3.2.11: icmp_req=3 ttl=64 time=0.875 ms
也可以通过增加外部路由, 通过router
~# ip route add 10.3.2.100 via 10.3.2.254 dev eth0
~# ping 10.3.2.100
PING 10.3.2.100 (10.3.2.100) 56(84) bytes of data.
From 10.3.2.254: icmp_seq=1 Redirect Host(New nexthop: 10.3.2.100)
From 10.3.2.254 icmp_seq=1 Redirect Host64 bytes from 10.3.2.100: icmp_req=1 ttl=64 time=2.14 ms
64 bytes from 10.3.2.100: icmp_req=2 ttl=64 time=1.00 ms
64 bytes from 10.3.2.100: icmp_req=3 ttl=64 time=0.989 ms
对于双网卡是否能够配置在同一网段,网上多数不建议,此处还有个问题还没有搞懂,就是系统的路由表如下
~# ip route show
default via 10.3.2.254 dev eth1
default via 10.3.2.254 dev eth0
10.3.2.0/24 dev eth0 src 10.3.2.10
10.3.2.0/24 dev eth1 src 10.3.2.11
当eth0物理网口没接上,eth1物理网口接上,为什么ping 10.3.2.100时候,始终往eth0 口出去,而eth0出不去时候,系统怎么没有尝试从eth1出去,
非要等到用户自己ifconfig eth0 down(ip link set eth0 down)后,才知道从eth1出去。
阅读(2791) | 评论(0) | 转发(0) |