您的位置:首页 > 其它

Cisco proxy-arp一些常见问题

2010-05-14 18:43 162 查看
Proxy-arp技术是一种和网关相似的技术,它起到的作用就是在主机没有配置默认
网关的情况下,依然能保证主机与外网的通信,主机不知道这个网关的所在,也就是我
常说的“透明网关”。即使它给人的感觉很方便,但却极少被真正的用到,原因很简单,他的缺点太多:
1.使用它会使整个网段内ARP流量大大增加。我们可以设想一下,在通信的时候,
不但内网的主机你需要查ARP表或做ARP解析,在访问外网的时候也需要,这和我们手
动设置网关相比要浪费的很多的网络资源。
2.主机可能要维护大量的ARP表项。这点和上面是相关的,我们都知道ARP表
项的容量是有限的。这种情况在路由器上很可怕,一会我们会说到。
3.可能有中间人攻击。网段内的任何一台主机可以假装成你要通信的对象和你
进行交流。
4.它的应用场合是有限的。如果网段内存在多个有路由功能的接口的情况,比
如两台路由器,这种情况就会出问题!
下面我们用一个实验来分析一下PROXY-ARP的原理及相关问题
拓扑如下:
R1 :se1/0------------->R2:s1/0R1:se1/0 192.168.1.1 255.255.255.0R1:lo0 ip:10.0.0.1 255.0.0.0R2:se1/0 192.168.1.2 255.255.255.0R2:lo0 ip:11.0.0.1 255.0.0.0
两个LOOP口模拟主机进行通信R1的配置如下:interface Loopback0 ip address 10.0.0.1 255.0.0.0!interface FastEthernet0/0 ip address 192.168.1.1 255.255.255.0 duplex auto speed auto!interface FastEthernet0/1 no ip address shutdown duplex auto speed auto!ip classlessip route 11.0.0.0 255.0.0.0 FastEthernet0/0no ip http server
R2的如下:interface Loopback0 ip address 11.0.0.1 255.0.0.0!interface FastEthernet0/0 ip address 192.168.1.2 255.255.255.0 duplex auto speed auto!interface FastEthernet0/1 no ip address shutdown duplex auto speed auto!ip classlessip route 10.0.0.0 255.0.0.0 FastEthernet0/0no ip http server
注意我们这把静态路由的出口设为物理以太网口,这里是实验的关键一步
接下来我们在R1上PING R2的主机:r1(config)#do ping 11.0.0.1
Type escape sequence to abort.Sending 5, 100-byte ICMP Echos to 11.0.0.1, timeout is 2 seconds:.!!!!Success rate is 80 percent (4/5), round-trip min/avg/max = 12/24/52 msr1(config)#通了,这看上去是没问题的,可注意,用以太网的原理分析一下这个过程,当主机
要通信的时候,它首先看看目的IP是否和自己在同一网段内,如果在,直接查MAC
或解析,封装发送,如果不是,则查网关的MAC,然后封装通信,在路由器上网关
也以看作是下一跳地址。问题出现了,我们上面配的“网关”可是物理以太网口,没
有IP,它是怎么找到MAC的呢?这时就用到了PROXY-ARP技术,当R1 PING R2的
主机时,它找到通往R2主机的路由,可不知道该发给谁,于是它发送一个ARP查询
报报文,目的IP地址就是11.0.0.1,注意这里:这时对端的R2收到这个ARP查询后,它应
答的条件有两个:
1。ARP报文的源IP和自己在同一网段里

2。ARP报文中的目标IP是否可被自己路由
如果符合这两个要求,路由器就会把自己这端的MAC地址回应给对端,同时把R1的
IP---MAC映射加到自己的ARP缓存里这样PROXY-ARP就完成了。通信成功!
分别看看R1和R2的缓存表:r1#sh arpProtocol Address Age (min) Hardware Addr Type InterfaceInternet 11.0.0.1 0 ca01.eb4d.0008 ARPA FastEthernet0/0Internet 192.168.1.1 - ca00.eb4d.0008 ARPA FastEthernet0/0Internet 192.168.1.2 0 ca01.eb4d.0008 ARPA FastEthernet0/0r1#

r2#sh arpProtocol Address Age (min) Hardware Addr Type InterfaceInternet 10.0.0.1 0 ca00.eb4d.0008 ARPA FastEthernet0/0Internet 192.168.1.1 0 ca00.eb4d.0008 ARPA FastEthernet0/0Internet 192.168.1.2 - ca01.eb4d.0008 ARPA FastEthernet0/0r2#
我们看到,只要是路由转发一个目的地址的报文,都会有一个ARP条目产生,如果
内网的用户很多,而访问的外网地址也多的话,路由器的ARP表就会迅速膨胀,直
到ARP表满为止,这样它也不能继续转发了。所以我们上面说,在路由器上不适合
用这种方法,最好的方法在加路由的时候把接口和IP都指明:
ip route 11.0.0.1 255.0.0.0 192.168.1.2 fa0/0
很明显,这样的MAC地址表我们在PC上基本上看不到。
下面我们把R2上 PROXY-ARP关掉
在fa0/0:no ip proxy-arp
这回我们看看结果:r1#ping 11.0.0.1
Type escape sequence to abort.Sending 5, 100-byte ICMP Echos to 11.0.0.1, timeout is 2 seconds:.....Success rate is 0 percent (0/5)r1#
r1#show arpProtocol Address Age (min) Hardware Addr Type InterfaceInternet 192.168.1.1 - ca00.eb4d.0008 ARPA FastEthernet0/0r1#

已经通不了,因为R2那端已经不给它回应ARP报文了!
我们接着看下一个问题,刚才我们只是关了R2的PROXY-ARP,没关R1,现在从R2
上拼R1的主机看看结果:
r2#ping 10.0.0.1
Type escape sequence to abort.Sending 5, 100-byte ICMP Echos to 10.0.0.1, timeout is 2 seconds:.!!!!Success rate is 80 percent (4/5), round-trip min/avg/max = 12/13/16 msr2#

通了。这地方很奇怪,为什么会能呢,R2-R1是可能通的,可R1-R2怎么也是能的
呢?看看R1的ARP表我们就明白了:

这是没PING之前的r1#show arpProtocol Address Age (min) Hardware Addr Type InterfaceInternet 192.168.1.1 - ca00.eb4d.0008 ARPA FastEthernet0/0r1#这是PING 能之后的:r1#sh arpProtocol Address Age (min) Hardware Addr Type InterfaceInternet 192.168.1.1 - ca00.eb4d.0008 ARPA FastEthernet0/0Internet 192.168.1.2 1 ca01.eb4d.0008 ARPA FastEthernet0/0r1#事情很清楚了,R2在PING R1主机时,源地址是用的FA0/0的地址,R1回应时目的地
址自然也是它,所以即使关了PROXY-ARP,R2一样能解析自己的地址,这是很正确的。

下面我们把R2端的源改成11.0.0.1看看结果r2#ping 10.0.0.1 so 11.0.0.1
Type escape sequence to abort.Sending 5, 100-byte ICMP Echos to 10.0.0.1, timeout is 2 seconds:Packet sent with a source address of 11.0.0.1.....Success rate is 0 percent (0/5)r2#

怎么样,是不是已经不能了!
所以我们在日常网络维护中一定要注意,尽量关掉PROXY-ARP,还有在设置静态
路由的时候,对于以太网口,地址和接口都写上,这样可以避免很多麻烦。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息