对于路由器而言,我们可以根据不同的情况来采用不同的出口方式,尤其是在一些高端路由组成的网络环境中,更是需要设置好方面,这样才能保障一个网络的稳定运行,在配置静态路由时,可以使用下一跳地址,也可以使用出站接口。
使用下一跳IP地址和使用出站接口会影响路由器的处理方式。
一、使用出站接口时,那么路由将被作为直连网络输入路由表在串口上使用出站接口和使用下一跳IP没有什么区别,仅仅少了一次寻找出站接口的递归查询,若在以太口上使用出站接口,则可能导致广播网络上出现过多的流量,而且还有可能耗尽路由器的内存。
二、使用下一跳IP地址,在串口和以太口上使用下一跳IP地址时,路由器的处理方式相同,通过查询相应的路由条目找到下一跳地址,然后根据下一跳IP地址递归查询到出站接口,若是在串口上,无需查询下一跳IP的相应的二层地址,因为在串口上就一个邻居,直接发送即可,单播以及组播二层地址为0x0f,广播二层地址为0x8f,若是在以太口上,则发送ARP查询,来获得下一跳IP的MAC地址,然后发送数据包。
三、假设路由A上有一个网段1:192.168.1.0/24,路由B上有一个网段2:192.168.2.0/24。
路由A上的路由:ip route 192.168.2.0 255.255.255.0 e0/0若网段1上的主机想要访问网段2上的主机192.168.2.1,因为路由A认为自己和192.168.2.0网段直连,所以路由器会发ARP报文去查询192.168.2.1的ARP地址,路由B收到ARP查后,查询自己的路由表发现自己可以到达该网段,于是路由B会发送一个包含自己E0/0的 MAC地址的ARP给路由A,于是路由A就得到了192.168.2.1的MAC地址。
四、实际上是路由B欺骗了路由A,这就是proxy-arp,默认开启,并缓存该条目,若网段1上的主机要访问192.168.2.2,则会重复以上步骤并缓存该主机的MAC地址,而192.168.2.1和192.168.2.2的MAC地址都是路由B的 E0/0的MAC地址,若网段2上有大量的主机,则路由A上可能会存在大量的ARP缓存条目,会耗尽路由器的内存。
而使用下一跳时,只会存在一条和下一跳IP对应的ARP缓存,另外在IPv6中,静态路由的出站接口不能是以太口,因为IPv6不存在proxy-arp,取而代之的是NDP。