iT邦幫忙

2026 iThome 鐵人賽

DAY 16
0
IT Operation

網路為什麼筆記本:從一個封包開始,把 Router、Switch 與 Routing 串起來系列 第 16 篇

Day 16|同一台 Switch,為什麼 VLAN 可以分出不同的廣播網域?

  • 分享至 

  • xImage
  •  

Day 15 終於把 OSPF 這條線先收起來。

從 Static Route、OSPF、LSA、Area、ASBR 一路跑了很遠,今天先回到一開始那台最普通的 Switch。

假設公司有兩組人:

公司員工
訪客

而且全部都插在同一台 Switch。

PC-A ─┐
PC-B ─┤
      │
   [ Switch ]
      │
Guest-1 ─┤
Guest-2 ─┘

如果只有這樣,大家其實都待在同一個 Layer 2 網路裡。

這時我突然想到:

很多公司都會說:

員工網路和訪客網路要分開。

可是實體上明明可能就是同一台 Switch。

那它到底是怎麼「分開」的?

今天只追這個問題:

同一台 Switch,為什麼設定 VLAN 之後,就能變成不同的 Broadcast Domain?

先不要急著背 VLAN

VLAN 全名是:

Virtual LAN

以前看到這個名字,我大概會記成:

VLAN 就是虛擬區域網路。

然後考完就忘了。

這次換成真的問題。

假設:

Fa0/1 → 公司員工 A
Fa0/2 → 公司員工 B

Fa0/3 → 訪客 A
Fa0/4 → 訪客 B

全部插同一台 Switch。

如果沒有 VLAN,可以先想像:

Fa0/1 ─┐
Fa0/2 ─┤
       ├── Switch
Fa0/3 ─┤
Fa0/4 ─┘

Layer 2 Broadcast 進來時,Switch 會把它往同一個 Broadcast Domain 中的其他相關 Port flood。

最常看到的例子就是 ARP。

ARP 本來就是 Broadcast

假設 PC-A 想找:

192.168.1.20

它可能先送:

Who has 192.168.1.20?
```

Ethernet Destination MAC 是:

~~~text
FF:FF:FF:FF:FF:FF

也就是 Broadcast。

如果四台機器都在同一個 Broadcast Domain:

              ARP Broadcast
                   ↓

PC-A ───────→ [ Switch ]
                  ├──→ PC-B
                  ├──→ Guest-1
                  └──→ Guest-2

即使 Guest-1 根本不是這次要找的人,它還是會收到這個 Broadcast Frame。

因為現在大家都在同一個 Layer 2 Broadcast Domain。

VLAN 第一件事不是「多出一台 Switch」

現在開始分 VLAN。

例如:

VLAN 10 = STAFF
VLAN 20 = GUEST

然後設定:

Fa0/1 → VLAN 10
Fa0/2 → VLAN 10

Fa0/3 → VLAN 20
Fa0/4 → VLAN 20

實體還是:

同一台 Switch

但邏輯上可以先這樣想:

          實體 Switch

 ┌─────────────────────────┐
 │                         │
 │  VLAN 10      VLAN 20   │
 │                         │
 │ Fa0/1 Fa0/2  Fa0/3 Fa0/4│
 │                         │
 └─────────────────────────┘

更像是把一台實體 Switch 裡的 Port 分組。

VLAN 10
PC-A ─────┐
          ├── Layer 2 網路 A
PC-B ─────┘


VLAN 20
Guest-A ──┐
          ├── Layer 2 網路 B
Guest-B ──┘

不是實體真的拆成兩台機器。

但從 Layer 2 的資料轉送來看,它們被隔開了。

現在再送一次 ARP

PC-A 在 VLAN 10:

Fa0/1
```

送一個 Broadcast:

~~~text
FF:FF:FF:FF:FF:FF

Switch 收到 Frame 時,不只是想:

這是一個 Broadcast,所以全部 Port 都送。

還有一個很重要的範圍:

這是哪一個 VLAN 裡面的 Broadcast?

如果這個 Frame 屬於 VLAN 10:

VLAN 10 Broadcast
       ↓

PC-A ─→ Switch
          │
          └──→ PC-B

Guest-A   X
Guest-B   X

