跳到主要內容區塊

計資中心電子報C&INC E-paper

專題報導

歷史悠久卻超乎想像的ProxyARP原理介紹與案例分享
  • 卷期:v0071
  • 出版日期:2024-12-20

作者:游子興 / 臺灣大學計算機及資訊網路中心資訊網路組資深專員


ProxyARP在路由器上是一個存在許久的設定,大部分的網路設定教學都建議將此設定關閉,以避免不正常的網路連線發生。本文詳細探討ProxyARP之原理與發生的過程,並實測五種不同案例來驗證與深入瞭解ProxyARP之作用,最後建議網管可依照不同的環境情況,來決定是否應開啟ProxyARP功能。

 

ARP運作原理

當某台電腦Src IP準備將封包傳送給對方Dest IP時,並不會立刻送出封包,而是在網路底層先檢查目前電腦中的 ARP Table 是否已存在 Dest IP 記錄,若沒有,則會先發送ARP Request封包去詢問目的IP之MAC address。

而ARP Request詢問Dest IP又可區分成兩種情況,其一為Dest IP與自己同網段,則ARP之Target IP 直接詢問對方,另一種情況為Dest IP與自己不同網段,則ARP之Target IP詢問Gateway,如圖1。

20241220_007103_01

圖1. ARP 運作原理

 

ProxyARP在網路設備之預設值

如何觀察目前Layer 3 Gateway介面之ProxyARP設定是開啟或關閉?以Cisco Catalyst設備為例,如圖2,可用“show ip int 介面編號”觀察目前ProxyARP之設定值。

20241220_007103_02

圖2. Cisco Catalyst設備顯示ProxyARP設定值

 

若要關閉ProxyARP,可用如下指令將其關閉:

IOU1(config)# int e0/0

IOU1(config-if)# no ip proxy-arp

 

另外,在Cisco不同型號設備,其預設ProxyARP設定值略有不同,以下列出幾款Cisco不同系列ProxyARP之預設值。

作業系統:Cisco IOS

型號:

Catalyst 2960/3560/3650/3850/6509

ProxyARP is Enabled

 

作業系統:Cisco IOS XE

型號:Catalyst 9200/9300/9400

ProxyARP is Enabled

 

作業系統:Cisco IOS XR

型號:ASR9K

ProxyARP is Disabled.

 

其中可觀察出Cisco Edge系列設備之ProxyARP預設為Enabled,而Border系列設備之ProxyARP預設為Disabled。

 

ProxyARP運作原理

ProxyARP之運作過程可分成兩個Phase來分析:

Phase1:

電腦端:封包Dest IP與自己相同網段,送出ARP Request

Router端:

收到ARP Request且Src IP與介面Gateway IP同網段.(若不同網段則丟棄不做處理)

ARP Target IP為介面GW IP:ARP Reply

ARP Target IP與介面GW IP同網段:忽略不處理

ARP Target IP與介面GW IP不同網段 & ProxyARPEnable:查詢路由表是否有可到達目的IP之路由(含 Default Route),若有則使用介面MAC addr(GW)代為回覆ARP封包。

 

Phase2:與一般行為相同

電腦端:送出真正封包to ARP中目的MAC addr

Router端:Gateway依據路由表進行轉送

 

案例環境介紹

在一個Default Gateway為140.112.237.254/24之環境下,且ProxyARP使用預設值”Enable”的狀態下,以下舉五個案例介紹。

 

Case1. SubMask /16、Gateway未設定

如圖3某台電腦的網路設定,子網路遮罩SubMask設定成/16,正確應該為/24,還有預設閘道Gateway沒有設定,DNS有正確設定。上述設定依照網路基本原理,理論上應該只有同網段140.112.237.0/24之電腦可以連線。

20241220_007103_03

圖3. Case1. Mask /16、Gateway未設定

 

測試1:使用ICMP Ping校內DNS Server及HTTP IP連線網站140.112.2.208、140.112.8.119,結果如圖4,測試結果為連線皆正常,而且這些Dest IP之ARP Table記錄之MAC address皆與Default Gateway相同。

 

20241220_007103_04

圖4. Case1之測試1結果

 

測試2:使用Domain Name連線臺大首頁及myNTU網站,結果如圖5。測試結果為連線皆正常。

20241220_007103_05

 

圖5. Case1之測試2結果

 

綜觀上述測試結果,結論是連線校內網段140.112.0.0/16皆正常。原因與過程分析如下:

1.電腦端發現連線Dest IP在同網段140.112.0.0/16,送出ARP Request

2.Router端收到ARP Request且Src IP為140.112.237.10與介面GW IP 140.112.237.254同網段,正常可進行後續處理。

3.Router端收到ARP Request之Target IP與目前介面GW IP不同網段,而且該介面ProxyARP設定為Enable狀態

4. Router端查詢路由表,是否有可到達目的IP之路由(含Default Route)

