VLAN(Virtual LAN) 是交換器上一個很重要的技術,它可以去規劃一個區域網路內的組織,也就是可將不同類型的部門網路進行邏輯上的網路切分。VLAN
的技術可將一台交換器上的埠分成幾個群,而每個群又可透過 VLAN
特性再做一些詳細設定,VLAN
邏輯上根據切分的群就有幾個廣播網域(Broadcast Domain),所以這也讓不同的 VLAN
再域設下不能直接相互通訊。透過 VLAN
技術切分的廣播網域相比原本同一 LAN
下的廣播域對網路負擔要來的小。
VLAN 資料轉發
在多個交換器之間設定的 VLAN
,則域設下只有同一 VLAN
才能通訊。在預設下交換器都屬於同一 VLAN
中,因此針對於接收到的封包對所有埠做 flooding 動作是對的,因此做了 VLAN
後,VLAN
間傳遞封包只會在該 VLAN
中進行 flooding。另外一個重點是 trunk
,它用來對跨越多個交換器的 VLAN 進行轉發,要設置 trunk
則接口需要是 FastEthernet
以上才可設定。
trunk 資料轉發
trunk
會在封包內增加一個標籤,用來指名這封包是屬於哪個 VLAN
,而這標邊被新增後將傳往下個設備。下個設備收到之後,再根據標籤來得知此封包是屬於哪個 VLAN
,然後再轉發至所屬的 VLAN
。
這邊將透過下面架構進行 VLAN
操作,這邊大致上會以 ESW1 做設定,ESW2 則是對應這邊不再多做說明與設置。
查看 ESW1 交換器 VLAN 訊息,發現所有接口預設都是 VLAN 1,在這種情況下我們的路由器 R1 至 R6 都能相互通訊。
ESW1#show vlan-switch
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active Fa1/0, Fa1/1, Fa1/2, Fa1/3
Fa1/4, Fa1/5, Fa1/6, Fa1/7
Fa1/8, Fa1/9, Fa1/10, Fa1/11
Fa1/12, Fa1/13, Fa1/14, Fa1/15
1002 fddi-default active
1003 token-ring-default active
1004 fddinet-default active
1005 trnet-default active
VLAN Type SAID MTU Parent RingNo BridgeNo Stp BrdgMode Trans1 Trans2
---- ----- ---------- ----- ------ ------ -------- ---- -------- ------ ------
1 enet 100001 1500 - - - - - 1002 1003
1002 fddi 101002 1500 - - - - - 1 1003
1003 tr 101003 1500 1005 0 - - srb 1 1002
1004 fdnet 101004 1500 - - 1 ibm - 0 0
1005 trnet 101005 1500 - - 1 ibm - 0 0
接著我們配置 VLAN 觀察,R1 和 R4 我們讓它預設;R2 和 R5 設至為 VLAN 20;R3 和 R6 為 VLAN 30。
建立 VLAN。
ESW1#vlan database
ESW1(vlan)#vlan 20 name R2&R5
VLAN 20 added:
Name: R2&R5
ESW1(vlan)#vlan 30 name R3&R6
VLAN 30 added:
Name: R3&R6
ESW1(vlan)#
查看是否建立
ESW1#show vlan-switch
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active Fa1/0, Fa1/1, Fa1/2, Fa1/3
Fa1/4, Fa1/5, Fa1/6, Fa1/7
Fa1/8, Fa1/9, Fa1/10, Fa1/11
Fa1/12, Fa1/13, Fa1/14, Fa1/15
20 R2&R5 active # this
30 R3&R6 active # this
...
接著要設定接口至 VLAN,關鍵指令為 switchport mode
。該關鍵指令有四個值,在建立之前我們了解以下
- Trunk
表示此埠要被設至為
802.1Q
協定。它同時也會將另一個對接的接口協商要使用哪種Trunk
。 - Access
連接電腦端點才會設定的模式,此模式可用於設置
Port Security
。 - Dynamic desirable
本機埠和對接埠進行自動協調,用來將非
Trunk
協調成Trunk
,如果對接埠為Access
則將不會形成Trunk
- Dynamic auto
當自己的埠設定為
Dynamic auto
時,對接埠為Trunk
或Desirable
,將會協調成Trunk
,如果對接埠是Access
或Auto
,Trunk
無法協調成功。
Trunk | Access | Desirable | Auto | |
---|---|---|---|---|
Trunk | True | True | True | |
Access | ||||
Desirable | True | True | True | |
Auto | True | True |
我們設置相關埠 VLAN,如下
ESW1(config)#interface fastEthernet 1/1
ESW1(config-if)#switchport mode access
ESW1(config-if)#switchport access vlan 20
ESW1(config-if)#exit
ESW1(config)#interface fastEthernet 1/2
ESW1(config-if)#switchport mode access
ESW1(config-if)#switchport access vlan 30
ESW1(config-if)#exit
每一個埠只能屬於某一個 VLAN
查看有無分配
ESW1(config)#do sh vlan-switch
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active Fa1/0, Fa1/3, Fa1/4, Fa1/5
Fa1/6, Fa1/7, Fa1/8, Fa1/9
Fa1/10, Fa1/11, Fa1/12, Fa1/13
Fa1/14, Fa1/15
20 R2&R5 active Fa1/1
30 R3&R6 active Fa1/2
1002 fddi-default active
1003 token-ring-default active
...
設置完之後嘗試互 ping,發現只有 VALN 1 的埠可以相互連接,不是要有 trunk
才能讓跨多交換器的 VLAN 通訊嗎?原因是沒有被貼上 VLAN 標籤的封包都會被送往預設 VLAN 也就是 VLAN 1,因此 VLAN 1 的埠可以通訊。
屬於 VLAN 20 或 VLAN 30 的路由器相互也不能通,原因大致上是設定了 VLAN 但是交換器接收到了卻無法辨別這 VLAN 要送往哪邊,因此要透過 trunk
讓交換器知道 VLAN 的標籤,然後正確的從埠做轉發。
設置 ESW1 和 ESW2 相互連接的埠為 trunk
ESW1(config)#interface fastEthernet 1/15
ESW1(config-if)#switchport mode trunk
ESW1(config-if)#switchport trunk encapsulation dot1q
ESW2(config)#interface fastEthernet 1/15
ESW2(config-if)#switchport mode trunk
ESW2(config-if)#switchport trunk encapsulation dot1q
查看 trunk
接口訊息
ESW1#show interfaces trunk
Port Mode Encapsulation Status Native vlan
Fa1/15 on 802.1q trunking 1
Port Vlans allowed on trunk
Fa1/15 1-1005
Port Vlans allowed and active in management domain
Fa1/15 1,20,30
Port Vlans in spanning tree forwarding state and not pruned
Fa1/15 1,20,30
設置完之後屬於 VLAN 20 或 VLAN 30 的路由器能夠在相同 VLAN ID 中進行通訊。至於 VLAN 20 無法與 VLAN 30 的路由器通訊,是另一個話題。我們利用 Wireshark 從 trunk
的鏈路進行簡單的觀察。
下圖顯示出經過 trunk
時會攜帶一個 VLAN 標籤。
下圖在 VLAN 1 進行通訊時,不攜帶該 VLAN 標籤。
綜合以上,我們可以設定出在多個交換器中相同 VLAN ID 的終端相互通訊。
我們在使用 show interfaces trunk
發現有一個 Vlans allowed on trunk
字段,它可以限制 VLAN ID 為多少時可以通過,預設是全部 1-1005
。我們可以嘗試只讓 VLAN 30 和 VLAN 1 通過,設定如下
需在 trunk 埠上設定,同時查看 trunk
接口資訊發現確實更改。此時嘗試互 ping VLAN 20 的路由器,發現無法通訊。
ESW1(config-if)#switchport trunk allowed vlan 1-19,30-1005
ESW1(config-if)#do sh int trunk
Port Mode Encapsulation Status Native vlan
Fa1/15 on 802.1q trunking 1
Port Vlans allowed on trunk
Fa1/15 1-19,30-1005
Port Vlans allowed and active in management domain
Fa1/15 1,30
Port Vlans in spanning tree forwarding state and not pruned
Fa1/15 1,30
以下是 switchport trunk allowed vlan
可設定方式
#switchport trunk allowed vlan ?
WORD VLAN IDs of the allowed VLANs when this port is in trunking mode
add add VLANs to the current list
all all VLANs
except all VLANs except the following
remove remove VLANs from the current list
其他資訊
VLAN 1 是 trunk
上的一個 Native VLAN
,其表示不會放至標籤至 trunk
鏈結上。但,該值是可以設定的,對於 trunk
鏈接來說雙方的埠所設定的 Native VLAN
需一致。我們下面嘗試一下吧!
將 Native VLAN
改為 VLAN 20,同時將 trunk
鏈結設定全部可通過。透過查看 trunk
接口可以得知現在已經更改為 20。對於預設 Native vlan
是包括所有的埠,對於資訊安全有疑慮,最好是做更改。
ESW1(config-if)#switchport trunk native vlan 20
ESW1(config-if)#switchport trunk allowed vlan all
ESW1(config-if)#do sh int trunk
Port Mode Encapsulation Status Native vlan
Fa1/15 on 802.1q trunking 20
Port Vlans allowed on trunk
Fa1/15 1-1005
Port Vlans allowed and active in management domain
Fa1/15 1,20,30
Port Vlans in spanning tree forwarding state and not pruned
Fa1/15 30