静态路由高级用法(递归路由)

拓扑如下:

预设:

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网段的路由,所以是不可达的,那么必然会被过滤掉。

 

但是实际测下来的结论是:

收到的ARP代理的Reply的源地址,必须要在路由表中拥有去往该地址的路由。该ARP Reply 才会被信任,并且加表。即使此条路由条目的下一跳地址为不可达的也无所谓。(我已经把R2关掉了所以100.1.0.2是不可达的)。但是这种情况下会时常有一些ARP请求与应答的包。因为100.1.0.2不可达。

 

所以在R1上添加一条递归路由以让路由器信任该ARP Reply:

ip route 100.2.0.0 255.255.255.0 Ethernet1/0 100.1.0.2 

在R4上也添加一条递归路由以让路由器信任该ARP Reply:

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的地址咯?

那么这条递归路由具体有什么用呢?

它是为了让路由器判断为应答者的IP地址可达,以让该地址加入到ARP表中。

 

接下来我们关闭R2,并且不带原地址去ping,发现竟然不通了。

查了一下,它的数据走向如下图(从R4上ping,数据走向就相反):

为什么呢?

原来不带源地址 “ping 10.1.0.1”。它就会以发包接口 IP 作为原地址,目的地址是“10.1.0.1”。

接下来开始查找路由表,路由器发现去往目的地址的下一跳地址为“100.2.0.1”。

再查ARP表,发现关于该地址(100.2.0.1)的ARP表项不存在。

随后就发ARP请求。

这时候,R3作为代理ARP回应。

R1回应后到,查看自己路由表中是否有去往 ARP Reply 源地址的路由条目,一看有那么一条。

所以信任该 ARP Reply 并且将R3的 e1/0的接口MAC地址对应“100.2.0.1”加入ARP表。

 

现在的情况是什么呢?

发包的原地址为“10.1.0.1”,目的地址为“10.1.0.1”,下一跳地址为“100.2.0.1”,查看ARP表,原来是要把数据发往,R3的e1/0接口。然后就发送。

R3收到包后,拆掉二层报头,看到三层报头的目的地址为 “10.1.0.1”,再查看路由表,发现路由表中改地址的下一跳为‘’100.2.0.1‘’。是自己的直连网段(这里不涉及ARP代理哦)

再查看ARP表项中对应的是,R4的e1/0接口。随后发送到R4上。

 

现在R4怎么做呢?

R4一看,目的地址是我的直连环回口,于是就转发到(10.1.0.1)的环回口上。

然后10.1.0.1收到了 ICMP 报文,他就开始回复。

目的地地址为 100.1.0.1 源地址为自己(10.1.0.1)。

遂查看路由表 ,R4匹配到,有一条递归路由,目的地址为“100.1.0.1”下一跳地址为 “100.2.0.2”

 

 

随后查看ARP表

发现ARP表中没有关于该地址(100.2.0.2)的ARP表项。

遂发送ARP请求(全0 二层地址)。

R2已经关闭,不可能应答。

R3开启了ARP代理,虽然收到了 ARP 请求,但是目前对R3而言,100.2.0.2是不可达的所以他不会回应,如下图:

 

R4收不到应答就超时(不知道 throttled out 是啥意思,直译过来是什么压制,有点搞不懂,望大神教导)

所以R4的路由 不会存在关于 100.2.0.2的ARP表项。但是如果R4主动发起过ARP请求,就会有一条 Incomplete 的条目。如下图

 

然后当前就没有下文了……

 

这就解释了为什么R4能收到请求,但是R1收不到ICMP应答。

 

如果带原地址ping就不会出现这个问题,因为R4在回复ICMP请求的时候,目的地址为“192.168.1.1”。下一跳为“100.1.0.1”。

这与R1 ping 到 R4 的行为一样。所以正常联通。如下测试图:

要实现自动切换,记得将ARP老化时间修改的短一些。(修改成了5秒)

R1 & R4

int e1/0

arp timeout 5

R2关机:

R3关机:

 

如果递归路由的下一跳地址改成只有出站接口。在路由表中体现出来的该路由条目为直连接口如下图:

 

 

可能直连接口会被无条件信任所以,必然会将受到的代理ARP应答加入到ARP表中。(不知道这里理解的对不对)

 

但是如果后面的 MA 网段,那么就有可能会造成路由黑洞。

 

所以闫辉老师说需要将出栈接口和下一跳地址都写上。

其实在路由器上不带源地址ping,收不到回复感觉无所谓啊。  反正 192.168.1.0/24 与 10.1.0.0/24 等 网段可以正常通信。

 

如果有强迫症的话,就手动修改一下递归路由。

R1:

ip route 100.2.0.0 255.255.255.0 Ethernet1/0 100.1.0.3

R4:

ip route 100.1.0.0 255.255.255.0 Ethernet1/0 100.2.0.3

 

 

有不对的地方烦请各位大佬指出……  这样才能学的更好……   先谢谢各位大佬了。

 

 

  • 12
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值