什么是VLAN
VLAN(virtual LAN)虛擬局域網是一組邏輯上的設備和用戶,這些設備和用戶并不受物理位置的限制,可以根據功能、部門及應用等因素將它們組織起來,同一VLAN設備相互之間的通信就好像它們在同一個物理網段中一樣,不同VLAN設備不能直接通信。
VLAN工作在OSI參考模型的第2層和第3層,一個VLAN就是一個廣播域,VLAN之間的通信是通過第3層的路由器來完成的。與傳統的局域網技術相比較,VLAN技術更加靈活。
它具有以下優點:
- 網絡設備的移動、添加和修改的管理開銷減少;
- 可以控制廣播活動;
- 可提高網絡的安全性。

VLAN是如何實現的
VLAN是IEEE組織定義的IEEE802.1Q協議實現的。IEEE802.1Q協議是定義數據幀添加TAG(標簽)來實現VLAN技術,有兩種數據幀Untagged frame是傳統的以太網數據幀,Tagged frame是帶標簽的數據幀。
Tagged frame中TPID(標簽協議標示)起到的作用和TYPE字段類似,是指明此數據幀為帶vlan標簽的數據幀;VLAN ID字段是指明vlan的號碼,占12比特,換算成十進制為1-4094。
打標簽和去除標簽的操作一般是在交換機上完成,和普通的客戶端無關(也可以說對客戶端是透明的),也有一些服務器操作系統經過配置后可以識別標簽。
交換機添加VLAN標簽用的最多的是基于端口進行添加,當然也可以是基于子網、基于協議和基于mac地址。

VLAN數據幀轉發流程:

端口類型
華為公司的交換機根據不同應用類型,把接口分為3種,Access、Trunk和Hybrid。
1、Access接口
Access接口一般用來連接PC。交換機的接口再收到數據包后,先查看數據包打沒有打標簽,如果沒有打標簽,則打此接口所屬vlan標簽;如果收到的數據包已經打標簽,看看是否和此接口所屬vlan標簽一致,一致允許通過,不一致則丟棄。

創建VLAN命令
[SWA]vlan 3
配置接口類型命令
[SWA-Ethernet0/0/1]port link-type access
設置接口PVID命令
[SWA-Ethernet0/0/1]port default vlan 3
2、Trunk端口
一般是交換機(交換機上有多個vlan情況下)之間端口使用Trunk端口。交換機Trunk端口也會屬于某個vlan,這就是Trunk端口的PVID,還可以明確哪個vlan可以通過此接口。
交換機的Trunk端口接收數據包時,先看數據包打沒有打標簽,沒有的話打上PVID標簽,有的話查看是否允許此vlan通過此trunk接口,不允許就會丟棄數據包;交換機的Trunk端口發送數據包時,缺省vlan的數據把標簽去掉,允許通過的其他vlan的標簽不變。
華為公司交換機的TRUNK端口有一個特色,就是vlan1的數據不管有沒有明確允許在TRUNK端口通過,vlan1的數據都能通過TRUNK端口,是因為一些管理數據幀在vlan1中發送。而TRUNK端口上的缺省vlan如果沒有明確允許則不能通過。

配置端口類型命令:
[SWA-Ethernet0/0/3]port link-type trunk
配置Trunk-Link端口PVID命令:
[SWA-Ethernet0/0/3]port trunk pvid vlan 3
配置Trunk-Link所允許通過的VLAN(permitted VLAN)命令:
[SWA-Ethernet0/0/3] port trunk allow-pass vlan 2-5
3、Hybrid端口
Hybrid端口允許多個VLAN通過,可以接收和發送多個VLAN的數據幀,可以非常靈活的設置端口是否打標簽。Hybrid端口允許多個VLAN的以太網幀不帶標簽,Trunk端口只允許缺省VLAN的以太網幀不帶標簽。
Hybrid端口的應用環境:一般是多個PC之間不能互訪,而這些PC又能同時訪問一臺服務器,又不想利用路由器實現這個目的的環境。
例如在下圖中,PCA屬于vlan10和vlan30,缺省vlan是vlan10;PCB屬于vlan20和vlan30,缺省vlan是vlan20;PCC屬于vlan10、vlan20和vlan30,缺省vlan是vlan30;這樣PCA能和PCC通信,PCB能和PCC通信,而PCA和PCB不能通信。當然PCC也可以作為上行端口到達網關。

驗證VLAN原理的實驗環境
實驗拓撲環境:
通過對下圖的拓撲環境連接,并按圖示配置vlan接口后,所有PC設置的IP地址在同一網段。如果Access接口配置正確,PC10和PC4能ping通,PC1、PC2、PC3和PC4之間不能ping通,則證明同一交換機中同一vlan能直接通信,不同vlan不能直接通信。
如果交換機間接口設置為Trunk接口,配置PVID為2,僅允許vlan3通過,如果配置正確就可以實現PC1和PC5能ping通,PC2和PC6不能ping通,PC3和PC7能ping通,PC4和PC8不能ping通,也就驗證了華為公司交換機的TRUNK端口中vlan1的數據不管有沒有明確允許,vlan1的數據都能通過TRUNK端口,而缺省vlan數據沒有明確允許則不能通過。

注意:上面的實驗環境中的配置是為了驗證VLAN的特性,在真實的實驗環境中,vlan1、vlan2、vlan3和vlan4的IP地址不能設置為同一地址段,這4個vlan應該分別設置為像192.168.1.0、192.168.2.0、192.168.3.0、192.168.4.0。他們之間的通信,是通過路由器或三層交換機轉發,然后才能通信的。
歡迎關注我的頭條號,私信交流,學習更多網絡技術!