在讲解ARP故障之前我先给大家讲解一个“ARP攻击导致ARP表项被篡改”的实例。
网络环境:设备Device VLAN 2 IP地址为10.10.60.1/24,PC 1地址为10.10.60.2/24,反馈通往设备Device数据通信经常中断,而同一网段其它PC通讯正常。
图1 ARP攻击导致ARP表项被篡改
故障分析
⒈执行show arp命令,检查PC1的 ARP对应MAC是否正确。
Device#show arp
Protocol Address Age (min) Hardware Addr Type Interface Switchport
Internet 10.10.60.1 - 0001.7aaa.aa14 ARPA vlan2 gigabitethernet0/1
Internet 10.10.60.2 1 0001.7aaa.0011 ARPA vlan2 gigabitethernet0/1
10.10.60.2对应的MAC地址不是PC1的MAC地址,可能存在IP地址冲突或ARP攻击导致MAC被篡改。
⒉检查ARP攻击检测获取攻击者信息。
Device#show arp attack-detection
IP Fabricator MAC Attack Time
10.10.60.2 0001.7aaa.0011 2013/04/15 16:40:15
10.10.60.2 0010.9400.000a 2013/04/15 16:39:15
10.10.60.2 0001.7aaa.0011 2013/04/15 16:40:11
从攻击检测记录的信息判断,确定IP地址为10.10.60.2对应的MAC地址,发生了更改,
攻击源的MAC地址为0001.7aaa.0011。
故障解决方案
方案1:设备上配置静态ARP。配置后信息如下:
Device#show running-config
arp 10.10.60.2 0010.9400.000a
方案2:检查ARP攻击检测,并通过ARP攻击提供的信息找到攻击源并消除。
案例总结
设备上动态ARP很容易被篡改,篡改后直接影响数据通信,建议在容易受到ARP攻击的网络环境下配置静态ARP并启动ARP攻击检测功能。
通过以上实例我们再来回顾下ARP故障常见的现象有哪些?常见的ARP故障现象有:①ARP信息无法获取;②Keepalive出现振荡;③ARP地址解析失败。
①ARP信息无法获取
故障原因:
Ⅰ接口物理状态未up。
Ⅱ接口配置错误。
ⅢARP攻击检测速率配置过低或攻击导致。
Ⅳ线路故障。
排障思路:
⑴检查接口状态是否up;⑵检查配置;⑶检查线路。
排障步骤:
⑴接口状态未up。执行show interface vlan vlan-id命令,检查接口状态。
Hostname#show interface vlan 2
vlan2
line protocol is down
flags: (0xc008063) BROADCAST MULTICAST ARP RUNNING
Type: ETHERNET_CSMACD
Queue strategy: FIFO , Output queue: 0/1 (current/max packets)(0)
Metric: 0, MTU: 1500, BW: 100000 Kbps, DLY: 100 usec, VRF: global
Reliability 255/255, Txload 1/255, Rxload 1/255
Ethernet address is 0001.7a54.5c4f
5 minutes input rate 0 bits/sec, 0 packets/sec
5 minutes output rate 0 bits/sec, 0 packets/sec
800 packets received; 0 packets sent
800 multicast packets received
0 multicast packets sent
0 input errors; 0 output errors
0 collisions; 0 dropped
Unknown protocol 0
如果接口状态down,请检查接口down的原因;如果接口状态up,请执行步骤2。
⑵检查接口IP地址配置是否正确。执行show running-config interface vlan vlan-id命令,检查接口IP地址配置。
Hostname#show running-config interface vlan 2
interface vlan2
ip address 10.1.1.2 255.255.255.252
如果IP地址配置不正确,请修改配置;如果IP地址配置正确,请执行步骤3。
⑶检查是否由于ARP攻击检测速率配置过低。执行show running-config interface interface-name命令,检查接口下是否配置了ARP攻击速率。
Hostname# show running-config interface gigabitethernet 0/1
Building Configuration...
interface gigabitethernet0/1
ip arp inspection rate-limit 4
ip arp inspection
如果开启了ARP攻击检测,缺省情况下ARP速率控制为每秒15个报文,若ARP速率大于每秒15个报文,超出的ARP报文将被丢弃。上述信息说明端口上开启了ARP攻击检测。并将速率限制为每秒4个报文。如果ARP速率超过了限制,请修改配置;如果ARP速率没有超过限制,请执行步骤4。
⑷检查线路。两端设备上执行debug arp命令后,再在本端设备上执行ping ip-address命令,ping对端的IP地址,检查调试信息。
本端设备调试信息:
Hostname#debug arp
OCT 6 18:28:00: [tShell1]IP ARP: request 11, dst 10.2.50.1, netmask 0x0, flags 0, tableid 0, on vlan2
OCT 6 18:28:00: [tShell1]IP ARP: return OK (0)
OCT 6 18:28:00: [tShell1]IP ARP: send request on vlan2
OCT 6 18:28:00: [tShell1]IP ARP: src 10.2.50.2 0001.7a58.bf22 dst 10.2.50.1 0000.0000.0000.
OCT 6 18:28:02: [tShell1]IP ARP: send request on vlan2
OCT 6 18:28:21: [tFibRecv]IP ARP: send request on vlan2
OCT 6 18:28:21: [tFibRecv]IP ARP: src 10.2.50.2 0001.7a58.bf22 dst 10.2.50.1 0000.0000.0000
对端设备调试信息:
Hostname#debug arp
上述信息说明,本端设备发出了ARP请求,但是对端设备未收到请求,可能是线路故障。
如果线路有故障,请检查线路故障原因;如果线路正常,请执行步骤5。
⑸请收集如下信息,联系技术支持中心。
l 上述步骤的执行结果。
l 两端设备的配置文件(show running-config)、日志信息(show logging、show logging buffer)、接口信息(show interface)、故障情况下show cpu、show process、show pool、show arp信息。
②Keepalive出现振荡
故障原因:
⑴ARP攻击检测速率配置过低;⑵队列拥塞。
排障思路:
⑴检查ARP攻击检测速率配置是否过低;⑵检查队列是否拥塞。
排障步骤:
⑴检查ARP攻击检测速率配置是否过低。执行show running-config interface interface-name命令,检查接口配置。
Hostname#show running-config interface gigabitethernet 0/1
Building Configuration...
interface gigabitethernet0/1
ip arp inspection rate-limit 4
ip arp inspection
如果开启了ARP攻击检测,缺省情况下ARP速率控制为每秒15个报文,若ARP速率大于每秒15个报文,超出的ARP报文将被丢弃。上述信息说明端口上开启了ARP攻击检测。并将速率限制为每秒4个报文。如果ARP速率超过了限制,请修改配置。如果ARP速率未超过限制,请执行步骤2。
⑵检查cpu-packet对应ARP队列是否出现拥塞。执行show cpu-packet cos命令,检查ARP所在队列。
Hostname# show cpu-packet cos
Type Current-CoS [Default-CoS]
random 0 [0]
lookup-miss 0 [0]
ipv6-all 0 [0]
udp-broadcast 0 [0]
icmp 0 [0]
ip-e-packet 0 [0]
ip 0 [0]
mpls-unicast 0 [0]
mpls-multicast 0 [0]
arp 1 [1]
ip6-solicited-node 1 [1]
host-group 1 [1]
router-group 1 [1]
lldp 2 [2]
dot1x 2 [2]
dhcp 2 [2]
svi-ip 2 [2]
pim 3 [3]
igmp-dvmrp 3 [3]
ip4-reserved-multicast 3 [3]
ip6-reserved-multicast 3 [3]
ip6-interface-multicast 3 [3]
ospf 4 [4]
esp 4 [4]
ah 4 [4]
irmp 4 [4]
rip 4 [4]
is-is 4 [4]
bgp 4 [4]
ldp 4 [4]
rsvp 4 [4]
gvrp 5 [5]
l2pt 5 [5]
ethernet-cfm 5 [5]
ethernet-lmi 5 [5]
l2-interface-unicast 5 [5]
cmp 5 [5]
ndsp-ulfd 5 [5]
loopback-detect 6 [6]
stp-bpdu 6 [6]
slow-protocols 6 [6]
telnet-ssh 6 [6]
radius 6 [6]
vbrp 6 [6]
vrrp 6 [6]
bfd 6 [6]
eips 7 [7]
ulpp 7 [7]
执行show cpu-packet pps命令,检查ARP所在队列速率。
Hostname#show cpu-packet pps
CoS Current-PPS [Default-PPS]
0 200 [200]
1 250 [250]
2 500 [500]
3 600 [600]
4 1000 [1000]
5 400 [400]
6 300 [300]
7 100 [100]
连接端口所在板卡,执行debug ssp命令后,再执行rxmon show命令,检查ARP所在队列是否拥塞。
Hostname#connect lpu lpu-number
LPU-0>en
password:admin
LPU0#debug ssp
BCM.0> rxmon show
RX Info @ time=1838687358: started. Last fill 1838587358. Thread is running.
verbose for more info
Pkt Size 2040. Pkts/Chain 4. All COS PPS 2000. Burst 0. Flags 0.
Sys PPS 0. Sys tokens 0. Sys fill 31483333.
Cntrs: Pkts 6913188. Last start 6913188. Tunnel 0. Owned 6898413.
Bad Hndlr 0. No Hndlr 0. Not Running 0.
Thrd Not Running 0. DCB Errs 0.
Registered callbacks:
SSP RX Priority=255. Argument=0x0. COS 0x00000c1ff.
Packets handled 0, owned 6898413.
Discard Priority= 0. Argument=0x0. COS 0xffffffffffff.
Packets handled 0, owned 0.
Channel Info
Chan 1 is running: Chains 256. COS 0xff. DCB/pkt 1. active chains 256
rpkt 6913188. rbyte 479408874. dpkt 0. dbyte 0. mem fail 0. flags 0.
Queue Info
Queue 0: PPS 200. CurPkts 0. TotPkts 1062. Disc rate 0, qlen 0, max dcbs 50.
Tokens 400. Fill 1331770691. Max 1024. Brst 400. Head 0x0. Tail 0x0.
Queue 1: PPS 250. CurPkts 0. TotPkts 1678414. Disc rate 0, qlen 14775, max dcbs 50.
Tokens 250. Fill 1731837358. Max 1024. Brst 200. Head 0x0. Tail 0x0.
Queue 2: PPS 500. CurPkts 0. TotPkts 280. Disc rate 0, qlen 0, max dcbs 100.
Tokens 600. Fill 1093404024. Max 1024. Brst 600. Head 0x0. Tail 0x0.
Queue 3: PPS 600. CurPkts 0. TotPkts 0. Disc rate 0, qlen 0, max dcbs 1024.
Tokens 1024. Fill 41704024. Max 1024. Brst 1024. Head 0x0. Tail 0x0.
Queue 4: PPS 1000. CurPkts 0. TotPkts 492166. Disc rate 0, qlen 0, max dcbs 1024.
Tokens 1024. Fill 1831120691. Max 1024. Brst 1024. Head 0x0. Tail 0x0.
Queue 5: PPS 400. CurPkts 0. TotPkts 0. Disc rate 0, qlen 0, max dcbs 1024.
Tokens 600. Fill 41704024. Max 1024. Brst 600. Head 0x0. Tail 0x0.
Queue 6: PPS 300. CurPkts 0. TotPkts 0. Disc rate 0, qlen 0, max dcbs 1024.
Tokens 300. Fill 41704024. Max 1024. Brst 300. Head 0x0. Tail 0x0.
Queue 7: PPS 100. CurPkts 0. TotPkts 0. Disc rate 0, qlen 0, max dcbs 1024.
Tokens 300. Fill 41704024. Max 1024. Brst 300. Head 0x0. Tail 0x0.
Queue 8: PPS 500. CurPkts 0. TotPkts 4726491. Disc rate 0, qlen 0, max dcbs 1024.
Tokens 494. Fill 1838587358. Max 1024. Brst 200. Head 0x0. Tail 0x0..
上述信息说明,ARP所在1队列出现拥塞。如果ARP队列拥塞,请检查并消除ARP攻击源。如果ARP队列未拥塞,请执行步骤3。
⑶请收集如下信息,联系技术支持中心。
l 上述步骤的执行结果。
l 两端设备的配置文件(show running-config)、日志信息(show logging、show logging buffer)、接口信息(show interface)、故障情况下show cpu、show process、show pool、show arp信息
③ARP地址解析失败
故障原因:
ARP攻击导致地址被篡改或IP地址冲突
排障思路:
检查ARP地址是否被篡改或存在IP地址冲突。
排障步骤:
⑴检查ARP是否被篡改。执行show arp命令,检查地址解析是否正确。
Hostname#show arp
Protocol Address Age (min) Hardware Addr Type Interface Switchport
Internet 10.10.60.2 - 001f.c641.da0c ARPA vlan2 gigabitethernet0/1
如果ARP地址被篡改,请执行show arp attack-detection命令,检查攻击源。
Hostname#show arp attack-detection
IP Fabricator MAC Attack Time
10.10.60.2 001f.c641.da0c 2013/04/15 15:48:57
10.10.60.2 001f.c641.da0c 2013/04/15 15:48:58
10.10.60.2 001f.c641.da0c 2013/04/15 15:49:01
ARP lost advertisement: 3
上述信息说明,10.10.60.2的ARP被篡改或存在IP地址冲突,攻击源或冲突者的MAC地址是001f.c641.da0c。如果ARP被篡改或IP地址冲突,请消除篡改者或修改IP地址。如果ARP未被篡改或无IP地址冲突,请执行步骤2。
⑵请收集如下信息,联系技术支持中心。
l 上述步骤的执行结果。
l 两端设备的配置文件(show running-config)、日志信息(show logging、show logging buffer)、接口信息(show interface)、故障情况下show cpu、show process、show pool、show arp信息。
,