探讨路由器静态路由下一跳指向
众所周知在路由器上面写静态路由的时候,下一跳可以写为IP地址形式,也可以写成下一跳出接口的方式,那两种方式的区别在哪里呢,本文就以此作为一个探讨。
实验环境
环境介绍
环境如上图所示:
服务器使用路由器模拟,关闭路由功能。
PC使用路由器模拟,关闭路由功能。
最终在每台PC上访问服务器,查看现象。
IP地址配置
设备接口 | IP地址 |
---|---|
Server | 192.168.1.1/24 |
R1-e0/0 | 192.168.1.254/24 |
R1-e0/1 | 192.168.12.1/24 |
R2-e0/0 | 192.168.12.2/24 |
R2-e0/1 | 192.168.2.254/24 |
PC1 | 192.168.2.1/24 |
PC2 | 192.168.2.2/24 |
PC3 | 192.168.2.3/24 |
设备的基础配置
R1的配置
1 | interface Ethernet0/0 |
R2的配置
1 | interface Ethernet0/0 |
Server的配置
1 | interface Ethernet0/0 |
PC1/PC2/PC3的配置
1 | interface Ethernet0/0 |
现象查看
在R1上静态路由指向下一跳出接口
1 | R1(config)#ip route 192.168.2.0 255.255.255.0 e0/1 |
先查看一下R1的arp表
1 | R1#sh ip arp |
目前只有自己的直连,然后分别在三台PC上ping 192.168.1.1(即模拟电脑访问服务器),然后再次查看R1的arp表
1 | R1#sh ip arp |
可以看到R1的arp表出现了很多条信息,再看Hardware Addr,会发现有大量的条目的硬件地址是一样的。
当我们查看R1的路由表的时候,我们就可以看到原因所在了,在R1上查看路由表:
1 | R1#sh ip route |
在路由表里面,可以看到路由器认为去往192.168.2.0/24是自己的直连路由,所以凡是去往2.0网段的数据包都会直接从e0/1口发出,而目的地的2.x的目的地址,自己并不知道MAC地址是多少,所以会发起针对2.x的arp查询。因为Cisco IOS默认开启代理ARP,所以R2就代替2.0网段进行回复,最终就会出现大量的相同的arp条目。这种现象会导致路由器的缓存被消耗赶紧,所以并不推荐。
在R1上静态路由指向下一跳的IP地址
首先删除上一条的命令,然后clear ip arp *
1 | R1(config)#ip route 192.168.2.0 255.255.255.0 192.168.12.2 |
分别在三台PC上ping 192.168.1.1(即模拟电脑访问服务器),然后再次查看R1的arp表
1 | R1#sh ip arp |
可以看到在arp表中关于2.0的条目一条也没有出现,我们再次查看R1的路由表:
1 | R1#sh ip route |
可以发现关于2.0的下一跳是192.168.12.2,然后路由表会进行递归查询,最终去往2.x的数据包会被当成192.168.12.2的相同处理方式,也就是不再发起ARP查询,而是直接使用192.168.12.2的arp表记录的硬件地址。
总结
通过实验探究下来的结果,貌似是静态路由指向下一跳为IP地址更加占有优势,但是这种使用的场景非常的有限,就是我们必须明确知道下一跳的IP地址,而且IP地址不能变化,在上面的实验的这种场景下,明显是指向IP地址更加的正确。但是如果是不确定地址,或者在多路广播访问网络中,下一跳存在多个的情况下,使用IP地址作为下一跳并不一定恰当,具体环境,需要灵活的判断。
- 本文标题:探讨路由器静态路由下一跳指向
- 本文作者:Aaron
- 本文链接:https://iproute.cn/2017/01/10/探讨路由器静态路由下一跳指向/
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!