代理 ARP 主要用于这种情况:当主机 192.168.1.1 向主机 2.2.2.2 发送数据时,数据到达路由器接口 e0/0 (直连主机 192.168.1.1 ),当路由器检查目标 IP 地址发现该网段自己可达(又分为 2 种情况: 1. 该网段在自己本地某一接口; 2. 该网段在自己某接口的对端),就会将本地接口 e0/0 mac 地址回复给主机 192.168.1.1 ,这样,以后 192.168.1.1 主机到达 2.2.2.2 都会从 e0/0 走。如果路由器收到 192.168.1.1 的数据包,发现自己也没有到达 2.2.2.2 的路径,就会启用 ARP Request 向本地接口发送 ARP 请求,请求该地址 2.2.2.2 对应的 MAC ,如果 2.2.2.2 可达,某对端会回复 ARP 响应,则路由器收获了 2.2.2.2 对应的 MAC (这时的 MAC 可能是对端路由器的代理 ARP )之后再启用代理 ARP 回复给主机。

所以会产生我们第一次 Ping 某个地址的时候 .!!!! 这种情况,这第一个点其实是一个查询的过程

总结:谨慎对待路由器的代理 arp 服务。

以下通过一个实验来介绍:

R1#sh arp 
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  192.168.1.1             -   cc00.10ec.0000  ARPA   Ethernet0/0


R1#ping 2.2.2.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 24/218/504 ms
R1#sh arp 
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  2.2.2.2                 0   cc00.12c4.0000  ARPA   Ethernet0/0
Internet  192.168.1.1             -   cc00.10ec.0000  ARPA   Ethernet0/0
Internet  192.168.1.2             0   cc00.12c4.0000  ARPA   Ethernet0/0


关闭R2 Ethernet0/0的代理arp功能,并且将R1的ethernet0/0shutdown并no shutdown一下,不然ARP CACHE里面有记录
R1#sh arp 
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  192.168.1.1             -   cc00.10ec.0000  ARPA   Ethernet0/0
R1#ping 2.2.2.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
R1#ping 192.168.1.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.2, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 64/182/376 ms
R1#sh arp 
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  2.2.2.2                 0   Incomplete      ARPA   
Internet  192.168.1.1             -   cc00.10ec.0000  ARPA   Ethernet0/0
Internet  192.168.1.2             0   cc00.12c4.0000  ARPA   Ethernet0/0


附上R2 Ethernet0/0配置
R2#sh run int e0/0
Building configuration...

Current configuration : 97 bytes
!
interface Ethernet0/0
 ip address 192.168.1.2 255.255.255.0
 no ip proxy-arp            切记!谨慎对待这条命令!
 half-duplex
end