1. 程式人生 > >代理ARP的作用和原理

代理ARP的作用和原理

Proxy(代理)ARP作用及原理 代理ARP是ARP協議的一個變種。對於沒有配置預設閘道器的計算機要和其他網路中的計算機實現通訊,閘道器收到源計算機的 ARP 請求會使用自己的 MAC 地址與目標計算機的 IP地址對源計算機進行應答。代理ARP就是將一個主機作為對另一個主機ARP進行應答。它能使得在不影響路由表的情況下新增一個新的Router,使得子網對該主機來說變得更透明化。同時也會帶來巨大的風險,除了ARP欺騙,和某個網段內的ARP增加,最重要的就是無法對網路拓撲進行網路概括。代理ARP的使用一般是使用在沒有配置預設閘道器和路由策略的網路上的。 什麼代理ARP:proxy ARP就是通過使用一個主機(通常為router),來作為指定的裝置對另一裝置的ARP請求作出應答。 工作原理: 圖表 這個主機A要傳送資料包到主機D。圖表顯示主機A使用的是16位掩碼。(注意這一點!)主機A相信目的網段是直接連線在172.16.0.0上的。於是主機A直接傳送一個ARP請求給目的站點。主機A 需要得到主機D的MAC地址,所以主機A廣播ARP請求:00-00-0c-94-36-aa172.16.10.10000-00-00-00-00-00172.16.20.200ARP請求裡主機A將自己的MAC地址作為源地址 FFFF.FFFF.FFFF 做為目的地址進行廣播。但是路由器的E0 口預設不支援轉發廣播。所以主機D不能響應這個ARP請求。路由器知道主機D在其他子網,於是用自己的MAC地址來應答A00-00-0c-94-36-ab172.16.20.20000-00-0c-94-36-aa172.16.10.100路由器用自己介面的MAC地址作為源地址回覆ARP應答給主機A。這個ARP應答總是利用單播來回復。主機A收到ARP請求後更新自己的MAC地址表172.16.20.20000-00-0c-94-36-ab現在主機A如果傳送資料包給主機D就將資料傳送給MAC 00-00-0c-94-36-ab.由路由器轉發給主機D。所以目的地址為子網B的資料都發送給路由器。子網A內所有主機ARP地址表顯示去往子網B主機的MAC地址全是路由器介面的MAC地址。這個路由器轉發其他資料包到子網B。這個主機A的ARP 地址表172.16.20.20000-00-0c-94-36-ab172.16.20.10000-00-0c-94-36-ab172.16.10.9900-00-0c-94-36-ab172.16.10.20000-00-0c-94-36-bb多個IP地址被對映到一個MAC地址。標誌這在路由器上使用了 proxy-arp。(檢視主機的arp表就清楚) 關閉代理ARP:cisco 交換機應該配置為能夠支援proxy arp。而且它預設是被開啟的。如果需要關閉可以使用 no ip proxy-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# proxy ARP有哪些優點?   最主要的一個優點就是能夠在不影響其他router的路由表的情況下在網路上新增一個新的router,這樣使得子網的變化對主機是透明的   proxy ARP應該使用在主機沒有配置預設閘道器或沒有任何路由策略的網路上 proxy ARP帶來的哪些負面影響?   1.增加了某一網段上ARP流量   2.主機需要更大的ARP table來處理IP地址到MAC地址的對映   3.安全問題,比如ARP欺騙(spoofing)   4.不會為不使用ARP來解析地址的網路工作   5.不能夠概括和
推廣
網路拓撲 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(Address Resolution Protocol,地址解析協議)是將IP地址解析為乙太網MAC地址(或稱實體地址)的協議。 在區域網中,當主機或其它網路裝置有資料要傳送給另一個主機或裝置時,它必須知道對方的網路層地址(即IP地址)。但是僅僅有IP地址是不夠的,因為IP資料報文必須封裝成幀才能通過物理網路傳送,因此傳送站還必須有接收站的實體地址,所以需要一個從IP地址到實體地址的對映。APR就是實現這個功能的協議。 假設主機A和B在同一個網段,主機A要向主機B傳送資訊。具體的地址解析過程如下  (1)        主機A首先檢視自己的ARP表,確定其中是否包含有主機B對應的ARP表項。如果找到了對應的MAC地址,則主機A直接利用ARP表中的MAC地址,對IP資料包進行幀封裝,並將資料包傳送給主機B。 (2)        如果主機A在ARP表中找不到對應的MAC地址,則將快取該資料報文,然後以廣播方式傳送一個ARP請求報文。ARP請求報文中的傳送端IP地址和傳送端MAC地址為主機A的IP地址和MAC地址,目標IP地址和目標MAC地址為主機B的IP地址和全0的MAC地址。由於ARP請求報文以廣播方式傳送,該網段上的所有主機都可以接收到該請求,但只有被請求的主機(即主機B)會對該請求進行處理。 (3)        主機B比較自己的IP地址和ARP請求報文中的目標IP地址,當兩者相同時進行如下處理:將ARP請求報文中的傳送端(即主機A)的IP地址和MAC地址存入自己的ARP表中。之後以單播方式傳送ARP響應報文給主機A,其中包含了自己的MAC地址。 (4)        主機A收到ARP響應報文後,將主機B的MAC地址加入到自己的ARP表中以用於後續報文的轉發,同時將IP資料包進行封裝後傳送出去。 當主機A和主機B不在同一網段時,主機A就會先向閘道器發出ARP請求,ARP請求報文中的目標IP地址為閘道器的IP地址。當主機A從收到的響應報文中獲得閘道器的MAC地址後,將報文封裝併發給閘道器。如果閘道器沒有主機B的ARP表項,閘道器會廣播ARP請求,目標IP地址為主機B的IP地址,當閘道器從收到的響應報文中獲得主機B的MAC地址後,就可以將報文發給主機B;如果閘道器已經有主機B的ARP表項,閘道器直接把報文發給主機B。