iT邦幫忙

2026 iThome 鐵人賽

DAY 18
0
IT Operation

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

Day 18|VLAN 10 和 VLAN 20 明明被隔開了,為什麼 Router-on-a-Stick 又能讓它們互通?

  • 分享至 

  • xImage
  •  

Day 17 已經知道 Trunk 可以用 802.1Q 在一條實體線上承載多個 VLAN。

但 Trunk 只是延伸 VLAN,不會自動讓 VLAN 彼此互通。

假設:

PC-A
192.168.10.10/24
VLAN 10

PC-B
192.168.20.10/24
VLAN 20

即使兩台電腦接在同一台 Switch,它們仍在不同 Layer 2 Broadcast Domain。

所以今天追一個問題:

VLAN 本來就是為了隔開,封包到底怎麼跨過這個 Layer 2 邊界?

先回到 Subnet 與 Default Gateway

PC-A 要傳給 192.168.20.10。

自己是 192.168.10.10/24。

套上 /24:

自己網段:192.168.10.0/24
目的網段:192.168.20.0/24

不同網段。

所以 PC-A 不會直接 ARP 遠端的 PC-B,而是先找自己的 Default Gateway。

例如:

PC-A
IP      192.168.10.10/24
Gateway 192.168.10.1

這時真正需要的是 Layer 3 裝置:

VLAN 10
   ↓
Router
   ↓
VLAN 20

Router 收到封包後查 Routing Table,再把封包送往另一個網段。

這件事就是 Inter-VLAN Routing。

最直覺的方法:每個 VLAN 接 Router 一個實體介面

最容易理解的版本:

VLAN 10
PC-A
  |
Switch
  |
Router G0/0
192.168.10.1/24

Router G0/1
192.168.20.1/24
  |
Switch
  |
PC-B
VLAN 20

Router 自己有:

G0/0 → 192.168.10.1/24
G0/1 → 192.168.20.1/24

所以也會有兩條 Connected Route:

192.168.10.0/24
192.168.20.0/24

概念很單純。

但如果公司有十幾個 VLAN,難道就要為每個 VLAN 多拉一條 Router 實體線?

這就是 Router-on-a-Stick 想解決的問題。

Router-on-a-Stick 到底在做什麼?

核心想法是:

Router 只用一個實體介面,但把它切成多個邏輯 Subinterface。

例如:

Router G0/0
├── G0/0.10
└── G0/0.20

每個 Subinterface 對應一個 VLAN:

G0/0.10
→ VLAN 10
→ 192.168.10.1/24

G0/0.20
→ VLAN 20
→ 192.168.20.1/24

Switch 到 Router 之間則是一條 Trunk:

Switch
   ║
   ║ 802.1Q Trunk
   ║
Router

同一條線可以送:

VLAN 10 Frame
VLAN 20 Frame
VLAN 30 Frame
...

Router 再依 802.1Q Tag 把 Frame 交給正確的 Subinterface。

Subinterface 不是多了一張實體網卡

G0/0 是實體 Interface。

G0/0.10、G0/0.20 是邏輯 Subinterface。

可以先想成:

一條實體道路
↓
802.1Q Tag 分車道
↓
Router 在邏輯上把不同 VLAN 分開處理

所以 Router-on-a-Stick 的重點就是:

一條實體 Trunk,承載多個 VLAN,再由 Router 的多個 Subinterface 分流。

Packet Tracer 最小拓撲

PC-A                        PC-B
VLAN 10                     VLAN 20
192.168.10.10/24            192.168.20.10/24
GW 192.168.10.1             GW 192.168.20.1
   |                           |
Fa0/1                      Fa0/2
   \                         /
          Switch
            |
          Fa0/24
            ||
            || Trunk
            ||
         Router G0/0

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

Switch 端

先建立 VLAN:

configure terminal

vlan 10
 name STAFF

vlan 20
 name GUEST

Access Port:

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

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

Switch 接 Router 的 Port:

interface fastEthernet 0/24
 switchport mode trunk

Router 端建立 Subinterface

先啟用實體介面:

interface gigabitEthernet 0/0
 no shutdown

VLAN 10:

interface gigabitEthernet 0/0.10
 encapsulation dot1Q 10
 ip address 192.168.10.1 255.255.255.0

VLAN 20:

interface gigabitEthernet 0/0.20
 encapsulation dot1Q 20
 ip address 192.168.20.1 255.255.255.0

最關鍵的是:

encapsulation dot1Q 10
encapsulation dot1Q 20

它告訴 Router:

看到 VLAN 10 Tag
→ 交給 G0/0.10

看到 VLAN 20 Tag
→ 交給 G0/0.20

封包真正怎麼走?

假設 PC-A 要 ping PC-B:

192.168.10.10
→
192.168.20.10

PC-A 判斷目的地不同網段:

目的地不在 192.168.10.0/24
↓
交給 Default Gateway 192.168.10.1

所以第一個 ARP 是:

誰是 192.168.10.1?

拿到 Router 的 MAC 後,送出:

Destination IP  = 192.168.20.10
Destination MAC = Router

這再次接回 Day 04:

目的 IP 指向最終目的地,但這一跳的目的 MAC 指向 Gateway。

Switch 收到 VLAN 10 的 Frame:

Access VLAN 10
↓
送往 Trunk
↓
帶著 VLAN 10 身分
↓
Router
↓
G0/0.10

Router 解開 Layer 2 後看到:

