Cisco proxy-arp一些常见问题

    
       Proxy-arp技术是一种和网关相似的技术,它起到的作用就是在主机没有配置默认

网关的情况下,依然能保证主机与外网的通信,主机不知道这个网关的所在,也就是我

常说的“透明网关”。即使它给人的感觉很方便,但却极少被真正的用到,原因很简单,他的缺点太多:

         1.使用它会使整个网段内ARP流量大大增加。我们可以设想一下,在通信的时候,

不但内网的主机你需要查ARP表或做ARP解析,在访问外网的时候也需要,这和我们手

动设置网关相比要浪费的很多的网络资源。

          2.主机可能要维护大量的ARP表项。这点和上面是相关的,我们都知道ARP表

项的容量是有限的。这种情况在路由器上很可怕,一会我们会说到。

          3.可能有中间人攻击。网段内的任何一台主机可以假装成你要通信的对象和你

进行交流。

          4.它的应用场合是有限的。如果网段内存在多个有路由功能的接口的情况,比

如两台路由器,这种情况就会出问题!

下面我们用一个实验来分析一下PROXY-ARP的原理及相关问题

拓扑如下:

R1 :se1/0------------->R2:s1/0
R1:se1/0  192.168.1.1 255.255.255.0
R1:lo0  ip:10.0.0.1 255.0.0.0
R2:se1/0 192.168.1.2 255.255.255.0
R2: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 classless
ip route 11.0.0.0 255.0.0.0 FastEthernet0/0
no 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 classless
ip route 10.0.0.0 255.0.0.0 FastEthernet0/0
no 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 ms
r1(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 arp
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  11.0.0.1                0   ca01.eb4d.0008  ARPA   FastEthernet0/0
Internet  192.168.1.1             -   ca00.eb4d.0008  ARPA   FastEthernet0/0
Internet  192.168.1.2             0   ca01.eb4d.0008  ARPA   FastEthernet0/0
r1#


r2#sh arp
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  10.0.0.1                0   ca00.eb4d.0008  ARPA   FastEthernet0/0
Internet  192.168.1.1             0   ca00.eb4d.0008  ARPA   FastEthernet0/0
Internet  192.168.1.2             -   ca01.eb4d.0008  ARPA   FastEthernet0/0
r2#

我们看到,只要是路由转发一个目的地址的报文,都会有一个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 arp
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  192.168.1.1             -   ca00.eb4d.0008  ARPA   FastEthernet0/0
r1#


已经通不了,因为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 ms
r2#


通了。这地方很奇怪,为什么会能呢,R2-R1是可能通的,可R1-R2怎么也是能的

呢?看看R1的ARP表我们就明白了:


这是没PING之前的
r1#show arp
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  192.168.1.1             -   ca00.eb4d.0008  ARPA   FastEthernet0/0
r1#
这是PING 能之后的:
r1#sh arp
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  192.168.1.1             -   ca00.eb4d.0008  ARPA   FastEthernet0/0
Internet  192.168.1.2             1   ca01.eb4d.0008  ARPA   FastEthernet0/0
r1#
事情很清楚了,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,还有在设置静态

路由的时候,对于以太网口,地址和接口都写上,这样可以避免很多麻烦。









你可能感兴趣的:(Cisco,ARP,路由,交换,proxy-arp)