Switch 不會因為大家插在同一塊實體機器上,就把 VLAN 10 的 Broadcast 送進 VLAN 20。

所以:

Broadcast Domain
```

已經被切開。

這就是 VLAN 很核心的一件事情。

## VLAN 切的是 Layer 2

這裡很容易跟 IP Subnet 混在一起。

先只看 Layer 2。

~~~text
VLAN 10
```

和:

~~~text
VLAN 20
```

代表兩個不同的 Layer 2 Broadcast Domain。

例如:

~~~text
VLAN 10
MAC / Ethernet / ARP Broadcast

VLAN 20
MAC / Ethernet / ARP Broadcast

彼此不直接混在一起。

所以即使一台 Switch 有 48 個 Port,我也不一定要讓 48 個 Port 全部待在同一個廣播網域。

可以切成:

VLAN 10 → 員工
VLAN 20 → 訪客
VLAN 30 → Server
VLAN 40 → IP Phone

全部仍然在同一台實體 Switch。

那不同 VLAN 可以直接互傳嗎?

假設:

PC-A
VLAN 10
192.168.10.10
```

想找:

~~~text
Guest-A
VLAN 20
192.168.20.10
```

如果只有一台普通的 Layer 2 Switch:

~~~text
PC-A
 │
VLAN 10
 │
[ Switch ]
 │
VLAN 20
 │
Guest-A

它不能單純把 VLAN 10 的 Frame 轉進 VLAN 20。

因為兩邊本來就是不同的 Layer 2 網路。

如果要讓它們溝通,需要 Layer 3。

也就是:

VLAN 10
   ↓
Router / Layer 3 Switch
   ↓
VLAN 20

這件事就是後面會遇到的:

Inter-VLAN Routing
```

今天先不要往那裡挖。

現在只要先抓住:

> **不同 VLAN 之間,不是靠普通 Layer 2 switching 直接互通。**

## VLAN 跟 Subnet 是同一個東西嗎?

不是。

一個是 Layer 2 的邏輯分割。

一個是 Layer 3 的 IP 網路設計。

但實務上通常會配在一起。

例如:

~~~text
VLAN 10
192.168.10.0/24

VLAN 20
192.168.20.0/24

這樣腦袋比較容易對應:

VLAN 10
↓
一個 Layer 2 Broadcast Domain
↓
192.168.10.0/24


VLAN 20
↓
另一個 Layer 2 Broadcast Domain
↓
192.168.20.0/24

但不要因此倒過來說:

VLAN 就是 Subnet。

它們處理的是不同 Layer 的事情。

只是網路設計時常常一個 VLAN 搭配一個 IP Subnet。

MAC Address Table 也要知道 VLAN

以前 Day 03 學 Switch 時,我把它想成:

MAC Address
    ↓
Port

例如:

AA:AA:AA:AA:AA:AA → Fa0/1
BB:BB:BB:BB:BB:BB → Fa0/2

加入 VLAN 之後,腦袋要稍微升級。

可以先想成:

VLAN + MAC
    ↓
Port

例如:

VLAN 10  AA:AA:AA:AA:AA:AA → Fa0/1
VLAN 10  BB:BB:BB:BB:BB:BB → Fa0/2

VLAN 20  CC:CC:CC:CC:CC:CC → Fa0/3
VLAN 20  DD:DD:DD:DD:DD:DD → Fa0/4

Switch 在處理 Layer 2 Frame 時,VLAN 本身就是轉送範圍的一部分。

所以 VLAN 不是只拿來讓管理員看起來比較整齊。

它真的會影響 Frame 可以在哪個 Layer 2 範圍裡流動。

在 Packet Tracer 裡可以怎麼看?

先做最小版本。

一台 Switch、四台 PC:

PC1 ─ Fa0/1
PC2 ─ Fa0/2

PC3 ─ Fa0/3
PC4 ─ Fa0/4

先建立兩個 VLAN:

enable
configure terminal

vlan 10
 name STAFF

vlan 20
 name GUEST

然後把前兩個 Port 放進 VLAN 10:

interface range fa0/1 - 2
 switchport mode access
 switchport access vlan 10

後兩個放進 VLAN 20:

