複製鏈接
請複製以下鏈接發送給好友

代理ARP

鎖定
代理ARP是ARP協議的一個變種。 對於沒有配置缺省網關的計算機要和其他網絡中的計算機實現通信,網關收到源計算機的 ARP 請求會使用自己的 MAC 地址與目標計算機的 IP地址對源計算機進行應答。代理ARP就是將一個主機“作為”另一個主機對收到的ARP請求進行應答。它能使得在不影響路由表的情況下添加一個新的Router,使得子網對該主機來説變得更透明化。同時也會帶來巨大的風險,除了ARP欺騙,和某個網段內的ARP增加,最重要的就是無法對網絡拓撲進行網絡概括。代理ARP的使用一般是使用在沒有配置默認網關和路由策略的網絡上的。 [1] 
中文名
代理ARP
外文名
proxy ARP
解    釋
ARP協議的一個變種
設備需求
Cisco 2500系列的router
優    點
子網的變化對主機是透明的
負面影響
需要更大的ARP table來處理

代理ARP簡介

代理ARP是ARP協議的一個變種。對於沒有配置缺省網關的計算機要和其他網絡中的計算機實現通信,網關收到源計算機的 ARP 請求會使用自己的 MAC 地址與目標計算機的 IP地址對源計算機進行應答。代理ARP就是將一個主機作為對另一個主機ARP進行應答。它能使得在不影響路由表的情況下添加一個新的Router,使得子網對該主機來説變得更透明化。同時也會帶來巨大的風險,除了ARP欺騙,和某個網段內的ARP增加,最重要的就是無法對網絡拓撲進行網絡概括。代理ARP的使用一般是使用在沒有配置默認網關和路由策略的網絡上的。 [2] 

代理ARPproxy ARP

代理ARP定義

proxy ARP就是通過使用一個主機(通常為router),來作為指定的設備對另一設備的ARP請求作出應答。

代理ARP工作過程

代理ARP的工作過程如下:
PC1和PC2雖然屬於不同的廣播域,但它們處於同一網段中,因此PC1會向PC2發出ARP請求廣播包,請求獲得PC2的MAC地址。由於路由器不會轉發廣播包,因此ARP請求只能到達路由器,不能到達PC2。
當在路由器上啓用ARP代理後,路由器會查看ARP請求,發現IP地址172.16.20.100屬於它連接的另一個網絡,因此路由器用自己的接口MAC地址代替PC2的MAC地址,向PC1發送了一個ARP應答。
PC1收到ARP應答後,會認為PC2的MAC地址就是00-00-0c-94-36-ab,不會感知到ARP代理的存在。
在PC1的ARP表中可以能看到如下ARP條目:
C:\>arp -a
Interface: 172.16.10.100 --- 0x2
Internet Address Physical Address Type
172.16.20.100 00-00-0c-94-36-ab dynamic
圖示 圖示
在接下來的數據通信中,PC1先將數據發送給路由器,由路由器轉發給PC2。 [3] 
圖示 圖示

代理ARP優點

最主要的一個優點就是能夠在不影響其他router的路由表的情況下在網絡上添加一個新的router,這樣使得子網的變化對主機是透明的
proxy ARP應該使用在主機沒有配置默認網關或沒有任何路由策略的網絡上

代理ARP負面影響

⒈增加了某一網段上ARP流量
⒉主機需要更大的ARP table來處理IP地址到MAC地址的映射
⒊安全問題,比如ARP欺騙(spoofing)
⒋不會為不使用ARP來解析地址的網絡工作
⒌不能夠概括和推廣網絡拓撲 [4] 

代理ARPARP與代理ARP

ARP報文是主機發送出來的,在該主機只知道對方的IP地址且想知道對方的MAC地址時,它以廣播的方式將ARP請求發送到自己所在網段的各個節點。當有主機響應時,回發的報文是單播發送。
代理ARP是當主機知道一個IP地址且它想知道該IP地址對應的MAC地址時,主機廣播發送ARP請求,但是如果有同一網段的部分主機在另一個物理網絡時(比如兩個192.168.1.0的網段,中間夾着一個192.168.2.0的網段),就需要中間設備(路由器)進行代理ARP。因為路由器默認是不轉發廣播報文的,所以當路由器收到ARP請求時,它將啓動代理ARP服務,將發送廣播ARP報文。

代理ARPFAQ

