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。
代理ARP引起的环路
原创
©著作权归作者所有:来自51CTO博客作者醉卧流云KF的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:OSPF选举
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章