概述
我们在配置静态路由时,下一跳通常有两种选择,一种是配置一个接口,另一种是配置一个IP地址,如下图所示:
![331ad7dd7d47c5eb1dd9b5aabb0222b7.png](https://img-blog.csdnimg.cn/img_convert/331ad7dd7d47c5eb1dd9b5aabb0222b7.png)
下一跳的两种方式
这两种方式配置以后,看起来网络都是通的,好像没有什么区别。但实际情况不是这样哦,老司机都推荐下一跳使用IP地址,有没有想过为什么呢?我们今天就使用一个例子来阐述老司机的选择。
举例:下一跳配置接口
拓扑
![4f1a3230a701531650807de518c19552.png](https://img-blog.csdnimg.cn/img_convert/4f1a3230a701531650807de518c19552.png)
拓扑
- 按照拓扑搭建好测试环境
- 在R1上访问25.1.1.0/32网段,然后查看ARP表项
R1的配置
1. R1的接口配置
![f3907921585855605dbca8c38dc3ca78.png](https://img-blog.csdnimg.cn/img_convert/f3907921585855605dbca8c38dc3ca78.png)
R1的F0/0接口配置
2. R1上配置一条24网段的静态路由,这条静态路由的下一跳使用接口
![49c783a445905f128eac11fc10246bf5.png](https://img-blog.csdnimg.cn/img_convert/49c783a445905f128eac11fc10246bf5.png)
下一跳使用接口
3. 查看路由表
![f3b984d2203d755d22cff9a3196ba845.png](https://img-blog.csdnimg.cn/img_convert/f3b984d2203d755d22cff9a3196ba845.png)
查看路由表
R2的配置
R2在两个接口上配置IP,其它的就不需要了
![f58d531f1c4e2733827050405ffcbb6d.png](https://img-blog.csdnimg.cn/img_convert/f58d531f1c4e2733827050405ffcbb6d.png)
R2配置
R5的配置
R5的配置可以不关注,它配置接口IP + 静态路由:
![deade534ddc80bd580f2bfa3eb9416a5.png](https://img-blog.csdnimg.cn/img_convert/deade534ddc80bd580f2bfa3eb9416a5.png)
R5的接口配置
![4af91f5dec0b8779f6a823a314432ac8.png](https://img-blog.csdnimg.cn/img_convert/4af91f5dec0b8779f6a823a314432ac8.png)
静态路由
测试过程
在R1上分别ping 20.1.1.5,20.1.1.6,20.1.1.200,查看ARP表项:
![439d7aeb241bb08f274741b0b137074c.png](https://img-blog.csdnimg.cn/img_convert/439d7aeb241bb08f274741b0b137074c.png)
查看ARP表项
结论
如果配置下一跳为接口,则路由器会认为这是一个LAN接口,访问和这条route在同一个网段的所有主机地址,都会发送一个ARP去请求。
例如此例子中,访问任何在25.1.1.0/24网段中的主机,R1都会发送一个ARP Request,去请求对应的MAC地址。
不知道你有没有关注到MAC地址,为什么这些MAC地址是R2呢?并且所有在同一个网段的IP,对应的MAC地址都是一样的?
![76ba1dc2b156152722ea9b0d2b68e459.png](https://img-blog.csdnimg.cn/img_convert/76ba1dc2b156152722ea9b0d2b68e459.png)
MAC地址
这就涉及到ARP代理的功能的了,R2知道25.1.1.0/24如何转发,所以用它自己的MAC地址回复了。关于ARP代理的内容,如果还有疑问,参加我之前的文章:ARP代理
举例:下一跳配置IP
R1配置
组网和配置和上面的相同,只是R1上的下一跳配置为IP地址,如下图所示:
![6fa34bcf98ca3519502076a850c8a0ba.png](https://img-blog.csdnimg.cn/img_convert/6fa34bcf98ca3519502076a850c8a0ba.png)
下一跳地址为IP
查看路由表
![059264ff883247e03fda43a934c871e1.png](https://img-blog.csdnimg.cn/img_convert/059264ff883247e03fda43a934c871e1.png)
路由表
测试
在R1上分别ping 20.1.1.5,20.1.1.6,20.1.1.200:
![62bd6d38900a75a96262db9a9e3bfe7e.png](https://img-blog.csdnimg.cn/img_convert/62bd6d38900a75a96262db9a9e3bfe7e.png)
ping三个地址
查看ARP表项:
![7cfb295d65524c4f04c40e0620e7f9ee.png](https://img-blog.csdnimg.cn/img_convert/7cfb295d65524c4f04c40e0620e7f9ee.png)
ARP 表项
有没有觉得很奇怪,只有一条静态路由对应的ARP表项,其它的都没有,这样是正确的吗?
这样是正确的,因为配置的下一跳是IP,所以R1访问所有在这个网段的主机,都会使用下一跳(12.1.1.2)对应的MAC去封装。也就是说,R1只需要发送一次ARP Request就可以了,只要这个ARP表项没有老化,后续所有访问25.1.1.0/24网段的主机都使用这个表项。
总结
各位小伙伴看完上面的对比,应该理解老司机为啥要推荐下一跳使用IP地址了吧?
是的,就是你想的那样,因为下一跳使用接口时,会有如下的问题:
- 路由器访问每一个在同一个网段的主机时,都会发送ARP Request去获取MAC,增加网络中的无效流量。
- 如果掩码很小,则路由器需要维护的ARP表项会非常大,耗费大量的设备的CPU和内存。
- 极端情况,如果默认路由的下一跳使用接口,则路由器访问任何地址都需要发送ARP请求并且创建ARP表项,这耗费的资源就非常大了。
而下一跳配置IP地址就没有问题了,对于一个网段的所有主机,路由器只需要生成一条ARP表项就可以了,这样就节省很多的资源。
如果各位小伙伴还对上面的内容有疑问的话,欢迎留言讨论!也非常欢迎各位关注我的头条号,一起讨论网络问题。
最后给大家推荐一下我最近开通的专栏,专门介绍如何使用思科模拟器的。我们平常学习网络知识,除了土豪,是不可能使用真实设备的,而模拟器能够满足99%的场景,因此是我们必须要掌握如何使用模拟器。专栏只要9.9,买不了吃亏,买不了上当:)