这里是普通文章模块栏目内容页
Proxy(代理) ARP作用及原理

Proxy(代理) ARP作用及原理

 

概述:代理ARP是ARP协议的一个变种。 对于没有配置缺省网关的计算机要和其他网络中的计算机实现通信,网关收到源计算机的 ARP 请求会使用自己的 MAC 地址与目标计算机的 IP地址对源计算机进行应答。代理ARP就是将一个主机作为对另一个主机ARP进行应答。它能使得在不影响路由表的情况下添加一个新的Router,使得子网对该主机来说变得更透明化。同时也会带来巨大的风险,除了ARP欺骗,和某个网段内的ARP增加,最重要的就是无法对网络拓扑进行网络概括。代理ARP的使用一般是使用在没有配置默认网关和路由策略的网络上的。

什么代理ARP:proxy ARP就是通过使用一个主机(通常为router),来作为指定的设备对另一设备的ARP请求作出应答。

工作原理:

 

图表

Proxy(代理) <wbr>ARP作用及原理[图解]

 

这个主机A要发送数据包到主机D。图表显示主机A使用的是16位掩码。(注意这一点!)主机A相信目的网段是直接连接在172.16.0.0上的。于是主机A直接发送一个ARP请求给目的站点。

主机A 需要得到主机D的MAC地址,所以主机A广播ARP请求:

       

00-00-0c-94-36-aa

172.16.10.100

00-00-00-00-00-00

172.16.20.200

ARP请求里主机A将自己的MAC地址作为源地址 FFFF.FFFF.FFFF 做为目的地址进行广播。但是路由器的E0 口默认不支持转发广播。所以主机D不能响应这个ARP请求。

路由器知道主机D在其他子网,于是用自己的MAC地址来应答A

       

00-00-0c-94-36-ab

172.16.20.200

00-00-0c-94-36-aa

172.16.10.100

路由器用自己接口的MAC地址作为源地址回复ARP应答给主机A。这个ARP应答总是利用单播来回复。

主机A收到ARP请求后更新自己的MAC地址表

   

172.16.20.200

00-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.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地址。标志这在路由器上使用了 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的角色。