• 静态路由使用下一跳和出接口的区别,我猜你不知道这一点!


    写在前面:本人是一名计算机系大二的学生,会不定时的将我的学习笔记分享给大家!如果需要更多的学习资源可以通过我的GitHub自行下载!

    静态路由下一跳和出接口的区别,你真的理解了吗?

    1、概述

    • 当我们在配置静态路由时,在使用串型链路中,是一种点到点的链路

    对于大多数很来说,很多人都知道静态路由配置下一跳比出接口更好,但却很少人能够说清为什么,接下来让我们一起来解开这个疑惑!

    • 在配置静态路由时,下一跳可以使用下一路由器的IP地址,也可以使用本路由器的出站接口。在点对点的网络中,两者可能没有什么差别,但在以太网中,两者有很大差别。

    • 在以太网中,两个相邻知道接口之间的通信是依靠MAC地址。相邻接口通信时,需要知道对方的MAC地址,根据MAC地址将通信数据转换成数据帧后交付给网络,进而发送到到对方。而对方MAC地址的获得,是通过第二层数据帧广播,由ARP协议完成的。

    当静态路由中使用出站接口做为下一跳时,路由器会认为目标网络和接口处在“直连网络”中。

    2、实验演示

    实验拓扑

    图片
    实验要求

    • 配置基本的地址信息
    • 使用静态路由让pc1和pc3互通

    使用下一跳

    基本配置

    【r1】
    #
    interface GigabitEthernet0/0/0
     ip address 100.0.0.1 255.255.255.0 
     int  g0/0/1
     ip   add    10.0.0.254    24
    #
    ip   route-static   20.0.0.0   255.255.255.0    100.0.0.2
    #
    ---------
    【r2】
    #
    interface GigabitEthernet0/0/1
     ip address 100.0.0.1 255.255.255.0 
     int   g0/0/1
     ip  add    20.0.0.254   24
    #
    ip    route-static    10.0.0.0   255.255.255.0   100.0.0.1 
    #
    
    

    查看路由表

    [r1]dis   ip  routing-table  protocol   static 
    Route Flags: R - relay, D - download to fib
    ------------------------------------------------------------------------------
    Public routing table : Static
             Destinations : 1        Routes : 1        Configured Routes : 1
    
    Static routing table status : <Active>
             Destinations : 1        Routes : 1
    
    Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface
    
           20.0.0.0/24  Static  60   0          RD   100.0.0.2       GigabitEthernet
    0/0/0
    
    Static routing table status : <Inactive>
             Destinations : 0        Routes : 0
    
    [r2]dis   ip   routing-table  protocol    static 
    Route Flags: R - relay, D - download to fib
    ------------------------------------------------------------------------------
    Public routing table : Static
             Destinations : 1        Routes : 1        Configured Routes : 1
    
    Static routing table status : <Active>
             Destinations : 1        Routes : 1
    
    Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface
    
           10.0.0.0/24  Static  60   0          RD   100.0.0.1       GigabitEthernet
    0/0/0
    
    Static routing table status : <Inactive>
             Destinations : 0        Routes : 0
    
    

    可以看到,下一跳都是正确的。

    查看arp地址表

    
    [r1]dis   arp  br  //可以看到还没有pc4的地址表
    IP ADDRESS      MAC ADDRESS    EXPIRE(M) TYPE  INTERFACE           VLAN/CEVLAN 
    ------------------------------------------------------------------------------
    100.0.0.1       00e0-fc04-77b5           I -   GE0/0/0
    100.0.0.2       00e0-fc30-63e8 16        D-0   GE0/0/0
    10.0.0.1        5489-98c4-3156 16        D-0   GE0/0/1
    ------------------------------------------------------------------------------
    Total:4         Dynamic:2       Static:0     Interface:2    
    
    

    测试ping通,并抓包
    pc3去pingpc1
    图片

    • 可以看到,在ICMP发送报文请求之前会先请求ARP,获取对方的mac地址
    <r2>dis  arp
    IP ADDRESS      MAC ADDRESS     EXPIRE(M) TYPE        INTERFACE   VPN-INSTANCE 
                                              VLAN/CEVLAN PVC                      
    ------------------------------------------------------------------------------
    100.0.0.2       00e0-fc30-63e8            I -         GE0/0/0
    100.0.0.1       00e0-fc04-77b5  5         D-0         GE0/0/0
    20.0.0.254      00e0-fc30-63e9            I -         GE0/0/1
    20.0.0.1        5489-9842-6023  18        D-0         GE0/0/1
    20.0.0.2        5489-983b-61d6  4         D-0         GE0/0/1
    ------------------------------------------------------------------------------
    Total:5         Dynamic:3       Static:0     Interface:2    
    

    使用出接口

    配置

    【r1】
    #
    ip    route-s      20.0.0.0   255.255.255.0   g0/0/0
    #
    -----------
    【r2】
    #
    ip   route-s    10.0.0.0   255.255.255.0   g0/0/0
    #
    

    查看路由表

    图片

    • 使用出接口时,pc1会以为pc3是直连网络,直接请求对方的mac地址。
    • 在以太网中,直连网络中主机间的通信是通过ARP协议广播来获取到要交付的目标主机的MAC地址的。也就是说,当R1左侧网络中的PC1要和R2右侧网络的PC1和PC3通信时,数据传递到R1时,R1看到目标网络是自己的直连网络(由于静态路由中指定下一跳为自身接口所致),于是R1就要在g0/0/0所处网络发出ARP请求广播,来寻找20.0.0.1对应的MAC地址。

    测试pc1和pc3的连通性,并抓包

    图片

    图片

    • pc3ping不通pc1,并且可以看到r2请求的是r1出接口的地址

    问题

    • 使用出接口时,路由器会认为所在网段是同一网段,求求不到目标地址的Mac地址

    解决方法

    1、 使用下一跳

    2、开启代理ARP

    •  【r1】
       #
       int  g0/0/0
       arp-proxy enable
      #
      
      
    • <r1>dis  arp
      IP ADDRESS      MAC ADDRESS     EXPIRE(M) TYPE        INTERFACE   VPN-INSTANCE 
                                                VLAN/CEVLAN PVC                      
      ------------------------------------------------------------------------------
      100.0.0.1       00e0-fc04-77b5            I -         GE0/0/0
      100.0.0.2       00e0-fc30-63e8  20        D-0         GE0/0/0
      20.0.0.2        00e0-fc30-63e8  20        D-0         GE0/0/0
      10.0.0.254      00e0-fc04-77b6            I -         GE0/0/1
      ------------------------------------------------------------------------------
      Total:4         Dynamic:2       Static:0     Interface:2    
      
      <r2>dis  arp
      IP ADDRESS      MAC ADDRESS     EXPIRE(M) TYPE        INTERFACE   VPN-INSTANCE 
                                                VLAN/CEVLAN PVC                      
      ------------------------------------------------------------------------------
      100.0.0.2       00e0-fc30-63e8            I -         GE0/0/0
      100.0.0.1       00e0-fc04-77b5  3         D-0         GE0/0/0
      20.0.0.254      00e0-fc30-63e9            I -         GE0/0/1
      20.0.0.1        5489-9842-6023  17        D-0         GE0/0/1
      20.0.0.2        5489-983b-61d6  3         D-0         GE0/0/1
      ------------------------------------------------------------------------------
      Total:5         Dynamic:3       Static:0     Interface:2    
      
      
    • 开启代理arp后,r1将会替pc1答应此arp请求,r1中将产生arp缓存

    • 从上述实验中我们知道,当R1中使用g0/0/0接口做为到达目标网络20.0.0.124的下一跳时,R1左侧网络中的PC,如果要和R2右侧的20.0.0.0/24网络中的所有PC通信,那么在R1上均会产生ARP缓存记录。可以想象:当双方通信的PC很多时,R1中势必会产生大量的ARP缓存,从而可能会导致R1的内存被耗尽。

    • 如果R1中到20.0.0.0/24网络的静态路由设置为 ip route 20.0.0.0 255.255.255.0 100.0.0.2,这样的话,R1中到20.0.0.0/24网络的数据包,都只会交付给100.0.0.2。R1通过ARP协议来获取100.0.0.2对应的MAC地址,然后将数据包以第二层数据帧方式交付出去。也就是说,R1上只会保留一条ARP缓存信息,即:100.0.0.2 R2的F0/1的MAC。这样可以避免R1中产生大量ARP缓存而导致内存耗尽!

    总结

    在配置静态路由时,既可指定发送接口,也可指定下一跳地址,到底采用哪种方法,需要根据实际情况而定:对于支持网络地址到链路层地址解析的接口(直接连到主机)或点到点接口(ppp),指定发送接口即可;对于nbma接口,如以太网接口、VLAN接口、封装x.25或帧中继的接口、拨号口等,支持点到多点,这时除了配置ip路由外,还需在链路层建立二次路由,即ip地址到链路层地址的映射(如dialer map ip、x.25 map ip或frame-relay map ip等),这种情况配置静态路由不能指定发送接口,应配置下一跳ip地址。

    • 如果在点到点网络环境下,无论是指定下一跳地址还是出接口,其效果都是一样的。但是在广播网络环境下,指定下一跳地址和指定出接口将会达到不同的效果。如果指定为出接口的话,那么不管数据包的目标地址是否有效,每次当数据包到达时都会触发一个ARP请求和相应,又因为ARP代理功能在IOS环境下默认是打开的,这就意味着路由器需要配备大量的ARP高速缓存。而如果是指定为下一跳地址的话,仅当第一个去往目标网络的数据包到达时,才会触发ARP请求。

    • 所以为了便于路由的查找和减少ARP缓存条目过多的办法就是同时指定出接口和下一跳地址。这样做的话,路由条目在路由表中表现为非直连网络,其管理距离值为1。

    本文均属肉肉原创,如有不详或错误,欢迎指出!

    本文作者肉肉
    版权声明:博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!

  • 相关阅读:
    Yii CGridView 之 SQL 语句
    Yii的srbac拓展中“用户已经获授权项”无法查看
    MyBatis通过注解实现映射中的嵌套语句和嵌套结果
    MyBatis一对多映射简单查询案例(嵌套结果)
    MyBatis绑定Mapper接口参数到Mapper映射文件sql语句参数
    将前端请求中的数据绑定到Spring MVC响应方法中参数的四种方法
    MyBatis一对多映射简单查询案例(嵌套Mapper映射文件中的sql语句)
    Spring MVC与html页面的交互(以传递json数据为例)
    使用Spring JDBC连接数据库(以SQL Server为例)
    spring mvc访问html页面404报错解决
  • 原文地址:https://www.cnblogs.com/linwenye/p/13269865.html
Copyright © 2020-2023  润新知