MAC地址表故障處理手冊

MAC地址表故障處理手冊

 



1 MAC地址表故障處理

1.1  MAC地址攻擊導致端口流量瞬斷故障處理

1.1.1  故障描述

1-1所示,Switch下接DSLAMDigital Subscriber Line Access Multiplexer,數字用戶線接入複用器),Switch上接BASBroadband Access Server,寬帶接入服務器),由BAS終結用戶的撥號PPPoE報文。在Switch上配置靈活QinQ功能,對應的用戶側VLAN824,網絡側VLAN1003BAS上作為網關的MAC地址為0090-1aa0-d47a

故障現象為:DSLAM下掛用戶不定時大規模掉線。出現問題時,發現端口Ethernet3/0/4的流量急劇下降。大約5分鍾左右,端口Ethernet3/0/4的流量開始慢慢回升,證明此時大規模掉線已經結束,DSLAM下掛用戶又在逐步恢複連接,網絡在逐步恢複正常狀態。

圖1-1 MAC地址攻擊導致端口流量瞬斷故障處理組網圖

 

1.1.2  故障處理步驟

(1)      檢查接口信息

執行display interface命令顯示端口Ethernet3/0/4的相關信息

<Switch> display interface ethernet 3/0/4

 Ethernet3/0/4 current state: UP

 IP Packet Frame Type: PKTFMT_ETHNT_2, Hardware Address: 000f-e200-8048

 Description: Ethernet3/0/4 Interface

 Loopback is not set

 Media type is twisted pair, port hardware type is 100_BASE_TX

 100Mbps-speed mode, full-duplex mode

 Link speed type is autonegotiation, link duplex type is autonegotiation

 Flow-control is not enabled

 The Maximum Frame Length is 9022

 Broadcast MAX-ratio: 100%

 Unicast MAX-ratio: 100%

 Multicast MAX-ratio: 100%

 Allow jumbo frame to pass

 PVID: 100

 Mdi type: auto

 Port link-type: trunk

  VLAN passing  : 824

  VLAN permitted: 824

  Trunk port encapsulation: IEEE 802.1q

 Port priority: 0

 Last clearing of counters:  Never

 Peak value of input: 4 bytes/sec, at 2012-04-26 12:07:48

 Peak value of output: 81 bytes/sec, at 2012-04-26 12:09:24

 Last 300 seconds input:  1 packets/sec 147 bytes/sec

 Last 300 seconds output:  1 packets/sec 179 bytes/sec

 Input (total):  271 packets, 12250 bytes

          0 unicasts, 150 broadcasts, 121 multicasts, 0 pauses

 Input (normal):  271 packets, 12250 bytes

          0 unicasts, 150 broadcasts, 121 multicasts, 0 pauses

 Input:  0 input errors, 0 runts, 0 giants, 0 throttles

          0 CRC, 0 frame, - overruns, 0 aborts

          - ignored, - parity errors

 Output (total): 1522 packets, 183608303 bytes

          0 unicasts, 13 broadcasts, 860 multicasts, 0 pauses

 Output (normal): 1522 packets, - bytes

          0 unicasts, 13 broadcasts, 860 multicasts, 0 pauses

 Output: 0 output errors, - underruns, 1 buffer failures

          0 aborts, 0 deferred, 0 collisions, 0 late collisions

          0 lost carrier, - no carrier

可以看到, 端口在故障時隻有組播和廣播報文的記數。

(2)      原因分析

從現象上看,Switch的端口Ethernet3/0/4的入方向報文計數在故障時隻有組播和廣播報文,基本上可以確定:由於某種原因,導致從Switch的端口Ethernet3/0/4進來的單播報文被全部丟棄了。DSLAM下掛用戶正常通信的流量以單播報文為主,這種丟棄行為導致用戶下線,然後重新認證,所以端口流量大大減小。

因此從報文被丟棄的原因著手分析問題。這種報文丟棄特征和“源端口返回報文”丟棄很吻合,也就是說很可能端口收到了目的MAC地址和本端口學習到的目的MAC地址一致的報文。正常工作狀態下,BASMAC地址(也就是從Switch的端口Ethernet3/0/4上來的PPPoE單播流量的目的MAC地址)隻會學習到Switch的端口GigabitEthernet2/0/1上的VLAN 1003,不會學習到用戶側端口,除非網絡中有環路或者其他原因。

下麵是正常情況下SwitchMAC地址表信息:

<Switch> display mac-address

MAC ADDR       VLAN ID  STATE          PORT INDEX               AGING TIME(s)

0090-1aa0-d47a 1003     Learned        GE2/0/1                  AGING

0090-1aa0-d47a 1101     Learned        GE2/0/1                  AGING

0090-1aa0-d47a 1201     Learned        GE2/0/1                  AGING

0090-1aa0-d47a 4093     Learned        GE2/0/1                  AGING

再看看出故障時學習到Switch的端口Ethernet3/0/4MAC地址:

<Switch> display mac-address interface ethernet 3/0/4

MAC ADDR       VLAN ID  STATE          PORT INDEX               AGING TIME(s)

0090-1aa0-d47a 824      Learned        Eth3/0/4                 AGING

這個MAC地址是BASMAC地址,卻學習到了用戶側Switch的端口Ethernet3/0/4VLAN 824。這時,從Switch的端口Ethernet3/0/4上來的PPPoE正常業務報文的目的MAC地址正是這個MAC地址,結果被作為源端口返回報文全部丟棄。

重新檢視故障前後的定位信息,發現了這樣的規律:大規模掉線時(端口大量丟包),BASMAC地址學習到了Switch的端口Ethernet3/0/4,而在業務流量逐漸恢複到正常的期間,這個MAC地址被老化掉了。

因為DSLAMSwitch是直連,中間沒有其他交換機導致環路,網絡拓撲一直處於穩定狀態,因此可以得出結論:DSLAM下掛用戶通過仿冒網關MAC地址的方法對Switch進行攻擊,導致該DSLAM下麵用戶大規模掉線。從用戶的攻擊心理看,攻擊大多數是為了獲取更大的帶寬,把其他用戶踢下線,讓網絡係統重新來一次初始化,攻擊者會明顯感覺網速比以前要快了。

(3)      解決故障

Switch的上行口GigabitEthernet2/0/1配置一個用戶側VLAN 824的靜態網關MAC地址,這樣網關MAC地址就永遠不會學習到Switch的端口Ethernet3/0/4了,攻擊者仿冒MAC地址的攻擊也就不起作用了,方法如下:

# 把端口GigabitEthernet2/0/1加入到VLAN 824

<Switch> system-view

[Switch] interface gigabitethernet 2/0/1

[Switch-GigabitEthernet2/0/1] port link-type trunk

[Switch-GigabitEthernet2/0/1] port trunk permit vlan 824

[Switch-GigabitEthernet2/0/1] quit

# 在端口GigabitEthernet2/0/1VLAN 824設置一個網關靜態MAC地址。

[Switch] mac-address static 0090-1aa0-d47a interface gigabitethernet 2/0/1 vlan 824

配置了靜態MAC地址後,DSLAM下掛的用戶運行很穩定,再未出現掉線的情況。

說明

·       在使能靈活QinQ的情況下,為了防止用戶進行源MAC地址攻擊,建議在設備的上行口配置網關的靜態MAC地址。

·       在有多個上行口的情況下,在任意一個上行口配置該靜態MAC地址即可。

 

1.2  故障診斷命令

命令

說明

display interface

顯示以太網接口的相關信息

display mac-address

顯示MAC地址表信息

 

附件下載

聯係我們