1) 什麼是ARP代理?
路由器收到ARP Request時,若發現查詢的目的IP地址在不同子網,路由器會扮演代理的ARP的角色,代為回答,告訴查詢者它所要做的MAC地址 (用的是之間接口的MAC地址)
2)為什麼要有ARP代理?路由器的一個重要功能是把局域網廣播包限制在該網內,不讓擴散,否則會造成網絡風暴。ARP Request是個廣播包,它詢問的對象若在同一個局域網內,就會回答。但如果查詢對象不在同一個局域網,那怎麼辦呢?為了解決這個問題,路由器就提供一個服務:代理ARP.
3) 還有什麼方法來解決跨局域網的地址查詢? 若主機配置了默認網關,在查詢MAC地址的對象位於局域網之外的時候,可以把查詢任務交給默認網關。
4) 什麼情況下用ARP代理? 網絡中主機、路由器都有ARP cache. 主機通常配置了默認網關,它們會用默認網關查詢局域網外的MAC地址。路由器在需要查詢遠程網段裏的MAC地址時,與其相連接的路由器,在收到ARP Request時就會扮演代理ARP的角色。

代理ARP常見疑問

驗證一些疑問:
⒈ARP請求到底什麼時候會發
⒉代理ARP(proxy arp)會自動響應到哪些網段的ARP請求
⒊代理ARP到底適用什麼樣的環境
下面一個一個説:
⒈首先ARP是Ethernet環境下的一個機制,剛開始的時候有點犯暈,居然在s0口上配了一下,然後去sh arp,還在想怎麼沒東西出來
然後,並不是每一個出外網的包都會產生arp請求(這裏不討論arp cache的問題,默認cache裏都是空的),一個接口,只會向ip地址在本接口配置的子網內的地址發arp請求,而對於ip地址不在接口配置的子網的,就要去查路由表發送了
比如:打開debug arp,e0 ip add 172.16.1.1 255.255.255.128
本地ping 172.16.1.1-1.126都會產生arp請求(arp-cache裏沒有的情況下),
但是ping 172.16.1.128以上都不會了
⒉代理ARP只響應那些在自己的路由表裏能找到的網段,而不是象我以前想的那樣會用自己的mac響應主機所有的arp請求
比如:PC--Route
PC Ether:ip address 172.16.12.2 255.255.0.0
Router:
interface Ethernet0/0:
ip address 172.16.12.1 255.255.255.0
interface Loopback0
ip address 172.16.14.1 255.255.255.0
這樣,在pc上ping 172.16.14.1的時候,可以看到,pc產生了一個arp request,路由器用自己的E0/0 Mac地址回覆了這個請求,也就是做了ARP代理,如果我們ping 172.16.15.1,arp包也被髮到路由上,但是路由器不響應這個arp包。

代理ARP實例配置

