簡介
本文檔介紹代理ARP如何幫助子網中的電腦到達遠端子網而無需配置路由或預設網關。
必要條件
需求
本文檔要求您瞭解代理地址解析協定(ARP)和乙太網環境。
採用元件
本文中的資訊係根據以下軟體和硬體版本:
-
Cisco IOS®軟體版本12.2(10b)
-
Cisco 2500系列路由器
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
慣例
如需文件慣例的詳細資訊,請參閱思科技術提示慣例。
背景資訊
本檔案將說明代理位址解析通訊協定(ARP)的概念。代理ARP是一種技術,透過這種技術,一台主機(通常是路由器)可以應答發往另一台電腦的ARP請求。如果您偽造其身份,路由器就會承擔將資料包路由到「真實」目的地的責任。代理ARP可以幫助子網中的電腦到達遠端子網,而無需配置路由或預設網關。代理ARP在RFC 1027中進行定義。
代理ARP如何工作?
以下是代理ARP運作方式的範例:
網路圖表
網路圖表
子網路 A 上的主機 A (172.16.10.100) 需要向子網路 B 上的主機 D (172.16.20.200) 傳送封包。如圖表所示,主機 A 有一個 /16 子網路遮罩。這意味著主機A認為它直接連線到所有網路172.16.0.0。當主機A需要與它認為直接連線的任何裝置通訊時,它會向目的裝置傳送ARP請求。因此,當主機A需要將封包傳送到主機D時,主機A會認為主機D是直接連線的,因此會向主機D傳送ARP要求。
為了到達主機D (172.16.20.200),主機A需要主機D的MAC地址。
因此,主機A在子網A上廣播一個ARP請求,如下所示:
發件人MAC地址 |
發件人IP地址 |
目標MAC地址 |
目標IP地址 |
00-00-0c-94-36-aa |
172.16.10.100 |
00-00-00-00-00-00 |
172.16.20.200 |
在此ARP請求中,主機A (172.16.10.100)請求主機D (172.16.20.200)傳送其MAC地址。然後,將ARP請求資料包封裝到以主機A的MAC地址作為源地址,以廣播(FFFF.FFFF.FFFF)作為目的地址的乙太網幀中。因為ARP請求是廣播,所以它到達子網A中的所有節點,包括路由器的e0介面,但不到達主機D。廣播無法到達主機D,因為路由器預設不轉發廣播。
由於路由器知道目標地址(172.16.20.200)位於另一個子網上,並且可以到達主機D,因此它會使用自己的MAC地址向主機A回覆。
發件人MAC地址 |
發件人IP地址 |
目標MAC地址 |
目標IP地址 |
00-00-0c-94-36-ab |
172.16.20.200 |
00-00-0c-94-36-aa |
172.16.10.100 |
這是路由器傳送到主機A的代理ARP應答。代理ARP應答資料包封裝在乙太網幀中,以路由器的MAC地址作為源地址,以主機A的MAC地址作為目的地址。ARP應答始終是單播給原始請求者。
收到此 ARP 回覆後,主機 A 會更新其 ARP 表,如下所示:
IP 位址 |
MAC 地址 |
172.16.20.200 |
00-00-0c-94-36-ab |
從現在起,主機A將想要到達172.16.20.200(主機D)的所有資料包轉發到MAC地址00-00-0c-94-36-ab(路由器)。由於路由器知道如何到達主機D,因此路由器將資料包轉發到主機D。子網A中主機的ARP快取中填充了子網B中所有主機的路由器MAC地址。因此,發往子網B的所有資料包都將傳送到路由器。路由器將這些資料包轉發到子網B中的主機。
主機A的ARP快取如下表所示:
IP 位址 |
MAC 地址 |
172.16.20.200 |
00-00-0c-94-36-ab |
172.16.20.100 |
00-00-0c-94-36-ab |
172.16.10.99 |
00-00-0c-94-36-ab |
172.16.10.200 |
00-00-0c-94-36-bb |
附註:多個 IP 位址對應至一個 MAC 位址,即本路由器的 MAC 位址,表示正在使用代理 ARP。
Cisco的介面必須配置為接受和響應代理ARP。依預設會啟用此功能。必須在連線到ISP路由器的路由器介面上配置no ip proxy-arp命令。可以使用介面配置命令no ip proxy-arp 在每個介面上單獨停用代理ARP,如下所示:
Router# configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)# interface ethernet 0
Router(config-if)# no ip proxy-arp
Router(config-if)# ^Z
Router#
要在介面上啟用代理ARP,請發出ip proxy-arp介面配置命令。
附註:當子網路 A 上的主機 B (172.16.10.200/24) 嘗試將封包傳送至子網路 B 上的目的地主機 D (172.16.20.200) 時,它會查看其 IP 路由表並據此路由傳送封包。主機B (172.16.10.200/24)不對主機D的IP地址172.16.20.200進行ARP操作,因為它屬於與主機B乙太網介面172.16.20.200/24上配置不同的子網。
代理ARP的優點
代理ARP的主要優點是可以增加到網路中的單個路由器,而不會干擾網路中其它路由器的路由表。
代理ARP必須用於未配置預設網關或沒有任何路由智慧的IP主機的網路。
代理ARP的缺點
主機不知道其網路的物理詳細資訊,假設它是平面網路,如果傳送ARP請求,它們可以到達任何目的地。使用ARP處理一切有缺點。以下是一些缺點:
-
它會增加網段上的ARP流量。
-
主機需要更大的ARP表才能處理IP到MAC地址的對映。
-
安全可能會受到損害。一台機器可以聲稱自己是另一台機器以攔截資料包,這種行為稱為「欺騙」。
-
它不適用於不使用ARP進行地址解析的網路。
-
它不會泛化到所有網路拓撲。例如,連線兩個物理網路的多個路由器。
相關資訊