欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

Proxy(代理)ARP作用及原理

程序员文章站 2022-03-16 16:42:35
Proxy(代理)ARP作用及原理   代理ARP是ARP协议的一个变种。对于没有配置缺省网关的计算机要和其他网络中的计算机实现通信,网关收到源计算机的 ARP 请求会使用自己的...

Proxy(代理)ARP作用及原理

 

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

 

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

 

工作原理:

 

图表

 

Proxy(代理)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。