1. 程式人生 > >一次VLAN標籤引發的網路事件的處置

一次VLAN標籤引發的網路事件的處置

一次VLAN標籤引發的網路事件的處置

 

一、背景介紹

事件背景:

  HZ某分公司新裝一套業務系統,通過一條專線和BJ總公司連通。分配給HZ公司的ip地址為:a.b.c.X,掩碼24位,閘道器a.b.c.1。BJ總公司網路管理員無法聯絡、相關配置未知。

故障現象:

  HZ分公司端光貓下來網線直連某臺伺服器(ip、掩碼、閘道器設定好),能ping通閘道器a.b.c.1。

  光貓下來網線連線到二層Hub,所有伺服器也連到該Hub,所有伺服器能正常ping通閘道器a.b.c.1。Hub網口不夠,且效能不佳,未採用。

  光貓下來網線連線UNIS S5600 Series交換機,該交換機為出廠配置,所有伺服器之間能互通,但是均無法ping通閘道器。

 

二、原因分析

  光貓下來網線直接連線伺服器,伺服器能ping通閘道器。光貓下來網線連線S5600以太口G1/0/1(access模式,vlan 1),伺服器連線S5600以太口G1/0/2(access模式,vlan 1),ping閘道器不通。

  從伺服器直連光貓到達BJ對端交換機埠的資料包未帶vlan tag,從S5600以太口G1/0/1(access模式)連線BJ對端交換機埠的資料包也未帶vlan tag,所以出去的資料包是一樣的。

  那麼很可能接收到的資料包攜帶了vlan tag,伺服器收到帶vlan tag的資料包正常處理了。傻瓜機是不具備任何處理(修改,封裝,處理封裝等)資料的能力的,所以傻瓜交換機的轉發原則,收到什麼轉發什麼。而S5600以太口G1/0/1的PVID預設為1,如果收到資料包vlan tag不為1,S5600收到後直接丟棄。

 

三、wireshark抓包檢視vlan tag

  將光貓網線直連電腦,wireshark抓包,檢視接收到的資料包vlan tag為1016,說明這個C類段的vlan為1016。具體過程如下:

(一)先設定Wireshark

  1、開啟Wireshark,點選 編輯–>首選項

 

 

 

 

 

 

 

 

 

 

 

  2、選擇 外觀 --> 列(中文版),對應appearance–>columns,並點選下方 + 按鈕。

 

 

 

 

 

 

 

  3、新增命名 “Vlan”(大小寫皆可),選擇802.1Q VLAN id,並確認儲存。

 

 

 

 

 

 

 

 

(二)修改電腦登錄檔

  1、開啟電腦 網路和Internet設定,點選 乙太網–>更改介面卡設定。

 

 

 

 

 

 

 

 

  選擇抓包的網口,右鍵 點選“屬性”。

 

 

 

 

 

 

 

 

  選擇Microsoft網路客戶端,點選配置

 

 

 

 

 

 

  選擇高階,找到Priority & VLAN(中文版為優先順序和VLAN)並選擇Enabled(中文版為使能),確定儲存。

 

 

 

 

 

 

  選擇詳細資訊,屬性找到驅動程式關鍵字,記錄值。

 

 

 

 

 

 

  2、在windows執行下查詢regedit,進入登錄檔編輯器。

 

 

   進入HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0007

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

  檢視 MonitorModeEnabled的值是否為1,PreserveVlanInfoInRxPacket的值是否為1。若不存在,則新建 DWORD(32位),檔名分別為MonitorModeEnabled 、PreserveVlanInfoInRxPacket,設定值為1。設定完後重啟電腦。

 

(三)wireshark抓包檢視vlan tag

 

 

 

 

 

 

 

 

 

 

 

資料包分析:

  IEEE 802.1Q標準對Ethernet幀格式進行了修改,在源MAC地址欄位和協議型別欄位之間加入4位元組的802.1Q Tag。VLAN幀最小幀長為64位元組。

  VLAN幀格式:

 

 

 

 

 

 

 

  1、Destination address:6位元組,目的MAC地址。

  2、Source address:6位元組,源MAC地址。

  3.1、Type:2位元組,長度為2位元組,表示幀型別。取值為0x8100時表示802.1Q Tag幀。如果不支援802.1Q的裝置收到這樣的幀,會將其丟棄。

  3.2、PRI:3位元,Priority,長度為3位元,表示幀的優先順序,取值範圍為0~7,值越大優先順序越高。用於當阻塞時,優先發送優先順序高的資料包。

