代理ARP

王朝百科·作者佚名  2010-01-03  
宽屏版  字体:   |    |    |  超大  

代理ARP

代理ARP是ARP协议的一个变种。

对于没有配置缺省网关的计算机要和其他网络中的计算机实现通信,网关收到源计算机的 ARP 请求会使用自己的 MAC 地址与目标计算机的 IP地址对源计算机进行应答。

什么是proxy ARP?

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

proxy ARP是如何工作的?

设备需求:

Cisco 2500系列的rourer

Cisco IOS Release 12.2(10b)

此主题相关图片如下:

假设在如上图的一个环境中,位于子网A的主机A(172.16.10.100)需要发送packet到位于子网B的主机D(172.16.20.200)上去.于是主机A将发送ARP请求给D.当然,为了能够达到主机D,就需要知道主机D的MAC地址.因此,主机A在它位于的那个子网A上广播ARP请求。

当然router的e0口也接收到该广播,但是router默认不会转发广播的,所以该ARP请求仍然到达不了主机D.但是router却知道主机D位于另外一个子网B.于是router应答自己的MAC地址给主机A,在应答的ARP报文中源IP地址为主机D的IP地址,但是源MAC地址是router e0口的MAC地址.这就是发送给主机A的proxy ARP应答(代理人,中间人).这样的proxy ARP应答一般是作为unicast发送给请求者(主机A)

主机A收到这个proxy ARP应答以后,开始更新自己的ARP table。

于是从现在开始,主机A将要前往主机D的packet通过router e0口(00-00-0c-94-36-ab)转发,因为router知道如何到达主机D,它会把packet转发给主机D

另外,位于子网A的主机的ARP cache,如下图:

此主题相关图片如下:

注意上图,3个IP地址映射到1个MAC地址(router e0口的MAC地址)上,这就说明正在使用proxy ARP

Cisco的router的接口应该配置成能够接收和应答proxy ARP,当然这个默认是启用的,不过可以使用一些命令来关闭这个功能,命令如下:

Router# config t

Enter configuration commands, one per line. End with CNTL/Z.

Router(config)#int e 0

Router(config-if)#no ip proxy-arp

Router(config-if)#^Z

Router#

要再次启用的话,在接口配置模式下使用ip proxy-arp命令即可

proxy ARP有哪些优点?

最主要的一个优点就是能够在不影响其他router的路由表的情况下在网络上添加一个新的router,这样使得子网的变化对主机是透明的

proxy ARP应该使用在主机没有配置默认网关或没有任何路由策略的网络上

proxy ARP带来的哪些负面影响?

1.增加了某一网段上ARP流量

2.主机需要更大的ARP table来处理IP地址到MAC地址的映射

3.安全问题,比如ARP欺骗(spoofing)

4.不会为不使用ARP来解析地址的网络工作

5.不能够概括和推广网络拓扑

验证一些疑问:oAv$

©open-lab技术交流中心 -- open-lab技术交流中心+

1.ARP请求到底什么时候会发7|`

2.代理ARP(proxy arp)会自动响应到哪些网段的ARP请求Ow

3.代理ARP到底适用什么样的环境wUf

©open-lab技术交流中心 -- open-lab技术交流中心SZ

下面一个一个说:>0oHK

1.首先ARP是Ethernet环境下的一个机制,刚开始的时候有点犯晕,居然在s0口上配了一下,然后去sh arp,还在想怎么没东西出来...-iB#

然后,并不是每一个出外网的包都会产生arp请求(这里不讨论arp cache的问题,默认cache里都是空的),一个接口,只会向ip地址在本接口配置的子网内的地址发arp请求,而对于ip地址不在接口配置的子网的,就要去查路由表发送了|D

比如:打开debug arp,e0 ip add 172.16.1.1 255.255.255.128="gz8O

本地ping 172.16.1.1-1.126都会产生arp请求(arp-cache里没有的情况下),L.

但是ping 172.16.1.128以上都不会了4

©open-lab技术交流中心 -- open-lab技术交流中心|wU

2.代理ARP只响应那些在自己的路由表里能找到的网段,而不是象我以前想的那样会用自己的mac响应主机所有的arp请求f

比如:PC--Route{s&

PC Ether:ip address 172.16.12.2 255.255.0.0WIr`

Router:KTxd

interface Ethernet0/0:9w

ip address 172.16.12.1 255.255.255.0{;s

interface Loopback0Tj;G

ip address 172.16.14.1 255.255.255.0A(EH6

这样,在pc上ping 172.16.14.1的时候,可以看到,pc产生了一个arp request,路由器用自己的E0/0 Mac地址回复了这个请求,也就是做了ARP代理,如果我们ping 172.16.15.1,arp包也被发到路由上,但是路由器不响应这个arp包。mU@D

©open-lab技术交流中心 -- open-lab技术交流中心`

3.代理ARP到底适用什么样的环境 N/TUg

这个问题说实在的我也没有想的很明白,有的书上说,代理ARP起到了一个提供网关的作用,其实通过上面第一个验证,很明显这个说法是完全不正确的,因为只有请求本网段的ip的时候才会产生arp请求,代理arp最多也只能代理对于产生这个arp请求的主机是“同一个子网”的ip,这算什么网关呢?t?Wi

那代理ARP到底有什么用呢?

下面这个图也许比较能说明问题:eo

看到了吧,注意主机上的子网位数的配置,似乎只有在这种“怪异”的场合才会用到代理arp,AC通信,A以为C在自己的子网内,直接发arp,路由e0接到这个arp请求,然后发现请求的ip地址在自己直连的网段中(在路由表中能找到),这样,就用e0口响应了这个arp请求,完成了代理ARP:H

 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝百科 版权所有