Destination IP = 192.168.20.10

查 Routing Table:

192.168.20.0/24
→ Connected
→ G0/0.20

如果 Router 還不知道 PC-B 的 MAC,就在 VLAN 20 上 ARP:

誰是 192.168.20.10?

取得 MAC 後重新封裝:

Source MAC      = Router 這一跳的 MAC
Destination MAC = PC-B
Destination IP  = 192.168.20.10

最後:

G0/0.20
↓
802.1Q VLAN 20
↓
Trunk
↓
Switch
↓
VLAN 20 Access Port
↓
PC-B

這時前面很多天終於串起來:

Subnet 判斷
↓
Default Gateway
↓
ARP
↓
VLAN
↓
802.1Q
↓
Routing Table
↓
重新找下一跳 MAC

Router 為什麼可以讓 VLAN 互通?

因為 VLAN 隔離的是 Layer 2 Broadcast Domain。

Router 工作在 Layer 3。

所以:

VLAN 10
= 一個 Layer 2 網域

VLAN 20
= 另一個 Layer 2 網域

但 Router 可以同時擁有:

192.168.10.1/24
192.168.20.1/24

於是它就成為兩個 IP 網段之間的 Layer 3 邊界。

一句話:

VLAN 把 Layer 2 分開,Router 再依 Layer 3 Routing 規則決定不同網段如何互通。

VLAN 隔離是不是就失效了?

不是。

VLAN 10 的 ARP Broadcast 不會因為 Router 存在,就原封不動灑到 VLAN 20。

跨 VLAN 是 Router 做 Layer 3 Forwarding,不是把兩個 Layer 2 Broadcast Domain 合併。

所以:

Layer 2 廣播域
仍然分開

Layer 3 流量
可以經 Router 被轉送

有 Route 不代表什麼都准通

真實環境還可能有:

ACL
Firewall
Security Policy

例如:

VLAN 10 員工網
可以進 Server VLAN

VLAN 20 訪客網
只能上 Internet
不能進內部 Server

所以 Routing 回答:

有沒有路?

安全規則回答:

有路的情況下,准不准走?

這兩件事要分開。

怎麼驗證?

Switch 預期可以看:

show vlan brief
show interfaces trunk

Router:

show ip interface brief
show ip route

應該能看到兩個 Connected Network:

192.168.10.0/24
192.168.20.0/24

然後從 PC-A:

ping 192.168.10.1
ping 192.168.20.1
ping 192.168.20.10

如果連自己的 Gateway 都失敗,先看 Access VLAN、Trunk 與 Subinterface。

如果兩個 Gateway 都能到,但 PC-A 到 PC-B 不通,再看另一端 PC 的 IP、Mask、Gateway 與 VLAN。

四個常見錯誤

1. Switch 到 Router 的 Port 忘了設 Trunk

Router 就無法用同一條線正確區分多個 VLAN。

2. Subinterface 的 dot1Q VLAN ID 寫錯

例如:

interface g0/0.10
 encapsulation dot1Q 20

雖然名稱是 .10,但真正綁定的是 VLAN 20。

Subinterface 編號通常會跟 VLAN ID 對齊,只是為了可讀性,不是技術上的自動關聯。

3. PC 的 Default Gateway 寫錯

VLAN 10 的 PC 如果把 Gateway 填成 192.168.20.1,它連自己的第一跳都找不到。

4. Router 實體 Interface 沒有啟用

Subinterface 設得再完整,底層實體介面如果沒起來,整條路仍不會通。

先別往下看,想三題

  1. VLAN 10 的 PC 要連 VLAN 20,第一個 ARP 的是 VLAN 20 那台 PC 嗎?
  2. Router-on-a-Stick 為什麼只需要一條實體線?
  3. G0/0.10 這個 .10 本身是不是就等於 VLAN 10?
  1. 不是。目的地不同網段,PC 先 ARP 自己的 Default Gateway。
  2. 因為 Switch 到 Router 之間使用 802.1Q Trunk,一條線可以承載多個 VLAN,再由 Router Subinterface 分流。
  3. 不是。真正綁定 VLAN 的是 encapsulation dot1Q VLAN-ID;.10 通常只是方便管理的命名習慣。

如果今天只記得一件事

VLAN 把 Layer 2 廣播域分開;要跨 VLAN,就必須經過 Layer 3 Routing。Router-on-a-Stick 用一條 802.1Q Trunk 加上多個 Subinterface,讓一個實體 Router 介面同時成為多個 VLAN 的 Gateway。

腦袋固定畫:

VLAN 10
   ↓
Gateway 192.168.10.1
   ↓
Router Routing Table
   ↓
G0/0.20
   ↓
VLAN 20

下一個「為什麼」

Router-on-a-Stick 能工作。

但大量 VLAN 的流量都要:

Switch
↓
同一條 Trunk
↓
外部 Router
↓
再回 Switch

企業網路裡常看到 Multilayer Switch / Layer 3 Switch。

那下一個問題就是:

Layer 3 Switch 為什麼不用外接 Router,也能讓不同 VLAN 互通?SVI 又是在做什麼?


上一篇
Day 17|一條線怎麼同時載 VLAN 10、VLAN 20?
下一篇
Day 19|Layer 3 Switch 為什麼不用外接 Router,也能讓不同 VLAN 互通?SVI 到底是什麼?
系列文
網路為什麼筆記本:從一個封包開始,把 Router、Switch 與 Routing 串起來 共 22 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言