静态路由只配置出接口网络不通(实验)

#问题引入

配置静态路由时,可以选择配置下一跳地址,也可以选择配置出接口,也可以两者同时配置。

但是以太网环境中只配置路由出接口时,两个网段无法通信。

(事实上以太网,或者说广播类型接口配置静态路由时,必须指定下一跳地址,具体原因就是本例分析的)

#实验条件

采用华为的eNSP模拟器

如下图,两台PC连接到两台路由器,PC1处于11.0.0.0 24网段,PC2处于22.0.0.0 24网段。他们的网关都设置为连接的路由器接口。

路由器之间网段为12.0.0.0 24。

需求是PC1和PC2之间通信,显然AR1和AR2两台路由器需要有对应的路由。

即当PC1向PC2发包时,由于AR1为PC1的网关,PC1会将包发往AR1,AR1收到包后需要根据路由表转发包,显然需要转发向AR2方向,AR2接收到包后就可向PC2转发(AR2有通往22.0.0.0 24网段的直连路由)。PC2向PC1回包也就是倒过来。

#抓包结果

我们先在AR1上配置前往PC2的路由,只配置出接口为GE 0/0/0。

ip route-static 22.0.0.2 24 g0/0/0

 查看路由表,发现多了一条前往22.0.0.0 24网段的静态路由,出接口为g0/0/0,下一跳为出接口的IP地址12.0.0.1。

注:如果直接配置下一跳IP为12.0.0.1(g0/0/0口的IP地址),会报错。

前面问题已经描述过了,即使配置了AR2,这样配置PC1和PC2也无法通信。所以不再配置AR2,直接抓包分析。

在PC1上Ping PC2,理论上AR1是配置了到PC2网段路由的,最后我们得到的结果是超时,这个结果看着似乎像是没有配置AR2路由的原因,导致PC2没有能回包。

我们进一步在AR1的g0/0/0口抓包。

发现仅仅有的是来自AR1路由器的ARP包!也就是ICMP的请求包根本就没有从AR1发出。

我们再抓取PC1和AR1之间的包。

可以发现,PC1是正确发出了ICMP请求包。

#结果分析

这时候原因就很显然了,AR1接收到PC1发出的ICMP请求包,但不能正确地将这个包转发出去。

路由器将包转发出去,实际上是一个跨不同二层链路的动作,它修改的是二层帧中的MAC地址。

PC1向AR1发包时,MAC地址填写的是AR1(PC1的网关)的,AR1的MAC通过PC1发送ARP请求利用AR1的IP获得,而AR1向22.0.0.0 24网段转发包时,需要知道目标地址下一跳的MAC,而路由表中的下一跳是AR1的GE 0/0/0端口的IP。但路由器不会去思考是否合理,它仅仅知道已知IP获取MAC的方法:ARP广播。

所以我们抓到了许多ARP包,再仔细看ARP包的内容。

ARP广播希望得到12.0.0.1地址设备的MAC,但网段不会有设备回应它,因为它自身的接口IP就是12.0.0.1,所以这个ARP广播被视为ARP宣告。

由于得不到目标MAC地址,无法封装二层帧,路由器自然无法转发出这个包,最后PC1等待无果,显示Ping超时。

#结论

路由转发最终决策是根据设备的路由转发表(Forwarding Information Base,FIB),路由转发表的路由路径是根据路由表选择最优路由后下发的。

路由表有两个关键字段,NextHopInterface,分别表示路由的下一跳地址和路由的出接口。

出接口就决定了路由器将包从哪个接口发出,而NextHop的作用,通过上述问题分析可以得出:它是用来获得对端MAC地址的

综上,在广播网络中,配置静态路由时,两个字段内容缺一不可。我们只配置下一跳时,路由表会根据自身已有的表项递归查询,查询出出接口是哪个端口,如果查询不到,此条路由会被标记为无效。

所以以太网环境中配置静态路由时没法只配出接口,也许同时配置出接口和下一跳地址是个好习惯。

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值