ARP協議

ARP協議

將32位的IP地址轉換爲48位的物理地址。

在局域網中,當主機或者其他網絡設備有數據要發送給另一個主機或設備時,它必須知道對方的網絡
層地址(即 IP 地址)。但是僅僅有 IP 地址是不夠的,因爲 IP 數據報文必須封裝成幀才能通過物理
網絡發送,因此發送站還必須有接收站的物理地址,所以需要一個從 IP 地址到物理地址的映射。
APR 就是實現這個功能的協議。

ARP 報文結構

ARP報文分爲ARP請求和ARP應答報文,

這裏寫圖片描述

硬件類型:表示硬件地址的類型。它的值爲 1 表示以太網地址;
z 協議類型:表示要映射的協議地址類型。它的值爲 0x0800 即表示 IP 地址;
z 硬件地址長度和協議地址長度分別指出硬件地址和協議地址的長度,以字節爲單位。對於以太網上 IP 地址的 ARP 請求或應答來說,它們的值分別爲 6 和 4;
z 操作類型(OP): 1 表示 ARP 請求, 2 表示 ARP 應答;
z 發送端 MAC 地址:發送方設備的硬件地址;
z 發送端 IP 地址:發送方設備的 IP 地址;
z 目標 MAC 地址:接收方設備的硬件地址。
z 目標 IP 地址:接收方設備的 IP 地址

ARP地址解析過程

假設PC1和PC2在同一個網段,PC1要向PC2發送信息。如 圖 所示,具體的地址解析過程如
下:

(1) PC1 首先查看自己的 ARP 表,確定其中是否包含有PC2 對應的 ARP 表項。如果找到了對應的 MAC 地址,則PC1 直接利用 ARP 表中的 MAC 地址,對 IP 數據包進行幀封裝,並將數據包發送給PC2。

(2) 如果PC1 在 ARP 表中找不到對應的 MAC 地址,則將緩存該數據報文,然後以廣播方式發送一個 ARP 請求報文。 ARP 請求報文中的發送端 IP 地址和發送端 MAC 地址爲PC1 的 IP地址和 MAC 地址,目標 IP 地址和目標 MAC 地址爲PC2 的 IP 地址和全 0 的 MAC 地址。由於 ARP 請求報文以廣播方式發送,該網段上的所有主機都可以接收到該請求,但只有被請求的主機(即PC2)會對該請求進行處理。

(3) PC2 比較自己的 IP 地址和 ARP 請求報文中的目標 IP 地址,當兩者相同時進行如下處理:將 ARP 請求報文中的發送端(即PC1)的 IP 地址和 MAC 地址存入自己的 ARP 表中。之後以單播方式發送 ARP 響應報文給PC1,其中包含了自己的 MAC 地址。

(4) PC1 收到 ARP 響應報文後,將PC2 的 MAC 地址加入到自己的 ARP 表中以用於後續報文的轉發,同時將 IP 數據包進行封裝後發送出去。

這裏寫圖片描述

假設PC1和PC2 不在同一個網段
當PC1和PC2 不在同一網段時,PC1就會先向網關發出 ARP 請求, ARP 請求報文中的目標IP 地址爲網關的 IP 地址。當PC1從收到的響應報文中獲得網關的 MAC 地址後,將報文封裝併發給網關。如果網關沒有PC2 的 ARP 表項,網關會廣播 ARP 請求,目標 IP 地址爲PC2 的 IP 地址,當網關從收到的響應報文中獲得PC2 的 MAC 地址後,就可以將報文發給PC2;如果網關已經有PC2 的 ARP 表項,網關直接把報文發給PC2。

ARP 表

設備通過 ARP 解析到目的 MAC 地址後,將會在自己的 ARP 表中增加 IP 地址到 MAC 地址的映射表項,以用於後續到同一目的地報文的轉發

ARP 表項分爲動態 ARP 表項靜態 ARP 表項

動態 ARP 表項

動態 ARP 表項由 ARP 協議通過 ARP 報文自動生成和維護,可以被老化,可以被新的 ARP 報文更
新,可以被靜態 ARP 表項覆蓋。當到達老化時間、接口 down 時會刪除相應的動態 ARP 表項。
靜態 ARP 表項
靜態 ARP 表項通過手工配置和維護,不會被老化,不會被動態 ARP 表項覆蓋。配置靜態 ARP 表項可以增加通信的安全性。靜態 ARP 表項可以限制和指定 IP 地址的設備通信時只使用指定的 MAC 地址,此時攻擊報文無法修改此表項的 IP 地址和 MAC 地址的映射關係,從而保護了本設備和指定設備間的正常通信。靜態 ARP 表項分爲短靜態 ARP 表項和長靜態 ARP 表項。
在配置長靜態 ARP 表項時,除了配置 IP 地址和 MAC 地址項外,還必須配置該 ARP 表項所在 VLAN 和出接口。長靜態 ARP 表項可以直接用於報文轉發。
在配置短靜態 ARP 表項時,只需要配置 IP 地址和 MAC 地址項。如果出接口是三層以太網接口,短靜態 ARP 表項可以直接用於報文轉發;如果出接口是 VLAN 虛接口,短靜態 ARP 表項不能直接用於報文轉發,當要發送 IP 數據包時,先發送 ARP 請求報文,如果收到的響應報文中的源 IP 地址和源 MAC 地址與所配置的 IP 地址和 MAC 地址相同,則將接收 ARP 響應報文的接口加入該靜態 ARP 表項中,之後就可以用於 IP 數據包的轉發。

