網(wǎng)絡(luò)工程師應(yīng)該了解的ARP知識
動態(tài)ARP表項學(xué)習(xí)
大多數(shù)情況下,設(shè)備可以通過ARP協(xié)議動態(tài)學(xué)習(xí)和更新ARP表項。設(shè)備是如何進行動態(tài)學(xué)習(xí)的呢?其實動態(tài)ARP主要是通過廣播ARP請求報文和單播ARP應(yīng)答報文這兩個過程完成地址解析的。
例如:小A和小C在一次聚會上互留了IP地址。如上圖所示,小A需要與小C進行通信時,知道了小C的IP地址為10.1.1.3/24,判斷后發(fā)現(xiàn)與自己在同一網(wǎng)段10.1.1.0/24,于是小A會廣播發(fā)送一個ARP請求報文,請求小C的MAC地址。
小C收到ARP請求報文后,會單播發(fā)送一個ARP應(yīng)答報文,告訴對方自己的MAC地址是3-3-3。(在同一網(wǎng)段的小B也會收到ARP請求報文,但是由于ARP請求報文中的目的IP地址不是小B的IP地址,因此小B不會進行應(yīng)答。)
小A收到ARP應(yīng)答報文后,就會在自己的ARP表中增加一條動態(tài)表項:IP地址10.1.1.3對應(yīng)MAC地址3-3-3,這樣小A就可以與小C進行通信啦。
說明:一方面由于ARP表的容量限制,另一方面也為了保證動態(tài)ARP表項的準(zhǔn)確性,PC或交換機會對學(xué)習(xí)到的動態(tài)ARP表項進行老化。交換機上動態(tài)ARP表項有一定的老化時間,缺省值是20分鐘,一般建議使用缺省值。
設(shè)備上動態(tài)ARP表項到達老化時間后,設(shè)備會發(fā)送老化探測報文(即ARP請求報文),如果能收到ARP應(yīng)答報文,則更新該動態(tài)ARP表項,本次老化探測結(jié)束;如果超過設(shè)置的老化探測次數(shù)后仍沒有收到ARP應(yīng)答報文,則刪除該動態(tài)ARP表項,本次老化探測結(jié)束。
靜態(tài)ARP表項配置
對于網(wǎng)絡(luò)中的重要設(shè)備,如服務(wù)器等,我們可以在交換機上配置靜態(tài)ARP表項。這樣可以避免交換機上重要設(shè)備IP地址對應(yīng)的ARP表項被ARP攻擊報文錯誤更新,從而保證用戶與重要設(shè)備之間正常通信。
靜態(tài)ARP表項不會老化,不會被動態(tài)ARP表項覆蓋。用戶可以通過手工方式配置靜態(tài)ARP表項
例如,網(wǎng)絡(luò)中有一臺重要的服務(wù)器,服務(wù)器的IP地址為172.16.10.2,MAC地址為0023-0045-0067。如果交換機與這臺服務(wù)器相連的接口GE1/0/1處于二層模式,并加入VLAN100。這時可以在交換機上為服務(wù)器配置一條對應(yīng)的ARP表項,具體配置如下。
- <Quidway> system-view
- [Quidway] vlan batch 100
- [Quidway] interface vlanif 100
- [Quidway-Vlanif100] ip address 172.16.10.1 24 //VLANIF接口的IP地址需要與靜態(tài)ARP表項中的IP地址(172.16.10.2)同網(wǎng)段。
- [Quidway-Vlanif100] quit
- [Quidway] interface gigabitethernet 1/0/1
- [Quidway-GigabitEthernet1/0/1] port link-type access
- [Quidway-GigabitEthernet1/0/1] port default vlan 100 //接口GigabitEthernet1/0/1處于二層模式,需要加入VLAN100。
- [Quidway-GigabitEthernet1/0/1] quit
- [Quidway] arp static 172.16.10.2 0023-0045-0067 vid 100 interface gigabitethernet 1/0/1
還是上面的那臺服務(wù)器,如果交換機與服務(wù)器相連的接口處于三層模式,這時在交換機上配置靜態(tài)ARP表項,可以參考如下配置。
- <Quidway> system-view
- [Quidway] interface gigabitethernet 1/0/1
- [Quidway-GigabitEthernet1/0/1] undo portswitch
- [Quidway-GigabitEthernet1/0/1] ip address 172.16.10.1 24 //GigabitEthernet1/0/1的IP地址需要與靜態(tài)ARP表項中的IP地址(172.16.10.2)同網(wǎng)段。
- [Quidway-GigabitEthernet1/0/1] quit
- [Quidway] arp static 172.16.10.2 0023-0045-0067 interface gigabitethernet 1/0/1
ARP代理(即Proxy ARP)
前面我們提到,主機進行動態(tài)ARP學(xué)習(xí)時,如果發(fā)現(xiàn)目的IP地址與自己在同一網(wǎng)段,會發(fā)送廣播ARP請求報文進行ARP學(xué)習(xí)。但是呢,有些情況下兩臺主機雖然在同一網(wǎng)段,但不在同一廣播域,目的主機是無法收到ARP請求報文的,因而也就無法成功學(xué)習(xí)到ARP表項。
在連接兩臺主機的交換機上使能ARP代理后,交換機相當(dāng)于一個中介,Host_1發(fā)送ARP請求報文請求Host_2的MAC地址的時候,交換機會將自己的MAC地址告訴Host_1。這樣Host_1發(fā)給Host_2的數(shù)據(jù)報文會先發(fā)給交換機,再由交換機轉(zhuǎn)發(fā)給Host_2。
例如下面的三種情況,我們就可以用到ARP代理。
情況一:需要互通的主機Host_1與Host_2(主機上沒有配置缺省網(wǎng)關(guān))處于相同的網(wǎng)段但不在同一物理網(wǎng)絡(luò)(即不在同一廣播域)。由于在不同的廣播域,Host_1發(fā)送的ARP請求報文Host_2是收不到的,這時可以在交換機的VLANIF10和VLANIF20接口上使能路由式Proxy ARP功能(arp-proxy enable),實現(xiàn)Host_1與Host_2之間的互通。
情況二:需要互通的主機Host_1與Host_2處于相同網(wǎng)段,并且屬于相同VLAN,但是VLAN內(nèi)接口IF_1與IF_2配置了端口隔離。由于IF_1與IF_2之間端口隔離,Host_1發(fā)送的ARP請求報文Host_2是收不到的,這時可以在Switch上關(guān)聯(lián)了VLAN10的VLANIF接口上使能VLAN內(nèi)Proxy ARP功能(arp-proxy inner-sub-vlan-proxy enable),實現(xiàn)Host_1與Host_2之間的三層互通。
情況三:需要互通的主機Host_1與Host_2處于相同網(wǎng)段,但屬于不同VLAN。由于不在同一VLAN,Host_1發(fā)送的ARP請求報文Host_2當(dāng)然也是收不到的,這時可以在Switch上關(guān)聯(lián)了VLAN10和VLAN20的VLANIF30接口上使能VLAN間Proxy ARP功能(arp-proxy inter-sub-vlan-proxy enable),實現(xiàn)Host_1與Host_2之間的三層互通。
如何保證ARP表安全?
1. 保證合法用戶的ARP報文可以上送CPU處理
缺省情況下,為了保證CPU的正常運行,交換機對每種上送CPU的協(xié)議報文都設(shè)置了CPCAR值,對于超過CPCAR值的報文就會被丟棄。如果非法用戶發(fā)送大量的ARP報文,就會導(dǎo)致合法用戶的ARP報文無法上送CPU,也就無法正常生成ARP表項。
(1) ARP報文限速功能
基于源MAC地址對ARP報文限速。
- [HUAWEI] arp speed-limit source-mac maximum 10 //對于任意MAC地址,每秒最多允許10個ARP報文通過
基于源IP地址對ARP報文限速。
- [HUAWEI] arp speed-limit source-ip maximum 10 //對于任意IP地址,每秒最多允許10個ARP報文通過
基于全局對ARP報文限速。
- [HUAWEI] arp anti-attack rate-limit enable //開啟ARP限速功能
- [HUAWEI] arp anti-attack rate-limit packet 200 interval 10 //指定設(shè)備在10秒鐘內(nèi)最多允許上送200個ARP報文,超過限速值則丟棄
基于VLAN對ARP報文限速。
- [HUAWEI-vlan3] arp anti-attack rate-limit enable //開啟ARP限速功能
- [HUAWEI-vlan3] arp anti-attack rate-limit packet 200 interval 10 //指定VLAN3在10秒鐘內(nèi)最多允許上送200個ARP報文,超過限速值則丟棄
基于接口對ARP報文限速。
- [HUAWEI-GigabitEthernet0/0/1] arp anti-attack rate-limit enable //開啟ARP限速功能
- [HUAWEI-GigabitEthernet0/0/1] arp anti-attack rate-limit packet 200 interval 10 //指定接口GE0/0/1在10秒鐘內(nèi)最多允許上送200個ARP報文,超過限速值則丟棄
(2) ARP Miss消息限速功能
如果網(wǎng)絡(luò)中有用戶向設(shè)備發(fā)送大量目標(biāo)IP地址不能解析的IP報文(即路由表中存在該IP報文的目的IP對應(yīng)的路由表項,但設(shè)備上沒有該路由表項中下一跳對應(yīng)的ARP表項),將導(dǎo)致設(shè)備觸發(fā)大量的ARP Miss消息。這種觸發(fā)ARP Miss消息的IP報文會被上送到CPU進行處理,設(shè)備會根據(jù)ARP Miss消息生成和下發(fā)大量臨時ARP表項并向目的網(wǎng)絡(luò)發(fā)送大量ARP請求報文,這樣就增加了設(shè)備CPU的負擔(dān)。
通過對ARP Miss消息進行限速,可以減少設(shè)備CPU的負擔(dān),這樣合法用戶的ARP報文就有可能會被上送處理。
基于源IP地址的ARP Miss消息限速。
- [HUAWEI] arp-miss speed-limit source-ip maximum 60 //允許設(shè)備每秒最多處理同一個源IP地址觸發(fā)的60個ARP Miss消息
在全局對ARP Miss消息限速。另外也可以基于VLAN或接口對ARP Miss消息限速。
- [HUAWEI] arp-miss anti-attack rate-limit enable //開啟ARP Miss限速功能
- [HUAWEI] arp-miss anti-attack rate-limit packet 200 interval 10 //指定設(shè)備在10秒鐘內(nèi)最多允許上送200個ARP Miss消息,超過限速值則丟棄
(3) 出口ARP檢測功能
出口ARP檢測就是通過減少VLAN內(nèi)廣播報文較少CPU的負擔(dān)。其核心原理是根據(jù)DHCP Snooping表查找目的IP地址對應(yīng)的出接口,將ARP請求報文直接從查找到的出接口發(fā)送出去,減少VLAN內(nèi)廣播的ARP報文,從而減少CPU的負擔(dān)。
出口ARP檢測功能主要是為了減少網(wǎng)關(guān)設(shè)備處理的ARP報文個數(shù)。如圖1所示,通過在L2switch上使能出口ARP檢測功能,可以在L2switch廣播ARP請求報文之前,查找DHCP Snooping綁定表,如果能夠找到ARP報文中目的IP地址對應(yīng)的出接口,則將ARP請求報文從找到的出接口發(fā)送出去,有效減少網(wǎng)關(guān)收到的ARP請求報文數(shù)量。
出口ARP檢測功能配置方法如下:
- [L2switch] dhcp enable //全局使能DHCP功能
- [L2switch] dhcp snooping enable //全局使能DHCP Snooping功能
- [L2switch] vlan 10
- [L2switch-vlan10] dhcp snooping enable
- [L2switch-vlan10] dhcp snooping arp security enable //使能出口ARP檢測功能
2. 保證ARP表項的正確性
(1) 防止仿冒網(wǎng)關(guān)攻擊
提供下面幾種方法防止仿冒網(wǎng)關(guān)的攻擊
配置方法如下:
配置網(wǎng)關(guān)定時發(fā)送免費ARP報文。
- [Gateway] arp gratuitous-arp send enable //使能發(fā)送免費ARP報文,默認是發(fā)送時間間隔是30秒
配置ARP防網(wǎng)關(guān)沖突檢測。
- [Gateway] arp anti-attack gateway-duplicate enable
配置ARP網(wǎng)關(guān)保護功能。
- [L2switch] interface gigabitethernet 0/0/1
- [L2switch-GigabitEthernet0/0/1] arp filter source 10.1.1.1 //被保護的網(wǎng)關(guān)IP地址是10.1.1.1
(2) 防止仿冒合法用戶攻擊
ARP表項固化:
- fixed-mac:ARP報文中的MAC地址與ARP表中對應(yīng)條目的MAC地址不符則丟棄。
- fixed-all:ARP報文中的MAC地址、接口、VLAN信息和ARP表項中的信息任一不匹配則丟棄。
- send-ack:設(shè)備對收到涉及MAC地址、VLAN、或接口信息修改的ARP報文時,先發(fā)送ARP請求報文,未收到回應(yīng)則丟棄。
動態(tài)ARP檢測功能:
設(shè)備將根據(jù)DHCP Snooping綁定表對收到的ARP報文的IP地址、MAC地址、VLAN或接口信息與綁定表中記錄的表項內(nèi)容進行檢查,不匹配則直接丟棄。
配置ARP表項固化,可以基于全局和接口分別進行配置。
- [Gateway] arp anti-attack entry-check fixed-mac enable //指定固化方式是fixed-mac
配置動態(tài)ARP檢測功能,可以基于接口和VLAN分別進行配置。
- [Gateway] vlan 10
- [Gateway-vlan10] arp anti-attack check user-bind enable
3. 保證合法用戶的ARP表項可以正常生成
(1) 限制可以學(xué)習(xí)的ARP表項數(shù)量
當(dāng)發(fā)現(xiàn)某個接口下存在攻擊者,占用大量ARP表資源時,通過限制該接口可以學(xué)習(xí)的ARP表項數(shù)量,可以避免ARP表被耗盡。當(dāng)接口上學(xué)習(xí)到的ARP表達到指定的限制值時,該接口不再學(xué)習(xí)新的ARP表項。
(2) ARP表項嚴(yán)格學(xué)習(xí)
只有本設(shè)備主動發(fā)送的ARP請求報文的應(yīng)答報文才能觸發(fā)本設(shè)備進行ARP學(xué)習(xí),其他設(shè)備主動向本設(shè)備發(fā)送的ARP報文不能觸發(fā)本設(shè)備進行ARP學(xué)習(xí)。
配置方法如下:
限制ARP表項。
- [HUAWEI] interface gigabitethernet 0/0/1
- [HUAWEI-GigabitEthernet0/0/1] arp-limit vlan 10 maximum 20 //配置接口GE0/0/1最多可以學(xué)習(xí)到20個VLAN10內(nèi)的動態(tài)ARP表項
配置ARP表項嚴(yán)格學(xué)習(xí)。
- [HUAWEI] arp learning strict //配置ARP表項嚴(yán)格學(xué)習(xí)
查看ARP表
- 想查看所有的ARP表項 :display arp all
- 想查看動態(tài)的ARP表項 :display arp dynamic
- 想查看靜態(tài)的ARP表項:display arp static
- 想查看某一網(wǎng)段的ARP表項:display arp network x.x.x.x
- 想查看某一接口相關(guān)的ARP表項:display arp interface xx
- 想查看某一VPN實例的ARP表項:display arp vpn-instance xx
- 想查看某個具體IP地址的ARP表項:display arp all | include x.x.x.x