一、ARP簡介
ARP(Address Resolution Protocol,地址解析協議)是將IP地址解析為以太網MAC地址(或稱物理地址)的協議。
在網絡中,當主機或其它網絡設備有數據要發送給另一個主機或設備時,它必須知道對方的網絡層地址(即IP地址)。但是僅僅有IP地址是不夠的,因為IP數據報必須封裝成幀才能通過物理網絡發送,因此發送站還必須有接收站的物理地址,所以需要一個從IP地址到物理地址的映射。ARP就是實現這個功能的協議。
二、ARP地址解析過程
假設主機A和B在同一個網段,主機A要向主機B發送信息。如圖所示,具體的地址解析過程如下:
(1) 主機A首先查看自己的ARP表,確定其中是否包含有主機B對應的ARP表項。如果找到了對應的MAC地址,則主機A直接利用ARP表中的MAC地址,對IP數據報進行幀封裝,並將IP數據報發送給主機B。
(2) 如果主機A在ARP表中找不到對應的MAC地址,則將緩存該IP數據報,然后以廣播方式發送一個ARP請求報文。ARP請求報文中的發送端IP地址和發送端MAC地址為主機A的IP地址和MAC地址,目標IP地址和目標MAC地址為主機B的IP地址和全0的MAC地址。由於ARP請求報文以廣播方式發送,該網段上的所有主機都可以接收到該請求,但只有被請求的主機(即主機B)會對該請求進行處理。
(3) 主機B比較自己的IP地址和ARP請求報文中的目標IP地址,當兩者相同時進行如下處理:將ARP請求報文中的發送端(即主機A)的IP地址和MAC地址存入自己的ARP表中。之后以單播方式發送ARP響應報文給主機A,其中包含了自己的MAC地址。
(4) 主機A收到ARP響應報文后,將主機B的MAC地址加入到自己的ARP表中以用於后續報文的轉發,同時將IP數據報進行封裝后發送出去。
當主機A和主機B不在同一網段時,主機A就會先向網關發出ARP請求,ARP請求報文中的目標IP地址為網關的IP地址。當主機A從收到的響應報文中獲得網關的MAC地址后,將報文封裝並發給網關。如果網關沒有主機B的ARP表項,網關會廣播ARP請求,目標IP地址為主機B的IP地址,當網關從收到的響應報文中獲得主機B的MAC地址后,就可以將報文發給主機B;如果網關已經有主機B的ARP表項,網關直接把報文發給主機B。
三、ARP表
設備通過ARP解析到目的MAC地址后,將會在自己的ARP表中增加IP地址和MAC地址映射關系的表項,以用於后續到同一目的地報文的轉發。
ARP表項分為動態ARP表項、靜態ARP表項、OpenFlow ARP表項和Rule ARP表項。
動態ARP表項由ARP協議通過ARP報文自動生成和維護,可以被老化,可以被新的ARP報文更新,可以被靜態ARP表項覆蓋。當到達老化時間、接口狀態down時,系統會刪除相應的動態ARP表項。
靜態ARP表項通過手工配置和維護,不會被老化,不會被動態ARP表項覆蓋。
配置靜態ARP表項可以增加通信的安全性。靜態ARP表項可以限制和指定IP地址的設備通信時只使用指定的MAC地址,此時攻擊報文無法修改此表項的IP地址和MAC地址的映射關系,從而保護了本設備和指定設備間的正常通信。
四、配置靜態ARP
操作 |
命令 |
說明 |
|
進入系統視圖 |
system-view |
- |
|
手工添加靜態ARP表項 |
手工添加長靜態ARP表項 |
arp static ip-address mac-address [ vlan-id interface-type interface-number | interface-type interface-number interface-type interface-number | vsi-interface vsi-interface-id tunnel number vsi vsi-name | vsi-interface vsi-interface-id interface-type interface-number service-instance instance-id vsi vsi-name ] [ vpn-instance vpn-instance-name ] |
二者選其一 缺省情況下,不存在靜態ARP表項 |
手工添加短靜態ARP表項 |
arp static ip-address mac-address [ vpn-instance vpn-instance-name ] |
五、ARP顯示命令
在任意視圖下執行display命令可以顯示配置后ARP的運行情況,通過查看顯示信息驗證配置的效果。
在用戶視圖下,用戶可以執行reset命令清除ARP表項。
表1-10 ARP顯示和維護
操作 |
命令 |
顯示ARP表項(獨立運行模式) |
display arp [ [ all | dynamic | multiport | static ] [ slot slot-number ] | vlan vlan-id | interface interface-type interface-number ] [ count | verbose ] |
顯示ARP表項(IRF模式) |
display arp [ [ all | dynamic | multiport | static ] [ chassis chassis-number slot slot-number ] | vlan vlan-id | interface interface-type interface-number ] [ count | verbose ] |
顯示指定IP地址的ARP表項(獨立運行模式) |
display arp ip-address [ slot slot-number ] [ verbose ] |
顯示指定IP地址的ARP表項(IRF模式) |
display arp ip-address [ chassis chassis-number slot slot-number ] [ verbose ] |
顯示設備支持ARP表項的最大數目 |
display arp entry-limit |
顯示指定VPN實例的ARP表項 |
display arp vpn-instance vpn-instance-name [ count ] |
顯示動態ARP表項的老化時間 |
display arp timer aging |
清除ARP表項(獨立運行模式) |
reset arp { all | dynamic | interface interface-type interface-number | multiport | slot slot-number | static } |
清除ARP表項(IRF模式) |
reset arp { all | chassis chassis-number slot slot-number | dynamic | interface interface-type interface-number | multiport | static } |
六、代理ARP
如果ARP請求是從一個網絡的主機發往同一網段卻不在同一物理網絡上的另一台主機,那么連接它們的具有代理ARP功能的設備就可以回答該請求,這個過程稱作代理ARP(Proxy ARP)。
代理ARP功能屏蔽了分離的物理網絡這一事實,使用戶使用起來,好像在同一個物理網絡上。
代理ARP分為普通代理ARP和本地代理ARP,二者的應用場景有所區別:
- 普通代理ARP的應用場景為:想要互通的主機分別連接到設備的不同三層接口上,且這些主機不在同一個廣播域中。
- 本地代理ARP的應用場景為:想要互通的主機連接到設備的同一個三層接口上,且這些主機不在同一個廣播域中。
開啟代理ARP功能
操作 |
命令 |
說明 |
進入系統視圖 |
system-view |
- |
進入接口視圖 |
interface interface-type interface-number |
- |
開啟代理ARP功能 |
proxy-arp enable |
缺省情況下,代理ARP功能處於關閉狀態 |
開啟本地代理ARP功能
操作 |
命令 |
說明 |
進入系統視圖 |
system-view |
- |
進入接口視圖 |
interface interface-type interface-number |
- |
開啟本地代理ARP功能 |
local-proxy-arp enable [ ip-range start-ip-address to end-ip-address ] |
缺省情況下,本地代理ARP功能處於關閉狀態 |
代理ARP顯示和維護
操作 |
命令 |
顯示代理ARP的狀態 |
display proxy-arp [ interface interface-type interface-number ] |
顯示本地代理ARP的狀態 |
display local-proxy-arp [ interface interface-type interface-number ] |