interface range fa0/3 - 4
 switchport mode access
 switchport access vlan 20

最後:

end
show vlan brief

預期會看到類似:

VLAN  Name      Ports
10    STAFF     Fa0/1, Fa0/2
20    GUEST     Fa0/3, Fa0/4

今天這裡重點不是背指令。

而是要能看到:

原本四個 Port
↓
同一個 Broadcast Domain

設定 VLAN 後
↓

Fa0/1、Fa0/2
↓
VLAN 10

Fa0/3、Fa0/4
↓
VLAN 20

IP 也一起設定看看

例如:

PC1
192.168.10.11/24

PC2
192.168.10.12/24
```

以及:

~~~text
PC3
192.168.20.11/24

PC4
192.168.20.12/24
```

在還沒有 Router 或 Layer 3 Switch 的情況下:

~~~text
PC1 → PC2
```

應該可以在 VLAN 10 裡互通。

~~~text
PC3 → PC4
```

也可以在 VLAN 20 裡互通。

但:

~~~text
PC1 → PC3
```

不能只靠這台 Layer 2 Switch 直接跨 VLAN。

這剛好把前幾天的觀念重新接起來:

~~~text
同一個 Layer 2 網路
↓
Switch

不同 Layer 3 網路
↓
Router

而 VLAN 讓一台實體 Switch 裡,可以存在多個 Layer 2 網路。

Access Port 又是什麼?

剛才設定:

switchport mode access
switchport access vlan 10

其實已經偷偷碰到下一個名詞:

Access Port
```

現在可以先把它理解成:

> 這個 Port 平常就是給某一個 VLAN 裡的終端設備使用。

例如:

~~~text
PC
 │
 │ 一般 Ethernet Frame
 │
Fa0/1
 │
Switch 判定:這個 Port 屬於 VLAN 10

PC 本身通常不需要知道:

我現在是 VLAN 10 喔。

Switch 的 Access Port 會把進來的流量歸到對應 VLAN。

但這立刻又會冒出下一個問題。

如果有兩台 Switch 呢?

現在公司變大了。

PC-A ─ Switch 1 ───── Switch 2 ─ PC-B
```

而 PC-A 和 PC-B 都屬於:

~~~text
VLAN 10
```

另外兩台訪客電腦都屬於:

~~~text
VLAN 20
```

問題來了。

Switch 1 和 Switch 2 中間只有一條線。

~~~text
Switch 1
    │
    │ 一條 Ethernet Link
    │
Switch 2

那這條線到底算:

VLAN 10
```

還是:

~~~text
VLAN 20
```

難道一個 VLAN 就要拉一條實體網路線?

~~~text
VLAN 10 → 一條線
VLAN 20 → 一條線
VLAN 30 → 再一條線
...

這樣 VLAN 多一點,線就先爆炸了。

所以一定還少了一個機制。

如果今天只記得一件事

VLAN 可以在同一台實體 Switch 裡建立多個獨立的 Layer 2 Broadcast Domain。

VLAN 10 的 Broadcast 不會因為大家插在同一台 Switch,就被 Flood 到 VLAN 20。

也因此:

同一台實體 Switch
```

不代表:

~~~text
所有 Port 都一定在同一個 Layer 2 網路
```

VLAN 是邏輯上的切割。

不同 VLAN 要互通,還需要 Layer 3 Routing。

## 下一個「為什麼」

今天的例子只處理:

~~~text
PC → Switch
```

所以一個 Access Port 對一個 VLAN 還算好懂。

可是當:

~~~text
Switch 1
   │
   │ 只有一條線
   │
Switch 2
```

這條線卻要同時載:

~~~text
VLAN 10
VLAN 20
VLAN 30
```

Switch 到底怎麼知道每一個 Frame 屬於哪一個 VLAN?

**為什麼 Access Port 不夠?Trunk 又是怎麼讓一條線同時載多個 VLAN?**

下一篇接 `Access Port、Trunk、802.1Q Tag`。

上一篇
Day 15|R1 明明有 Static Route,R2 為什麼不知道?
系列文
網路為什麼筆記本:從一個封包開始,把 Router、Switch 與 Routing 串起來 共 16 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言