基本介紹
- 中文名:代理ARP
- 外文名:proxy ARP
- 解釋:ARP協定的一個變種
- 設備需求:Cisco 2500系列的router
- 優點:子網的變化對主機是透明的
- 負面影響:需要更大的ARP table來處理
簡介,proxy ARP,定義,工作過程,優點,負面影響,ARP與代理ARP,FAQ,常見疑問,適用環境,實例配置,
簡介
代理ARP是ARP協定的一個變種。對於沒有配置預設網關的計算機要和其他網路中的計算機實現通信,網關收到源計算機的 ARP 請求會使用自己的 MAC 地址與目標計算機的 IP位址對源計算機進行應答。代理ARP就是將一個主機作為對另一個主機ARP進行應答。它能使得在不影響路由表的情況下添加一個新的Router,使得子網對該主機來說變得更透明化。同時也會帶來巨大的風險,除了ARP欺騙,和某個網段內的ARP增加,最重要的就是無法對網路拓撲進行網路概括。代理ARP的使用一般是使用在沒有配置默認網關和路由策略的網路上的。
proxy ARP
定義
proxy ARP就是通過使用一個主機(通常為router),來作為指定的設備對另一設備的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。
優點
最主要的一個優點就是能夠在不影響其他router的路由表的情況下在網路上添加一個新的router,這樣使得子網的變化對主機是透明的
負面影響
⒈增加了某一網段上ARP流量
⒉主機需要更大的ARP table來處理IP位址到MAC地址的映射
⒊安全問題,比如ARP欺騙(spoofing)
⒋不會為不使用ARP來解析地址的網路工作
⒌不能夠概括和推廣網路拓撲
ARP與代理ARP
ARP報文是主機傳送出來的,在該主機只知道對方的IP位址且想知道對方的MAC地址時,它以廣播的方式將ARP請求傳送到自己所在網段的各個節點。當有主機回響時,回發的報文是單播傳送。
代理ARP是當主機知道一個IP位址且它想知道該IP位址對應的MAC地址時,主機廣播傳送ARP請求,但是如果有同一網段的部分主機在另一個物理網路時(比如兩個192.168.1.0的網段,中間夾著一個192.168.2.0的網段),就需要中間設備(路由器)進行代理ARP。因為路由器默認是不轉發廣播報文的,所以當路由器收到ARP請求時,它將啟動代理ARP服務,將傳送廣播ARP報文。
FAQ
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(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起到了一個提供網關的作用,其實通過上面第一個驗證,很明顯這個說法是完全不正確的,因為只有請求本網段的ip的時候才會產生arp請求,代理arp最多也只能代理對於產生這個arp請求的主機是“同一個子網”的ip,這算什麼網關呢?
***************這個作者顯然是錯的,當主機未配置默認路由時,ping非本網段地址,會向網路傳送此非本網段地址的ARP請求,並且開啟了代理ARP的設備接口有該非本網段路由時,會將自己的MAC進行ARP答覆,實現ARP代理功能。本網段內的訪問僅僅是簡單的廣播定址,不涉及代理ARP,當主機配置默認路由時,該ARP請求直接請求的就是網關的ARP,也不涉及代理ARP,所以所謂的代理ARP相當於網關是有道理的。在配置了網關的設備上是不會出現代理ARP的問題********************************
那代理ARP到底有什麼用呢?
下面這個圖也許比較能說明問題
看到了吧,注意主機上的子網位數的配置,似乎只有在這種“怪異”的場合才會用到代理arp,AC通信,A以為C在自己的子網內,直接發arp,路由e0接到這個arp請求,然後發現請求的ip地址在自己直連的網段中(在路由表中能找到),這樣,就用e0口回響了這個arp請求,完成了代理ARP
實例配置
代理ARP (proxy ARP),又叫雜錯ARP(promiscuous ARP),它是一種IP網路地址復用技術。在企業網中有些用戶會用到此技術。
代理ARP的原理如圖1:
主網路
。
運行ARP
隱藏網路
。
隱藏主機
代理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 同上此帳號可以根據需要添加多個
實例配置:
如圖,交換機連線兩台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的ARP表清空(arp –d),此時再pingB,發現可以Ping通了,A中記錄的關於172.16.2.2的MAC地址已經是vlanif1 的MAC了。