在讲解ARP故障之前我先给大家讲解一个“ARP攻击导致ARP表项被篡改”的实例。

网络环境:设备Device VLAN 2 IP地址为10.10.60.1/24,PC 1地址为10.10.60.2/24,反馈通往设备Device数据通信经常中断,而同一网段其它PC通讯正常。

网络工程师arp原理(网络工程师ARP故障剖析)(1)

图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 loggingshow logging buffer)、接口信息(show interface)、故障情况下show cpushow processshow poolshow 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 loggingshow logging buffer)、接口信息(show interface)、故障情况下show cpushow processshow poolshow 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 loggingshow logging buffer)、接口信息(show interface)、故障情况下show cpushow processshow poolshow arp信息。

,