靜態路由使用下一跳和出接口的區別,我猜你不知道這一點!

寫在前面:本人是一名計算機系大二的學生,會不定時的將我的學習筆記分享給大家!如果需要更多的學習資源可以通過我的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.1\24的下一跳時,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 許可協議。轉載請註明出處!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章