免費ARP

免費 ARP 報文是一種特殊的 ARP 報文,該報文中攜帶的發送端 IP 地址和目標 IP 地址都是本機 IP地址,報文源 MAC 地址是本機 MAC 地址,報文的目的 MAC 地址是廣播地址。設備通過對外發送免費 ARP 報文來實現以下功能:
z 確定其它設備的 IP 地址是否與本機的 IP 地址衝突。當其它設備收到免費 ARP 報文後,如果發現報文中的 IP 地址和自己的 IP 地址相同, 則給發送免費 ARP 報文的設備返回一個 ARP 應答,告知該設備 IP 地址衝突。
z 設備改變了硬件地址,通過發送免費 ARP 報文通知其它設備更新 ARP 表項

免費 ARP 報文學習功能的作用

使能了免費 ARP 報文學習功能後,設備會根據收到的免費 ARP 報文中攜帶的信息(源 IP 地址、源 MAC 地址)對自身維護的 ARP表進行修改。設備先判斷 ARP 表中是否存在與此免費 ARP 報文源 IP 地址對應的 ARP 表項:
z 如果沒有對應的 ARP 表項,設備會根據該免費 ARP 報文中攜帶的信息新建 ARP 表項;
z 如果存在對應的 ARP 表項,設備會根據該免費 ARP 報文中攜帶的信息更新對應的 ARP 表項。
關閉免費 ARP 報文學習功能後,設備不會根據收到的免費 ARP 報文來新建 ARP 表項,但是會更新已存在的對應 ARP 表項。如果用不希望通過免費 ARP 報文來新建 ARP 表項,可以關閉免費ARP 報文學習功能,以節省 ARP 表項資源。技術介紹

定時發送免費 ARP 功能的作用

定時發送免費 ARP 功能可以及時通知下行設備更新 ARP 表項或者 MAC 地址表項,主要應用場景如下:
(1) 防止仿冒網關的 ARP 攻擊
如果攻擊者仿冒網關發送免費 ARP 報文,就可以欺騙同網段內的其它主機,使得被欺騙的主機訪問網關的流量,被重定向到一個錯誤的 MAC 地址,導致其它主機用戶無法正常訪問網絡。爲了儘量避免這種仿冒網關的 ARP 攻擊,可以在網關的接口上使能定時發送免費ARP 功能。使能該功能後,網關接口上將按照配置的時間間隔週期性發送接口主 IP 地址和手工配置的從 IP 地址的免費 ARP 報文。這樣,每臺主機都可以學習到正確的網關,從而正常訪問網絡。
(2) 防止主機 ARP 表項老化
在實際環境中,當網絡負載較大或接收端主機的 CPU 佔用率較高時,可能存在 ARP 報文被丟棄或主機無法及時處理接收到的 ARP 報文等現象。這種情況下,接收端主機的動態 ARP 表項會因超時而被老化,在其重新學習到發送設備的 ARP 表項之前,二者之間的流量就會發生中斷。爲了解決上述問題,可以在網關的接口上使能定時發送免費 ARP 功能。使能該功能後,網關接口上將按照配置的時間間隔週期性發送接口主 IP 地址和手工配置的從 IP 地址的免費 ARP 報文。這樣,接收端主機可以及時更新 ARP 映射表,從而防止了上述流量中斷現象。
(3) 防止 VRRP 虛擬 IP 地址衝突
當網絡中存在 VRRP 備份組時,需要由 VRRP 備份組的 Master 路由器週期性的向網絡內的主機發送免費 ARP 報文,使主機更新本地 ARP 地址表,確保網絡中不會存在與 VRRP 虛擬 IP 地址相同的設備。
由於用戶可以設定 VRRP 虛擬 IP 地址和 MAC 地址對應關係,因此有以下兩種情況:
z 如果當前 VRRP 虛擬 IP 地址和虛擬 MAC 地址對應,則免費 ARP 報文中的源 MAC 地址爲VRRP 虛擬路由器對應的虛擬 MAC 地址。
z 如果當前 VRRP 虛擬 IP 地址和實際 MAC 地址對應,則免費 ARP 報文中的源 MAC 地址爲VRRP 備份組中 Master 路由器接口的MAC 地址。
(4) 及時更新模糊終結 VLAN 內設備的 MAC 地址表
三層以太網子接口上同時配置了模糊終結多個 VLAN 和 VRRP 備份組時,爲了避免發送過多的VRRP 通告報文,需要關閉 VLAN 終結支持廣播/組播功能,並配置 VRRP 控制 VLAN。此時,爲了及時更新各個模糊終結 VLAN 內設備的 MAC 地址表項,可以在三層以太網子接口上使能定時發送免費 ARP 功能。使能該功能後,三層以太網子接口將按照配置的時間間隔週期性發送 VRRP 虛擬 IP 地址、接口主 IP 地址和手工配置的從 IP 地址的免費 ARP 報文。這樣,當 VRRP 主備狀態切換時,各個模糊終結 VLAN 內設備上可以及時更新爲正確的 MAC 地址表項。