如果設定使用者優先順序,但是沒有VLANID,則VLANID必須設定為0x000。

  3.3、CFI:1位元,CFI (Canonical Format Indicator),長度為1位元,表示MAC地址是否是經典格式。CFI為0說明是標準格式,CFI為1表示為非標準格式。用於區分乙太網幀、FDDI(Fiber Distributed Digital Interface)幀和令牌環網幀。在乙太網中,CFI的值為0。

  3.4、VID:12位元 ,VLAN ID,長度為12位元,表示該幀所屬的VLAN。在VRP中,可配置的VLAN ID取值範圍為1~4094。0和4095協議中規定為保留的VLAN ID。三種類型:Untagged幀:VID 不計;Priority-tagged幀:VID為 0x000;VLAN-tagged幀:VID範圍0~4095。三個特殊的VID:0x000:設定優先順序但無VID;0x001:預設VID;0xFFF:預留VID。

  4、Length/Type:2位元組/指後續資料的位元組長度,但不包括CRC檢驗碼。

  5、Data:42~1500位元組/負載(可能包含填充位)。

  6、CRC:4位元組/用於幀內後續位元組差錯的迴圈冗餘檢驗(也稱為FCS或幀檢驗序列)。

  0x81 00時表示802.1Q Tag幀,0x 3f8為VLAN ID,轉換成十進位制為1016。如下圖:

 

四、解決方法

(一)H3C交換機裝置上access、trunk、hybrid埠的處理流程

(1)access埠

  傳送(從交換機內部往外發送):

    帶有vlan tag:刪除tag後,傳送

    不帶vlan tag:不可能出現

  接收:

    帶有vlan tag:若該tag等於該access埠的pvid,則可以接收,進入交換機內部

    不帶vlan tag:新增該access埠的pvid,進入交換機內部

(2)trunk埠(允許傳送native VLAN資料的時候,可以不加tag)

  傳送(從交換機內部往外發送):

    帶有vlan tag:若tag等於該trunk埠的pvid,則刪除tag後傳送;否則保留tag直接傳送

    不帶vlan tag:不可能出現

  接收:

    帶有vlan tag:保留該tag,進入交換機內部

    不帶vlan tag:新增該trunk埠的pvid,進入交換機內部

(3)hybrid埠(允許傳送多個VLAN資料的時候,可以不加tag)

  傳送(從交換機內部往外發送):

    帶有vlan tag:是否帶tag進行傳送,取決於使用者配置(使用者可以配置tagged list,untagged list)

    不帶vlan tag:不可能出現

  接收:

    帶有vlan tag:保留該tag,進入交換機內部

    不帶vlan tag:新增該hybrid埠的pvid,進入交換機內部

  注:資料幀在交換機內部處理時,均帶有vlan tag。

 

(二)對端互聯埠配置分析

  對端交換機和我互聯埠不可能為access口(access口刪除tag後再發送出去)。

  若為trunk口:(1)trunk口傳送規則為:若tag等於該trunk埠的pvid,則刪除tag後傳送;否則保留tag直接傳送。說明該埠的pvid不可能為1016。(2)其接收規則為:不帶vlan tag的包新增該trunk埠的pvid,進入交換機內部  。而電腦直連能和閘道器通又要求trunk埠的pvid為1016。所以不成立。

  對端和我互聯交換機埠則為hybrid埠。該埠pvid為1016(接收不帶vlan tag時新增該hybrid埠的pvid,進入交換機內部)。1016在tagged list中(傳送帶有vlan tag時是否帶tag進行傳送,取決於使用者配置)。

 

(三)我端交換機S5600配置。

  滿足:(1)對端發過來的vlan tag 1016能接得住;(2)發過去的要麼不帶vlan tag,要帶就帶1016即可。

  連線伺服器的埠配置:access模式,vlan 1016。

  與對端交換機互聯口配置:(1)若為access模式,該埠pvid設定為1016即可。(2)若為trunk模式,該埠pvid不為1016,且允許1016過即可。(3)若為hybrid模式,將vlan 1016配置為tagged list,允許1016過即可。

&n