拓扑如下:
预设:
R2和R3上都拥有去往R4后面网段的静态路由
R2&R3(配置一样):
ip route 10.1.0.0 255.255.255.0 Ethernet1/1 100.2.0.1
ip route 10.2.0.0 255.255.255.0 Ethernet1/1 100.2.0.1
ip route 10.3.0.0 255.255.255.0 Ethernet1/1 100.2.0.1
ip route 10.4.0.0 255.255.255.0 Ethernet1/1 100.2.0.1
ip route 192.168.1.0 255.255.255.0 Ethernet1/0 100.1.0.1
那么如果使用静态路由,当R2或者R3中某一台宕机的时候,那么就需要在R1上修改去往R4 后面(LO)网段的静态路由的下一跳地址。
如果原先走的是R2,现在R2宕机了。
即需要在R1上作出如下修改:
ip route 10.1.0.0 255.255.255.0 Ethernet1/0 100.1.0.3
ip route 10.2.0.0 255.255.255.0 Ethernet1/0 100.1.0.3
ip route 10.3.0.0 255.255.255.0 Ethernet1/0 100.1.0.3
ip route 10.4.0.0 255.255.255.0 Ethernet1/0 100.1.0.3
需要再R4上做出如下修改:
ip route 192.168.1.0 255.255.255.0 Ethernet1/0 100.1.0.1
如果R4后面有1000个网段怎么办? 那就需要修改1000条啊。。。
这时候递归路由就派上用场了。
将R1 去往 R4后面网段的下一跳地址,改为非直连地址。即为100.2.0.1。如下所示
ip route 10.1.0.0 255.255.255.0 Ethernet1/0 100.2.0.1
ip route 10.2.0.0 255.255.255.0 Ethernet1/0 100.2.0.1
ip route 10.3.0.0 255.255.255.0 Ethernet1/0 100.2.0.1
ip route 10.4.0.0 255.255.255.0 Ethernet1/0 100.2.0.1
将R1 去往 R4后面网段的下一跳地址,改为非直连地址。即为100.2.0.1。如下所示
ip route 192.168.1.0 255.255.255.0 Ethernet1/0 100.1.0.1
此时,从R1上Ping10.x.x.x肯定是不通的,因为R1并不知道怎么去往 100.2.0.1。R4 也不知道怎么去R1。
接口与接口之间传递数据靠的是什么?
只需要知道对方二层地址即可传递吧。
现在每个路由器都在做什么操作呢。
R1 发 ICMP 包,但是发现自己没有 100.2.0.1 的 ARP表项。
那么他就会发送ARP 广播。
由于路由器的接口是默认开启了ARP代理,那么 R2 或者R3 都会接受到 ARP请求。
随后R2 和R3 判断一下,请求的三层地址,自己是否可达,如果可达则回复ARP请求。R2 和R3 都有去往目的网段的下一跳路由(表示可达),所以都会发送 ARP 回复。
然后在R1 上,收到ARP回复,后到的加入到ARP 表中。
随后我们就能通信啦,可是为什么现在不行呢…………
我们看一下R1的行为:
竟然被过滤了? 这是为什么呢……
原来路由器和PC不同:
PC会无条件信任,立刻加入ARP表。
而路由器,会先判断一下应答者的IP地址是否可达,如果可达则加表,不可达则过滤。
那我们现在没有去往100.2.0.0网段的路由,所以是不可达的,那么必然会被过滤掉。
在R1上添加一条递归路由:
ip route 100.2.0.0 255.255.255.0 Ethernet1/0 100.1.0.2
在R4上添加一条递归路由:
ip route 100.1.0.0 255.255.255.0 Ethernet1/0 100.2.0.2
再ping一下10.1.0.1
哎?通了。
看到图中有收到两次ARP回复,一个是 R2的回复,一个是R3的回复,R3的回复在下面,那么照理来说ARP表里面应该是R3的e1/0的地址咯?
那么这条递归路由具体有什么用呢?
它是为了在ARP加表时,让路由器判断为应答者的IP地址可达。
看了闫辉老师的视屏,老师说,这个下一跳地址与数据选路是没有关系的,但是很奇怪,R1 和R4 同样的配置,ARP表中对应接口的MAC地址都是R3的。
下面贴上路由条目与ARP表:
但实际上他的数据走向却是如下图:
所以当我关掉 R2的时候,R4 任然能收到 R1 发过来的ICMP包,但是R1收不到 R4 的回复,如下图
但是手动将 R1 和 R4 的递归路由 的下一跳地址 改成 R3的,那么又能够正常通信。
对于下图的数据走向,我特别不理解,哪位大佬能否赐教一下,小弟不胜感激。