代理 ARP

如果 ARP 請求是從一個網絡的主機發往同一網段卻不在同一物理網絡上的另一臺主機,那麼連接
它們的具有代理 ARP 功能的設備就可以回答該請求,這個過程稱作代理 ARP(Proxy ARP)。代理 ARP 功能屏蔽了分離的物理網絡這一事實,使用戶使用起來,好像在同一個物理網絡上。
代理 ARP 分爲普通代理 ARP 和本地代理 ARP,二者的應用場景有所區別:
z 普通代理 ARP 的應用環境爲:想要互通的主機分別連接到設備的不同三層接口上,且這些主機不在同一個廣播域中。
z 本地代理 ARP 的應用環境爲:想要互通的主機連接到設備的同一個三層接口上,且這些主機不在同一個廣播域中。

普通代理 ARP

處於同一網段內的主機,當連接到設備的不同三層接口時,可以利用設備的代理 ARP 功能,通過
三層轉發實現互通。
代理ARP的典型應用環境如 圖 3所示。設備Router通過兩個三層接口Ethernet1/1 和Ethernet1/2 連接兩個網絡,兩個三層接口的IP地址不在同一個網段,接口地址分別爲 192.168.10.99/24、192.168.20.99/24。但是兩個網絡內的主機Host A和Host B的地址通過掩碼的控制,既與相連設備的接口地址在同一網段,同時二者也處於同一個網段。
這裏寫圖片描述
圖 普通代理 ARP 的應用環境
在這種組網情況下,當 Host A 需要與 Host B 通信時,由於目的 IP 地址與本機的 IP 地址爲同一網段,因此 Host A 會直接發出請求 Host B 硬件地址的 ARP 請求。但是,此時的兩臺主機處於不同的廣播域中, Host B 無法收到 Host A 的 ARP 請求報文,當然也就無法應答。通過在 Router 上啓用代理 ARP 功能,可以解決此問題。啓用代理 ARP 後, Router 可以應答 HostA 的 ARP 請求。同時, Router 相當於 Host B 的代理,把從其他主機發送過來的報文轉發給它。代理 ARP 的優點是,它可以只被應用在一個設備上(此時該設備的作用相當於網關),不會影響到網絡中其他設備的路由表。代理 ARP 功能可以在 IP 主機沒有配置缺省網關或者 IP 主機沒有任何
路由能力的情況下使用。

本地代理 ARP

本地代理ARP的應用場景如 圖 所示。 Host A和Host B屬於同一個VLAN 2,但它們分別連接到被二層隔離的端口Ethernet1/3 和Ethernet1/1 上,通過在Router上啓用本地代理ARP功能,可以實現Host A和Host B的三層互通。技術介紹
這裏寫圖片描述
本地代理 ARP 的應用環境
本地代理 ARP 可以在下列三種情況下實現主機之間的三層互通:
z 想要互通的主機分別連接到同一個 VLAN 中的不同二層隔離端口下;
z 使能 Super VLAN 功能後,想要互通的主機屬於不同的 Sub VLAN;
z 使能 Isolate-user-vlan 功能後,想要互通的主機屬於不同的 Secondary VLAN

ARP Snooping

ARP Snooping 作用

ARP Snooping 功能是一個用於二層交換網絡環境的特性,通過偵聽 ARP 報文建立 ARP Snooping
表項,從而提供給 ARP 快速應答和 MFF 手動方式等使用。

ARP Snooping 工作機制

設備上的一個 VLAN 使能 ARP Snooping 後,該 VLAN 內所有端口接收的 ARP 報文會被重定向到CPU。 CPU 對重定向上送的 ARP 報文進行分析,獲取 ARP 報文的源 IP 地址、源 MAC 地址、源VLAN 和入端口信息,建立記錄用戶信息的 ARP Snooping 表項。ARP Snooping 表項的老化時間爲 25 分鐘,有效時間爲 15 分鐘。如果一個 ARP Snooping 表項自最後一次更新後 15 分鐘內沒有收到 ARP更新報文,則此表項開始進入失效狀態,不再對外提供服務,其他特性查找此表項將會失敗。當收到源 IP 地址和源 MAC 與已存在的ARP Snooping 表項 IP地址和 MAC 均相同的 ARP 報文時,此 ARP Snooping 表項進行更新,重新開始生效,並重新老化計時。當ARP Snooping 表項達到老化時間後,則將此 ARP Snooping 表項刪除。如果 ARP Snooping 收到 ARP 報文時檢查到相同 IP 的 ARP Snooping 表項已經存在,但是 MAC地址發生了變化,則認爲發生了攻擊,此時 ARP Snooping 表項處於衝突狀態,表項失效,不再對外提供服務,並在 25 分鐘後刪除此表項。

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