代理ARP (proxy ARP),又叫雜錯ARP(promiscuous ARP),它是一種IP網絡地址複用技術。在企業網中有些用户會用到此技術。
代理ARP的原理如圖1:
主網絡
運行ARP
隱藏網絡
隱藏主機
圖中的主網絡和隱藏網絡共享一個網絡地址,也就是説主網絡和隱藏網絡在一個地址段上。代理ARP要求在主網絡採用ARP協議進行IP地址à物理地址映射,當主網絡上各台主機調用ARP解析隱藏網絡上主機的物理地址時,網關G代替主機響應,給出的物理地址是G本身的物理地址,由G來應答。而網關G要求對隱藏網絡的各主機瞭如指掌,這樣所有進入隱藏網絡的數據報文都先送到網關G,網關G在將報文送往應該到達的主機,同樣網關G也掌握主網絡上的主機,以便對外出的數據進行合適的操作。
代理ARP技術涉及到IP 地址和物理地址兩個方面,一方面代理ARP要用IP尋徑,因為它要判斷對那些ARP請求作出響應;另一方面代理ARP又要在網關G建立一張IP-物理地址映射表,它是直接參與物理傳輸的。説它是一種網絡地址複用技術,是因為在代理ARP技術中,一個物理地址對應於若干個IP地址,二者不是一一對應的,這在協議上來説是不合法的 ,因為這樣會引起安全問題,如果某計算機聲稱自己是另外一台計算機,就是對不屬於自己的ARP請求回答自己的物理地址,然後非法接受分組,為了避免這種不安全的因素,有些ARP實現引入了專門的應付機制,一旦發現兩個IP地址映射到同一物理地址,立即發出警告,提醒管理員採取措施。在代理ARP技術中,它不允許產生警告,否則警告報文太多,引起不必要的麻煩。在代理ARP技術中一個重要的概念是“信用”(trust),它的基本思想就是:所有參與ARP的機器要互相協作,不能有欺騙行為,因此所有ARP響應都是合法的。
這種技術廣泛應用在路由器上,在中心局域網路由器的局域網端口設置代理ARP,一些撥號用户就可以使用中心局域網網段來和中心通信,如果路由器還支持動態IP地址池,那麼整個網絡配置就相當簡單了。上海博達數據通信有限公司生產的BDCOM3000系列路由器就支持這種用法,典型的應用如下:
在這個網絡中,路由器作為撥號訪問服務器使用,主要的配置工作集中到中心路由器BDC0M3161上面,在E0端口使用代理ARP技術,路由器上配置動態IP地址池,這樣遠程撥號計算機只需要配置撥號網絡中的電話號碼就能和中心通信了。BDCOM3161相當於 cisco的2511,具有16個異步端口,還有3個同步端口,每個端口最高速率(同步)都是2M,這3個端口也支持異步(根據需要在路由器端口配置同步/異步)。如果全用成異步,可以提供19個異步口。在青海省某銀行就有這種用法。路由器配置如下:
nodename BDCOM3161 設置路由器名字
ippool add remoteip 192.168.1.100 16 設置IP地址池,名字為remoteip 從 192.168.1.100 開始分配,共有16個地址可供分配
e0 進入以太網端口
arpproxy-arp enable 將ARP代理打開
ip add 192.168.1.254 255.255.255.0 設置以太網IP地址
quit 退出E0端口
a0 進入A0端口
encapsulate ppp 將A0端口封裝成PPP協議
ip add 192.168.1.254 255.255.255.0 設置IP地址 (此IP地址和E0端口地址相同)
line dial 將此端口改成撥號線
idletime 300 設置掛機時間(當300秒沒有 業務流量時路由器將MODEM掛斷)
ppp auth pap 在此端口進行PAP認證
給遠程計算機分配地址
quit 退出A0端口
a1
encapsulate ppp
ip add 192.168.1.254 255.255.255.0
line dial
idletime 300
ppp auth pap
ppp ipcp pool remoteip 指定此端口使用地址池remoteip 給遠程計算機分配地址
quit
a2
encapsulate ppp
ip add 192.168.1.254 255.255.255.0
line dial
idletime 300
ppp auth pap
ppp ipcp pool remoteip
quit
a3
encapsulate ppp
ip add 192.168.1.254 255.255.255.0
line dial
idletime 300
ppp auth pap
ppp ipcp pool remoteip
quit
……
a15
encapsulate ppp
ip add 192.168.1.254 255.255.255.0
line dial
idletime 300
ppp auth pap
ppp ipcp pool remoteip
quit
user add bdcom abcd 為PAP認證加用户賬號(bdcom)和口令(abcd)
user add bdcom1 dcba 同上此賬號可以根據需要添加多個
icmp redirect disable 將internet控制報文協議的重定向信息禁止 遠程撥號計算機只需配置撥號網絡的電話號碼,從管理員處得到賬號和密碼,IP地址由路由器自動分配即可。
實例配置:
圖1 圖1
如圖1,交換機連接兩台PC(A和B),最初的時候他們都在一個vlan1內,分別配置IP地址 172.16.1.2/16和172.16.2.2/16 ,均未配置網關,此時可以Ping同對方。
將A加入vlan1 ,vlanif配IP:172.16.1.1/24
將B加入vlan2 ,vlanif配IP:172.16.2.1/24
此時ApingB是ping不通的。
原因猜想:沒有配置網關也沒有配置代理ARP,所以ping不通
當我配置上兩個端口的代理ARP,此時發現還是Ping不同。
此時查看了A的ARP表,發現表中記錄172.16.2.2的MAC地址是B的地址。
此時A發出去的包中封裝的MAC地址是B的,當vlanif收到該幀時,會丟棄該報文
將A的ARP表清空(arp –d),此時再pingB,發現可以Ping通了,A中記錄的關於172.16.2.2的MAC地址已經是vlanif1 的MAC了。
參考資料
  • 1.    施遊,朱小平.攻克要塞精品系列叢書 網絡工程師考試分類練習及全真模擬:中國水利水電出版社,2015
  • 2.    潘順軍. 代理ARP服務功能的應用[J]. 中國金融電腦, 2012(5):66-68.
  • 3.    梁小冰. 一種基於免費ARP實現代理ARP的方法及系統:, CN 102572013 A[P]. 2012.
  • 4.    朱宏志. 巧用代理ARP解決交換機端口不足[J]. 黑客防線, 2004(5X):44-45.