作者:游子興 / 臺灣大學計算機及資訊網路中心資訊網路組資深專員
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。
圖1. ARP 運作原理
ProxyARP在網路設備之預設值
如何觀察目前Layer 3 Gateway介面之ProxyARP設定是開啟或關閉?以Cisco Catalyst設備為例,如圖2,可用“show ip int 介面編號”觀察目前ProxyARP之設定值。
圖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之電腦可以連線。
圖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相同。
圖4. Case1之測試1結果
測試2:使用Domain Name連線臺大首頁及myNTU網站,結果如圖5。測試結果為連線皆正常。
圖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?
圖6. Case2. Mask /8、Gateway未設定
測試1:使用Domain Name連線www.nccu.edu.tw 政大首頁、www.nthu.edu.tw清華大學首頁及www.ncku.edu.tw成功大學首頁,結果如圖7,測試結果為連線皆正常。
圖7. Case2之測試1結果
測試2:使用ICMP Ping這三個網站之Domain Name,得到結果皆屬於140.0.0.0/8網段範圍,而且這些目的IP皆存在於本機電腦之ARP Table,且MAC address皆與Default Gateway相同,結果如圖8。
圖8. Case2之測試2結果
綜觀上述測試結果,結論是此台電腦連線網段140.0.0.0/8皆正常。
Case3. SubMask /0、Gateway未設定
依照前兩項測試結果的啟發,如果可以將子網路SubMask設定成/0,其他維持之前的設定如圖9,那是否就可以連線任意目的 IP,也就是連線Internet都可以正常上網?
無奈天不從人願,使用Windows 10/11作業系統,並不允許Mask /0之設定,會出現錯誤訊息如圖9。
圖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。
圖10. Mask /2、Gateway未設定
另外加碼測試Ubuntu 22.04最小可支援Mask /1之設定,如圖11。依照網路基本原則,允許連線之IP範圍:128.0.0.0 ~ 255.255.255.255,也就是已經涵蓋Internet IPv4一半的網路範圍,實測的結果也確實無誤。
圖11. Ubuntu Mask /1、Gateway未設定
Case4. SubMask /16、Gateway設定錯誤(與GW IP不同網段)
如圖12某台電腦的網路設定,SubMask設定成/16,正確應該為/24,還有預設閘道Gateway設定錯誤,與實際GW IP不同網段,DNS有正確設定。上述設定依照網路基本原理,是否只能連線140.112.0.0/16網段呢?
圖12. Case4. Mask /16、Gateway設定錯誤(與GW IP不同網段)
實測測試連線Google網站及SpeedTest測速網站皆正常,如圖13,並觀察測試電腦的ARP Table,發現所設定錯誤的預設閘道140.112.1.1之MAC address與實際之Gateway IP MAC address完全相同,因此,此電腦可以正常連線上網。
圖13. Case4.連線測試結果
圖14. Case4. 測試電腦ARP Table 記錄
Case5. SubMask /16、Gateway 設定錯誤(與GW IP相同網段)
如圖15某台電腦的網路設定,SubMask設定成/16,正確應該為/24,還有預設閘道Gateway設定錯誤,與實際GW IP相同網段,DNS有正確設定。
圖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。
圖16. Case5測試電腦ARP Table記錄
結論
ProxyARP之設定值在Enable的狀態下,對於使用者端的電腦IP設定容錯之空間非常大,如上述Case1~Case4之測試,不論是Mask或Gateway設定錯誤,皆不影響使用者電腦正常上網。
因此本文建議ProxyARP若是使用於Edge端環境,用途為單純提供使用者上網連線Internet之環境,例如:校園網路、宿舍網路,則建議維持其預設值Enabled開啟之狀況,因為使用者電腦SubMask、Gateway即使設定錯誤,並不影響上網。而且若貿然由Enabled改成Disabled,可能會立即影響部分使用者無法上網。
至於其他有利用網段區分限制存取之環境,例如:Server Farm雲端VM環境,分別配發獨立網段,則建議ProxyARP可設定為Disabled。