配置静态路由的时候,一般都是以出端口作为转发地点,因为这比下一跳容易理解和记忆。但是某些情况下只能配置下一跳作为目的地址。
在串口链路上(路由器之间的链路)采用出端口作为转发地点是没问题的,但是如果是以太网链路上可就要以下一跳作为目的地址。
也许你会问以太网的链路需要配置静态路由?? 路由器不是会自动对直连链路生成一条优先级高的路由条目吗?还需要配置什么静态路由?
情况是这样的:如下拓扑图
两台路由器之间的链路属于一个局域网,网络号:192.168.99.0/24
但是这个局域网是存在多台网关的,因此为了能使 PC1 与 PC2通信
必须在两台路由器上配置静态路由,而本实验探讨的主题是:
为什么在局域网链路中不能采用出端口作为转发地址,而只能采用下一跳作为转发地址。
实验的步骤:
1.先在两台路由器之间以出端口的形式配置静态路由
2.使用wireshark分别在两台路由器的出端口抓包
3.查看通信结果分析过程
4.以下一跳作为转发地址配置静态路由条目验证是否能通信
R1的路由条目为
ip route 192.168.2.0/24 e0/0/1
R2的路由条目
ip route 192.168.1.0/24 e0/0/0
在 PC1 上ping PC2的地址
通信失败,在R1出端口上查看抓包结果
在R2出端口上查看抓包结果
分析:
PC1 在ping PC2时,判断PC2与自己不在同一个网段,于是就会将包发给网关。
网关收到包之后,会将包的第三层PDU拆开查看目的IP地址是否在路由条目匹配
因为我们手动设置了一条路由条目,于是包会从出端口发出去,但是目的MAC地址
路由器并不知道,于是会向出端口的局域网发出ARP请求,请求的地址是192.168.2.1
但是局域网内并没有这个IP地址,所以没人回复ARP 导致本次通信失败。
因此在华为设备中:如果是路由器所连的以太网链路那么配置静态路由时需要明确下一跳
原因是因为:路由器转发数据包时所封装包产生的ARP请求只是请求下一跳的MAC地址
而不是目的IP的MAC地址,这样就可以完成正常的通信
但是在思科的设备中:是没有上述的,因为如果你对路由器指定出端口,收到包后发送ARP广播包
请求目的IP的MAC地址,而以太网链路中存在一台路由器判断出ARP所请求的IP与自己所连的直连链路
是这个目的IP的同一网段,那么这台路由器会回复自己的MAC地址。相当于做了ARP代理。也就是说思科
设备就算配置了出端口为路由条目,因为路由器的ARP代理功能,所以也是可以进行通信的。