源地址小问题误解

今天一个同事搭环境,配组网,遇到个问题讨论了下,简单记录下

 

大概就如上图,最终想将两个Host三层互通,完成起来比较简单:

1:交换机2上创建一个Vlanif77,和左边Host同网段,同时Nic0放通vlan77,这样Host上添加一条静态路由,destination为右边Host网段,nexthop为2.3.4.1,走vlan 77二层就可以跳过去

2:由于三个交换机都只互连了一根线,那么转发都只能经过管理口来进行,Nic1,Nic2,Nic3,Nic4都放通管理网络vlan,由于是同网段,交换机2上添加一条静态路由,destination为右边Host网段,nexthop为192.168.0.4,走管理网络vlan跳过去

3:交换机4上创建一个Vlanif77,和右边Host同网段,同时Nic5放通vlan77,这样包就直接从vlanif77跳到了右边的Host

4:反方向同理即可

现在在右边的Host还没有摆上的时候,交换机都配好了,但是有一个问题,左边Host主动ping 5.4.3.1是通的,反过来交换机4直接ping 2.3.4.5是不通的

左边Hos发起的ICMP由于上面步骤1的路由,跳到交换机2,继续根据步骤2的路由,恰好5.4.3.1也在目标网段里,因此直接通过管理网vlan跳到了交换机4,从而request到达vlanif77,而reply直接通过管理网vlan从交换机2跳到了左边Host

反过来,从交换机4上ping 2.3.4.5不通,表面上看,request包destination为2.3.4.5,直接从交换机2作为下一跳跳过去,reply先跳到交换机2,然后跳到交换机4,但是忽略了一点,这里交换机4 ping过来的报文,源IP地址是谁,该路由的destination是2.3.4.0/24,但是nexthop却是192.168.0.2,因此走这条路由交换机4上的源IP其实是192.168.0.4,而不是本意的5.4.3.1,这样就导致虽然request能通过路由到达左边的Host,但是reply报文的destination是192.168.0.4,Host上根本没有到这个网段的路由(也没有默认路由),因此反过来ping不通就是这里导致的

换个思路,交换机4上,指定源IP地址来ping一定就是好的

ping -I 5.4.3.1 2.3.4.5

发表回复