5. Router端確認有存在路由表,使用介面GW MAC addr代為回覆ARP封包(如圖4. ARP Table記錄之MAC address皆與Default Gateway相同)

 

Case2. SubMask /8、Gateway未設定

如圖6電腦的網路設定,子網路遮罩SubMask設定成/8,正確應該為/24,預設閘道Gateway沒有設定,DNS有正確設定。依照這樣的設定,大家推測到底可以連線哪些目的IP?

20241220_007103_06

圖6. Case2. Mask /8、Gateway未設定

 

測試1:使用Domain Name連線www.nccu.edu.tw 政大首頁、www.nthu.edu.tw清華大學首頁及www.ncku.edu.tw成功大學首頁,結果如圖7,測試結果為連線皆正常。

20241220_007103_07

圖7. Case2之測試1結果

 

測試2:使用ICMP Ping這三個網站之Domain Name,得到結果皆屬於140.0.0.0/8網段範圍,而且這些目的IP皆存在於本機電腦之ARP Table,且MAC address皆與Default Gateway相同,結果如圖8。

20241220_007103_08

圖8. Case2之測試2結果

 

綜觀上述測試結果,結論是此台電腦連線網段140.0.0.0/8皆正常。

 

Case3. SubMask /0、Gateway未設定

依照前兩項測試結果的啟發,如果可以將子網路SubMask設定成/0,其他維持之前的設定如圖9,那是否就可以連線任意目的 IP,也就是連線Internet都可以正常上網?

無奈天不從人願,使用Windows 10/11作業系統,並不允許Mask /0之設定,會出現錯誤訊息如圖9。

 

20241220_007103_09

圖9. Case3. Mask /0、Gateway未設定

 

經反覆測試,發現Windows10/11支援最小SubMask設定為/2,如圖10。依照網路基本原則,允許連線IP之範圍:128.0.0.0 ~ 191.255.255.255,實測的結果確實可以連線HiNet DNS 168.95.1.1,臺大區網網站163.28.16.0/22http://163.28.16.52/mrtg

20241220_007103_10

圖10. Mask /2、Gateway未設定

 

另外加碼測試Ubuntu 22.04最小可支援Mask /1之設定,如圖11。依照網路基本原則,允許連線之IP範圍:128.0.0.0 ~ 255.255.255.255,也就是已經涵蓋Internet IPv4一半的網路範圍,實測的結果也確實無誤。

 

20241220_007103_11

圖11. Ubuntu Mask /1、Gateway未設定

 

Case4. SubMask /16、Gateway設定錯誤(與GW IP不同網段)

如圖12某台電腦的網路設定,SubMask設定成/16,正確應該為/24,還有預設閘道Gateway設定錯誤,與實際GW IP不同網段,DNS有正確設定。上述設定依照網路基本原理,是否只能連線140.112.0.0/16網段呢?

 

20241220_007103_12

圖12. Case4. Mask /16、Gateway設定錯誤(與GW IP不同網段)

 

實測測試連線Google網站及SpeedTest測速網站皆正常,如圖13,並觀察測試電腦的ARP Table,發現所設定錯誤的預設閘道140.112.1.1之MAC address與實際之Gateway IP MAC address完全相同,因此,此電腦可以正常連線上網。

 

20241220_007103_13

圖13. Case4.連線測試結果

 

20241220_007103_14

圖14. Case4. 測試電腦ARP Table 記錄

 

Case5. SubMask /16、Gateway 設定錯誤(與GW IP相同網段)

如圖15某台電腦的網路設定,SubMask設定成/16,正確應該為/24,還有預設閘道Gateway設定錯誤,與實際GW IP相同網段,DNS有正確設定。

20241220_007103_15

圖15. Case5. Mask /16、Gateway設定錯誤(與GW IP相同網段)

 

實測結果發現僅能連線網段140.112.0.0/16,因為所設定之錯誤預設閘道IP 140.112.237.100與GW IP同網段,Router不會代為發送arp reply,因此在ARP Table無相關記錄,如圖16。

20241220_007103_16

圖16. Case5測試電腦ARP Table記錄

 

結論

ProxyARP之設定值在Enable的狀態下,對於使用者端的電腦IP設定容錯之空間非常大,如上述Case1~Case4之測試,不論是Mask或Gateway設定錯誤,皆不影響使用者電腦正常上網。

因此本文建議ProxyARP若是使用於Edge端環境,用途為單純提供使用者上網連線Internet之環境,例如:校園網路、宿舍網路,則建議維持其預設值Enabled開啟之狀況,因為使用者電腦SubMask、Gateway即使設定錯誤,並不影響上網。而且若貿然由Enabled改成Disabled,可能會立即影響部分使用者無法上網。

至於其他有利用網段區分限制存取之環境,例如:Server Farm雲端VM環境,分別配發獨立網段,則建議ProxyARP可設定為Disabled。