R1收到来自IP—B的IP-A的ARP请求时,发现路由表中存在到NET-A的路由。
并且路由表显示到达NET-A的吓一跳不是NET-B中的地址。
即:ARP请求的源地址与到达所请求地址不是同一网段。
那么将会发出代理ARP应答,告诉IP-B,我可以到达IP-A,交给我吧。
cisco路由器默认开启代理ARP。
关闭方法:
    R1(config)#int e 0/0
    R1(config-if)#no ip proxy-arp

案例:
ToPu如下:
 
 |----------------------|
R1----SW1--SW2--SW3----R2
                 |-----------R3

其中三个交换机的多有端口都是一个vlan中。
现在的情况是SW2上业务太多了。导致SW2很拥挤。因此R1访问R3的时候想走R2。
NOW,The problem comes!
在R1上配置了路由(这里用的静态路由)

R1#show ip route
Gateway of last resort is not set
      192.168.12.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.12.0/24 is directly connected, Ethernet0/1
L        192.168.12.1/32 is directly connected, Ethernet0/1
      192.168.123.0/24 is variably subnetted, 3 subnets, 2 masks
C        192.168.123.0/24 is directly connected, Ethernet0/0
L        192.168.123.1/32 is directly connected, Ethernet0/0
S        192.168.123.3/32 [1/0] via 192.168.12.2
R1#

然后使用traceroute命令,发现问题如下:
R1#traceroute 192.168.123.3

Type escape sequence to abort.
Tracing the route to 192.168.123.3

  1 192.168.12.2 0 msec 0 msec 0 msec
  2 192.168.123.1 0 msec 0 msec 0 msec
  3 192.168.12.2 0 msec 0 msec 0 msec
  4 192.168.123.1 0 msec 0 msec 0 msec
  5 192.168.12.2 0 msec 0 msec 0 msec
  6 192.168.123.1 0 msec 0 msec 0 msec
  7 192.168.12.2 0 msec 0 msec 0 msec
  8 192.168.123.1 0 msec 0 msec 0 msec
  9 192.168.12.2 4 msec 0 msec 4 msec
 10 192.168.123.1 0 msec 0 msec 4 msec
 11 192.168.12.2 0 msec 0 msec 4 msec
 12 192.168.123.1 0 msec 0 msec 4 msec
 13 192.168.12.2 0 msec 4 msec 0 msec
 14 192.168.123.1 4 msec 4 msec 0 msec
 15 192.168.12.2 4 msec 0 msec 0 msec
 16 192.168.123.1 4 msec 0 msec 4 msec
 17 192.168.12.2 4 msec 0 msec 4 msec
 18 192.168.123.1 0 msec 0 msec 4 msec
 19 192.168.12.2 0 msec 0 msec 4 msec
 20 192.168.123.1 0 msec 0 msec 4 msec
 21 192.168.12.2 4 msec 4 msec 0 msec
 22 192.168.123.1 4 msec 4 msec 0 msec
 23 192.168.12.2 4 msec 4 msec 0 msec
 24 192.168.123.1 4 msec 4 msec 4 msec
 25 192.168.12.2 0 msec 0 msec 4 msec
 26 192.168.123.1 4 msec 0 msec 4 msec
 27 192.168.12.2 4 msec 4 msec 4 msec
 28 192.168.123.1 4 msec 4 msec 0 msec
 29 192.168.12.2 4 msec 4 msec 4 msec
 30 192.168.123.1 0 msec 4 msec 4 msec
R1#
哦~意外收获诶,traeroute最大支持30跳。
去R2上查看ARP表:
R2#show arp
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  192.168.12.1           11   aabb.cc00.0110  ARPA   Ethernet0/1
Internet  192.168.12.2            -   aabb.cc00.0210  ARPA   Ethernet0/1
Internet  192.168.123.1          11   aabb.cc00.0100  ARPA   Ethernet0/0
Internet  192.168.123.2           -   aabb.cc00.0200  ARPA   Ethernet0/0
Internet  192.168.123.3           9   aabb.cc00.0100  ARPA   Ethernet0/0


R1上查看端口信息
R1#show interfaces e 0/0
Ethernet0/0 is up, line protocol is up
  Hardware is AmdP2, address is aabb.cc00.0100 (bia aabb.cc00.0100)
  Internet address is 192.168.123.1/24

发现R2的ARP表中192.168.123.3的MAC地址是R1的e0/0。

这下问题结局了,cisco路由器默认开启代理ARP功能,R1通过路由表将发往123.3的
数据包发到了12.2即R2.
R2发现123.3跟自己的123.2是同一个网段,于是发送ARP请求。
R3收到ARP请求并发送ARP应答。
但是R1也收到了ARP请求,由于R1上有到达123.3的路由,但是这条路径所在的网络(12.0)
不是R1收到ARP请求的网络(123.0 )。因此R1发送了一个代理ARP应答。
R2先收到R3的正确的ARP应答,并将其写入ARP缓存中,但是由于上述SW2业务繁忙,
因此R1发送的代理ARP应答就到的慢了一些,然后就把R3的应答给刷掉了。

解决:
    1)在R1的e0/0上关闭代理ARP ————no ip proxy-arp
    2)在R2上写静态ARP。