iT邦幫忙

2026 iThome 鐵人賽

DAY 17
0

Day 16 最後卡在一個很實際的問題。

只有一台 Switch 時:

Fa0/1  → VLAN 10
Fa0/13 → VLAN 20

很好理解。

但公司不可能永遠只有一台 Switch。

Switch A                         Switch B

VLAN 10 員工                    VLAN 10 員工
VLAN 20 訪客                    VLAN 20 訪客

如果 Switch A 和 Switch B 中間只接一條線:

這條線到底算 VLAN 10,還是 VLAN 20?

難道每多一個 VLAN,就再多拉一條網路線?

今天就追這個問題。

先分清楚 Access Port 在做什麼

假設:

PC-A
 |
Fa0/1
 |
Switch A

PC-A 是普通電腦。

它通常不需要知道自己插在 VLAN 10。

Switch 可以把 Fa0/1 設成:

Access Port
VLAN 10

意思可以先理解成:

從這個 Port 進來的普通 Ethernet Frame,Switch 把它歸到 VLAN 10。

所以:

PC-A
送一般 Ethernet Frame
        ↓
Fa0/1 是 access vlan 10
        ↓
Switch 知道:
這份 Frame 屬於 VLAN 10

這就是 Access Port 最直覺的用途:

讓一個終端 Port 主要屬於一個 VLAN。

問題出在 Switch 和 Switch 之間

現在:

PC-A
VLAN 10
  |
Switch A
  |
  | 只有一條線
  |
Switch B
  |
PC-B
VLAN 10

如果 Switch-to-Switch 的那條線也是 Access VLAN 10,那 VLAN 10 可以過。

但 VLAN 20 呢?

難道變成:

線 1 → VLAN 10
線 2 → VLAN 20
線 3 → VLAN 30
...

VLAN 一多,這個做法就很不實際。

所以需要另一種 Port:

Trunk Port。

Trunk 不是「比較快的 Port」

第一次看到 Trunk,我很容易把它想成「骨幹線,所以比較快」。

但 Trunk 的核心不是速度。

而是:

同一條實體連線可以承載多個 VLAN 的流量。

Switch A
   |
   | Trunk
   | VLAN 10
   | VLAN 20
   | VLAN 30
   |
Switch B

這樣只需要一條線。

可是新的問題又來了:

VLAN 10、20、30 的 Frame 混在同一條線上,Switch B 怎麼知道每一份原本屬於哪個 VLAN?

802.1Q Tag 就是拿來保留 VLAN 身分

在 Trunk 上,Switch 需要替 Frame 帶上 VLAN 識別資訊。

最常見的標準就是 IEEE 802.1Q。

先不要急著背 bit 數。

只看它解決的事情:

原本 Ethernet Frame
        ↓
進入 Trunk
        ↓
帶上 VLAN 識別資訊
        ↓
另一台 Switch 收到
        ↓
知道這份 Frame 屬於哪個 VLAN

例如:

Frame A
VLAN 10 Tag
   ↓
同一條 Trunk
   ↓
Switch B
   ↓
放回 VLAN 10

另一份:

Frame B
VLAN 20 Tag
   ↓
同一條 Trunk
   ↓
Switch B
   ↓
放回 VLAN 20

所以那條線不是「VLAN 10 的線」或「VLAN 20 的線」。

而是:

一條可以搬多個 VLAN 的 Trunk。

Access 和 Trunk 放在一起看

Port 類型 常見對象 核心工作
Access PC、印表機、一般終端 主要承載一個 VLAN
Trunk Switch、某些 Router / AP / Server 同一條連線承載多個 VLAN

整條路徑:

PC-A
普通 Frame
   ↓
Access VLAN 10
   ↓
Switch A
   ↓
802.1Q 保留 VLAN 10 身分
   ↓
Trunk
   ↓
Switch B
   ↓
辨認 VLAN 10
   ↓
Access VLAN 10
   ↓
PC-B

Tag 會一路送到普通 PC 嗎?

一般 Access Port 的情境下,不需要。

可以想成:

Switch A
↓
Frame 要走 Trunk
↓
保留 VLAN 身分
↓
Switch B 收到
↓
知道它是 VLAN 10
↓
準備從 VLAN 10 Access Port 送給 PC
↓
終端收到一般 Ethernet Frame

所以普通 PC 不需要理解整個 Trunk 架構。

VLAN 分區主要由 Switch 幫它維持。

