本帖最后由 啊哈cch 于 2011-8-11 13:46 编辑
之前论坛上看到关于ARP方面的一些问题,发现还是有些困惑,自己也一直在找资料看,收获甚微,所以还是自己动手,丰衣足食吧。
实验环境是GNS3,路由器均是7200。
R2、R3、R4均配置no iprouting。R1与sw1的接口是f0/0。
R2上,f0/0口ip10.1.1.1/24
R3上,f0/0口ip10.0.0.1/24
R4上,g0/0口ip10.0.0.2/24
R1上,f0/1口ip10.1.1.254/24 ,f0/0口ip 10.0.0.254/24
即,R2、R3、R4充当主机,R1是路由器,R3和R4属于同一网段,R2单独一个网段。
每次实验前均clear arp-cache,R1上开启debug arp。
实验一:
配置:R2、R3、R4没有配置ip default-gateway,在R1的f0/0和f0/1接口开启ip proxy-arp。
结果:R3pingR4时,R3发出arp请求,请求R4的mac,R4响应请求,响应的是R4的mac。
R3pingR2时,R3发出arp请求,请求R2的mac,R1响应请求,响应的是R1的mac。
实验二:
配置:R2、R3、R4没有配置ip default-gateway,在R1的f0/0和f0/1接口关闭ip proxy-arp。
结果:R3pingR4时,R3发出arp请求,请求R4的mac,R4响应请求,响应的是R4的mac。
R3pingR2时,R3发出arp请求,请求R2的mac,没有响应。
实验三:
配置:R2、R3、R4配置R1作为ip default-gateway,在R1的f0/0和f0/1接口ip proxy-arp关闭和开启效果相同。
结果:R3pingR4时,R3发出arp请求,请求R4的mac,R4响应请求,响应的是R4的mac。
R3pingR2时,R3发出arp请求,请求网关R1的mac,R1响应请求,响应的是R1的mac。
实验四:
配置:R3、R4均配置自己的ip作为网关,在R1的f0/0和f0/1接口ip proxy-arp关闭和开启效果相同。
结果:R3pingR4时,R3发出arp请求,请求R4的mac,R4响应请求,响应的是R4的mac。
R3pingR2时,R3没有发出arp请求。(个人认为,此时R3作为网关且知道自己的mac,可以封装,无需arp请求。)
实验五:
配置:R3、R4均配置不存在的ip作为网关,在R1的f0/0和f0/1接口ip proxy-arp关闭和开启效果相同。
结果:R3pingR4时,R3发出arp请求,请求R4的mac,R4响应请求,响应的是R4的mac。
R3pingR2时,R3发出arp请求,请求网关的mac,由于不存在,因而没有响应。
(以上实验均是请求路由器接口的mac)
总结:
1、 对于同一网段,发送方均是直接广播arp请求,请求接收方的mac,RFC925中也提到网关不会响应同一网段的arp请求。
2、 对于不同网段,
(1) (1) 若有配置默认网关,则会广播arp请求,请求网关的mac,而不是接收方的mac,有效的网关会响应自己的mac,否则没有响应,这种情况下代理arp没有作用。 (2) (2) 若没有配置默认网关,则会广播arp请求,请求接收方的mac,然后取决于网关是否开启代理arp,若开启代理arp,则网关会响应自己的mac,若代理arp关闭,则没有任何响应。
换言之,对于同一网段无须考虑,arp请求都是请求接收方mac。而对于不同网段,就看有没有配置默认网关,有默认网关就arp请求网关mac,然后就看网关的响应了;没有默认网关,就直接arp请求接收方mac,然后就看代理arp是否启用了。
我只是希望把这个问题搞懂,同时分享一下心得,所以大家觉得哪里有问题,欢迎指出。
|