2011年11月22日 星期二

讓網路卡(Intel 85266) 支援VLAN tag的方法 (含802.1q及qinq中vlan tag是否被drop驗證)

最近由於要驗證在 802.1q (dot1q)的封包中,native vlan的tag是否會被拿掉,著實費了一番心力。因此做一些記錄,以便將來備查:


我的網路卡是Intel 82566 ,在Windows XP的狀況下,必需要安裝Intel官方的程式才能支援VLAN tag。因此要從這個網址下載程式並安裝:Network Adapter Drivers for Windows XP
我使用的是Windows XP,如果您的環境是Windows 7,在該網站也有對應的程式。
在安裝完成後, 在裝置管理員的部份就可以看到這一個選項了:
 

使用方法就跟你想的一樣簡單,選擇新增,輸入你要的VLAN ID就可以了,VLAN 名稱他會自己幫你決定。


在此我輸入的是20,接著系統會產生一塊新的網路介面卡,名稱和你剛設定的VLAN相同。
 


當然,在區域連線也會有對應的連線出現:
 


這邊比較值得注意的是,原先的區域連線的TCP/IP會被取消選取。如果你要設定IP的話,就必須從這個新產生的區域連線作設定。(在此例中是區域連線13)


再來就是用wireshark抓802.1q及qiniq封包的部份。

在Windows XP上要抓vlan tag非常的麻煩(因為作業系統把Vlan tag拿掉了),如果你真的要抓的話。請參考以下網頁。

因此我選擇了相對而言容易操作的Ubuntu。恰好之前同事有做了一個LIVE CD的查修工具包,裡面剛好有把wireshark包進去,要多多感謝他,節省了我很多時間,如果有網友想要這個工具包的話,請通知我。

由於我同事已經事先安裝了vlan的套件apt-get install vlan
因此我只要做 modprobe 8021q 這個動作就可以了。不過後來發現不做也可以(它預設似乎就有做了)


我們要測試的架構圖如下:


我們把NB的Vlan設定為20,並且設定為自動取得IP。不過暫時不接上Cisco 3750。

G1/0/1設定如下:
  switchport mode trunk
  switchport trunk encapsulation dot1q
  switchport trunk allowed vlan all (預設值)
  switchport trunk native vlan 1 (預設值)

Vlan 1設定如下:
 ip address dhcp
  no shutdown (預設值)

接著我們想辦法送出這些帶Vlan tag的封包。
根據測試的結果,DHCP的封包會帶出Vlan tag(只要是廣播的封包應該都會),這也是我們Cisco 3750的Vlan 1設定為自動取得IP的緣故。

由於目前Vlan 1是negatvie vlan ,因此我們在wireshark中看不到DHCP的封包有帶vlan tag。如下圖:

接著我們把Native Vlan改為10,並且同樣在3750中開啟Vlan 1的DHCP。




 這邊就可以很清楚的看出,Native Vlan在經過802.1Q時,就會把Vlan tag拿掉。反之,如果不是Natvie Vlan就不會被拿掉Vlan tag。


接著我們來驗證QinQ的部份。我們把NB接上3750的F1/0/1上。(之前有設定NB帶Vlan 20)。然後我們設定一下QinQ的設定,我們在F1/0/1上做以下設定:


 int F1/0/1
  switchport mode dot1q-tunnel



我們先把Natvie vlan設定為原先的vlan 1,接著我們可以看到。筆電確實有透過Vlan 20發出DHCP的要求,但Natvie Vlan 1的vlan tag被drop掉了。
 
 接著我們把Native Vlan改為10,可以看出有兩層Vlan。由於現在的Native vlan是10,所以Vlan 1的tag就沒有被drop掉。


 這樣一來測試就完成了。


 附帶一提,在我家中的Windows 7下的wireshark,看到的格式有所不同。要點開前面的+號,才能看到Vlan ID是多少。





  

沒有留言:

張貼留言