代理ARP

代理ARP

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

proxyARP

什麼是proxyARP

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

proxyARP是如何工作的

代理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。

proxyARP有哪些優點

最主要的一個優點就是能夠在不影響其他router的路由表的情況下在網絡上添加一個新的router,這樣使得子網的變化對主機是透明的

proxy ARP應該使用在主機沒有配置默認網關或沒有任何路由策略的網絡上

proxyARP帶來的哪些負面影響

⒈增加了某一網段上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要求在主網絡采用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地址由路由器自動分配即可。

實例配置:

如圖,交換機連接兩台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了。

上一篇:永清環保

下一篇:CISSP

相關詞條

相關搜索

其它詞條