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 邊界?
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 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 只用一個實體介面,但把它切成多個邏輯 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。
G0/0 是實體 Interface。
G0/0.10、G0/0.20 是邏輯 Subinterface。
可以先想成:
一條實體道路
↓
802.1Q Tag 分車道
↓
Router 在邏輯上把不同 VLAN 分開處理
所以 Router-on-a-Stick 的重點就是:
一條實體 Trunk,承載多個 VLAN,再由 Router 的多個 Subinterface 分流。
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
本篇尚未實際驗證,下面是預期操作。
先建立 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
先啟用實體介面:
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
因為 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 10 的 ARP Broadcast 不會因為 Router 存在,就原封不動灑到 VLAN 20。
跨 VLAN 是 Router 做 Layer 3 Forwarding,不是把兩個 Layer 2 Broadcast Domain 合併。
所以:
Layer 2 廣播域
仍然分開
Layer 3 流量
可以經 Router 被轉送
真實環境還可能有:
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。
Router 就無法用同一條線正確區分多個 VLAN。
例如:
interface g0/0.10
encapsulation dot1Q 20
雖然名稱是 .10,但真正綁定的是 VLAN 20。
Subinterface 編號通常會跟 VLAN ID 對齊,只是為了可讀性,不是技術上的自動關聯。
VLAN 10 的 PC 如果把 Gateway 填成 192.168.20.1,它連自己的第一跳都找不到。
Subinterface 設得再完整,底層實體介面如果沒起來,整條路仍不會通。
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 又是在做什麼?