802.1Q Tag 大概放在哪?

原本 Ethernet Frame 可以先粗略看:

Destination MAC
Source MAC
EtherType / Length
Payload
FCS

加上 802.1Q 後,概念上會多一段 Tag:

Destination MAC
Source MAC
802.1Q Tag
EtherType
Payload
FCS

Tag 裡包含 VLAN ID 等資訊。

VLAN ID 欄位是 12 bits,所以有 4096 種組合;一般 VLAN ID 常見範圍是 1~4094,0 與 4095 有特殊用途,不當成一般 VLAN 使用。

今天不用先背 Tag 裡每一個欄位,只抓住:

Trunk 上必須有辦法告訴下一台 Switch:這份 Frame 屬於哪個 VLAN。

Native VLAN 是不是例外?

是,所以不能把:

Trunk 上每一個 Frame 永遠都有 Tag

講成絕對規則。

Cisco 常見 802.1Q Trunk 有 Native VLAN 的概念;預設情況下 Native VLAN 流量可以不帶 802.1Q Tag。

今天先知道有這個例外。

Native VLAN 兩端不一致會發生什麼,之後再挖。

Packet Tracer 最小驗證

本篇尚未實際驗證,下面是預期操作。

PC-A                         PC-B
VLAN 10                      VLAN 10
 |                            |
SW1 -------- Trunk -------- SW2
 |                            |
Guest-A                    Guest-B
VLAN 20                    VLAN 20

兩台 Switch 都先建立 VLAN:

configure terminal

vlan 10
 name STAFF

vlan 20
 name GUEST

假設 SW1:

Fa0/1  → PC-A
Fa0/2  → Guest-A
Fa0/24 → SW2

Access Port:

interface fastEthernet 0/1
 switchport mode access
 switchport access vlan 10

interface fastEthernet 0/2
 switchport mode access
 switchport access vlan 20

SW2 做對應設定。

兩台 Switch 中間:

interface fastEthernet 0/24
 switchport mode trunk

接著觀察:

show interfaces trunk
show vlan brief

預期可以看到 Trunk 狀態,以及 VLAN / Port 的分配資訊。

實際輸出依 Packet Tracer 或 IOS 版本為準。

兩邊都要有那個 VLAN

假設 SW1 有 VLAN 10,但 SW2 根本沒有建立 VLAN 10。

不能只因為 Trunk 上收到 VLAN 10 的 Frame,就自動認定整條路徑一定正常。

查問題時要一起看:

SW1 有 VLAN 10 嗎?
↓
SW2 有 VLAN 10 嗎?
↓
Trunk 允許 VLAN 10 嗎?
↓
對應 Access Port 真的在 VLAN 10 嗎?

只看「線有沒有亮」遠遠不夠。

Trunk 也可以限制 VLAN

假設公司有:

VLAN 10
VLAN 20
VLAN 30
VLAN 40

但某條 Trunk 只需要 10、20。

可以限制 allowed VLAN。

概念上:

switchport trunk allowed vlan 10,20

所以遇到 Trunk 問題,我現在會多問:

1. Port 真的是 Trunk 嗎?
2. VLAN 在兩邊都有嗎?
3. 這個 VLAN 被允許通過嗎?
4. Native VLAN 是否一致?

先別往下看,想三題

  1. PC 插在 Access VLAN 10 的 Port,普通情況下它自己一定要產生 802.1Q Tag 嗎?
  2. 一條 Trunk 可以同時承載 VLAN 10 和 VLAN 20 嗎?
  3. Switch B 為什麼知道 Trunk 上收到的 Frame 要放回哪個 VLAN?
  1. 一般 Access Port 情境下不用,Switch 依 Port 的 VLAN 設定分類。
  2. 可以,這正是 Trunk 的核心用途。
  3. 802.1Q 提供 VLAN 識別資訊;Native VLAN 是需要另外注意的例外。

如果今天只記得一件事

Access Port 讓終端加入一個主要 VLAN;Trunk 讓一條實體連線承載多個 VLAN;802.1Q 讓接收端知道 Frame 原本屬於哪個 VLAN。

所以:

很多 VLAN
   ↓
一條 Trunk
   ↓
保留 VLAN 身分

上一篇
Day 16|同一台 Switch,為什麼 VLAN 可以分出不同的廣播網域?
系列文
網路為什麼筆記本:從一個封包開始,把 Router、Switch 與 Routing 串起來 共 17 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言