配置静态路由使用下一跳IP地址和使用出接口的区别
在配置静态路由时,可以配置IP地址或出接口作为下一跳,但二者的有何区别?
或者说用哪个更好?
- 相互通信的真正实现是基于MAC地址,ARP协议的作用正是将IP地址转换为MAC地址。
- 当数据进行封装时,其必须包含目标的MAC地址,所以数据在转发前,需要广播发送ARP请求得到目标的MAC地址,才能进行通信。
配置实验
通过实验进行抓包分析其实现过程,从中发现两者的区别
两台路由器各有一个回环口,使用AR1pingAR2的回环地址2.2.2.2;
1、使用下一跳的IP地址进行静态路由的配置
- AR1
ip route-static 2.2.2.2 32 10.0.0.2
- AR2
ip route-static 1.1.1.1 32 10.0.0.1
- 实验结果
- 抓包分析
发现ARP请求是直接询问10.0.0.2的MAC地址,由于是直连接口,所以可以直接建立通信
2、使用出接口进行静态路由的配置
- AR1
ip route-static 2.2.2.2 32 g0/0/0
- AR2
ip route-static 1.1.1.1 32 g0/0/1
-
再次使用AR1pingAR2的2.2.2.2
发现并没有互通,于是使用wireshark进行抓包分析 -
在AR1的g0/0/0口处进行抓包
发现ARP一直在广播请求2.2.2.2的MAC地址,因为没有路由去2.2.2.2,所以没有人回应,则无法建立通信。 -
使用出接口进行配置时,ARP会直接请求目标网段的MAC地址,所以并不会成功建立通信;
-
使用下一跳IP地址进行配置时,ARP会请求下一跳的MAC地址,由于是直连,所以会获取,即能够成功建立通信。
代理ARP
一般在下一跳地址会发生变化时,会使用出接口进行配置;则需要开启代理ARP解决
- 在目标网段的下一跳的接口进行配置代理ARP
在AR2的g0/0/1口配置ARP代理
arp-proxy enable
此时,再次使用AR1ping2.2.2.2,就可以通了
于是,我们再进行抓包分析
- 注意:
- 第一个ARP广播是10.0.0.1发送的,由于配置了代理ARP,所以10.0.0.2返回了自己的MAC地址;于是10.0.0.1就会将数据发送到10.0.0.2,再由10.0.0.2代理发送到2.2.2.2。
- 第二个ARP广播是10.0.0.2发送的,通信是一个双向的过程,但由于此时10.0.0.2并不知道10.0.0.1的MAC地址,所以就会广播发送ARP请求
当拿到MAC地址后,就会完成相互通信。
- 可以查看AR1学习到的MAC地址
dispaly arp
发现10.0.0.2与2.2.2.2的MAC地址相同,正是因为AR2开启了代理ARP,所以学习到2.2.2.2与10.0.0.2的MAC地址是相同的。
综上所述,在配置静态路由时,优先使用下一跳的IP地址进行配置;使用出接口进行配置时,需要开启代理ARP。