很可惜,連續 30 天發文的挑戰在前幾天中斷了。
原本已經打算就此停筆,沒想到經過幾番掙扎,最後還是決定把這個系列的文章好好寫完。
所以接下來可能不會維持一天一更的節奏,但我還是會陸續把後面的內容分享出來。
雖然中途停了下來,但既然都走到這裡了,還是想把這個系列完整地走完。
「VLAN 都設定好了,為什麼電腦還是連不到印表機?」
檢查後發現:
如果把 VLAN 想成不同房間,這個結果其實很合理。
VLAN 的目的,本來就是把一個 Layer 2 網路切成不同的 Broadcast Domain。既然我們主動把設備隔開,就不能期待 Switch 又在背後偷偷幫它們直接傳送 Frame。
要讓不同 VLAN 互通,需要一個能處理 Layer 3 的設備,例如:
這個過程稱為:
Inter-VLAN Routing
也就是在不同 VLAN/Subnet 之間進行路由。
一般 Layer 2 Switch 主要根據 Destination MAC Address 轉送 Ethernet Frame。
它會維護 MAC Address Table,例如:
VLAN 20
AAAA.BBBB.CCCC
→ Gi1/0/10
但 VLAN 20 和 VLAN 60 是兩個獨立的 Layer 2 Broadcast Domain。
VLAN 20 的 ARP Request 不會被 Flood 到 VLAN 60;VLAN 20 的 MAC Address Table,也不會讓設備直接繞過 Layer 3 邊界存取 VLAN 60。
假設:
PC:10.10.20.35/24
Gateway:10.10.20.1
VLAN:20
印表機為:
Printer:10.10.60.50/24
Gateway:10.10.60.1
VLAN:60
PC 透過 Subnet Mask 判斷:
10.10.60.50
不在自己的 10.10.20.0/24 中,因此不會直接 ARP 尋找印表機。
它會把封包交給:
10.10.20.1
接下來必須由 Layer 3 設備,把封包從 VLAN 20 路由到 VLAN 60。
如果沒有這個 Layer 3 Gateway,兩個 VLAN 就只會各自正常,各自孤單。
不同 VLAN 要成功互通,至少要具備:
因此,Inter-VLAN Routing 不是只輸入一行:
ip routing
然後等待網路自己領悟人生。
任何一個條件缺少,都可能造成跨 VLAN 失敗。
最直覺的做法,是讓 Router 使用不同實體介面連接不同 VLAN。
例如:
Router Gi0/0
→ VLAN 20
→ 10.10.20.1/24
Router Gi0/1
→ VLAN 60
→ 10.10.60.1/24
交換器端則將對應 Port 設為 Access:
Switch Gi1/0/47
→ Access VLAN 20
→ Router Gi0/0
Switch Gi1/0/48
→ Access VLAN 60
→ Router Gi0/1
Router 同時擁有:
10.10.20.0/24
10.10.60.0/24
兩個 Directly Connected Network,因此可以在它們之間轉送封包。
每新增一個 VLAN,就需要增加一個 Router Interface 與一條實體連線。
如果公司有二十個 VLAN,就需要二十個實體介面。
這種設計:
因此,現代環境通常不會用一個實體 Router Port 對應一個 VLAN,除非規模小、設備用途特殊,或需要明確的實體隔離。
Router-on-a-Stick,常縮寫為 ROAS。
它的概念是:
使用 Router 的一個實體介面,建立多個邏輯 Subinterface,透過同一條 Trunk 為多個 VLAN 提供路由。
架構可能是:
VLAN 20 Client ─┐
│
VLAN 60 Printer ├→ Switch → 802.1Q Trunk → Router
│
VLAN 100 Guest ─┘
Switch 和 Router 之間只需要一條實體連線,但可以承載多個 VLAN。
這就是 Stick 的由來——所有 VLAN 都經過同一根「棒子」連到 Router。
假設需要:
VLAN 20:10.10.20.0/24
VLAN 60:10.10.60.0/24
Router 實體介面為:
GigabitEthernet0/0
可以建立兩個 Subinterface。
interface GigabitEthernet0/0.20
encapsulation dot1Q 20
ip address 10.10.20.1 255.255.255.0
interface GigabitEthernet0/0.60
encapsulation dot1Q 60
ip address 10.10.60.1 255.255.255.0
再啟用實體介面:
interface GigabitEthernet0/0
no shutdown
Switch 連接 Router 的 Port 則需要設定為 Trunk:
interface GigabitEthernet1/0/48
switchport mode trunk
switchport trunk allowed vlan 20,60
這樣:
.20
.60
Subinterface 本身只是邏輯介面。
Router 必須知道哪個 VLAN Tag 應該交給哪個 Subinterface,因此要設定:
encapsulation dot1Q VLAN_ID
例如:
encapsulation dot1Q 20
代表這個 Subinterface 處理 VLAN 20 的 802.1Q Frame。
如果 VLAN ID 填錯:
Subinterface .20
encapsulation dot1Q 30
.20 只是介面名稱,不會自動讓它屬於 VLAN 20。
真正決定 VLAN Mapping 的是:
encapsulation dot1Q 30
這是很常見的陷阱。
介面尾數 .20 只是方便管理者閱讀,Router 不會因為名稱看起來像 20,就體貼地替你修正設定。
假設 PC 要存取印表機:
PC:10.10.20.35/24
Gateway:10.10.20.1
Printer:10.10.60.50/24
Gateway:10.10.60.1
封包流程如下。
PC 發現:
10.10.60.50
不在自己的 10.10.20.0/24,因此將封包交給 Gateway:
10.10.20.1
PC 透過 ARP 取得 Router VLAN 20 Subinterface 的 MAC。
接著建立:
Source IP:10.10.20.35
Destination IP:10.10.60.50
Source MAC:PC
Destination MAC:Router
Frame 從 VLAN 20 的 Access Port 進入 Switch。
Switch 在送往 Router 的 Trunk 時,加上:
VLAN Tag:20
Router 的:
GigabitEthernet0/0.20
接收 VLAN 20 流量。
Router 拆除原本 Layer 2 Header,查看 Destination IP:
10.10.60.50
Routing Table 顯示 10.10.60.0/24 是 Directly Connected。
Router 對 10.10.60.50 進行 ARP,取得印表機 MAC。
重新建立新的 Ethernet Frame:
Source MAC:Router
Destination MAC:Printer
Source IP:10.10.20.35
Destination IP:10.10.60.50
送出時加上:
VLAN Tag:60
Switch 收到 VLAN 60 的 Tagged Frame,找到印表機所在的 Access Port。
送出 Access Port 前移除 Tag,再交給印表機。
這個過程中:
這也是 Layer 2 Switching 與 Layer 3 Routing 的核心差異。
如果需要讓某個 Subinterface 處理 Trunk 的 Native VLAN,可以使用類似:
encapsulation dot1Q 99 native
這表示該 Subinterface 對應 Native VLAN 99。
Router 與 Switch 兩端的 Native VLAN 必須一致。
如果 Switch 認為 Native VLAN 是 99,Router 卻認為 Untagged Frame 屬於 VLAN 1,就可能發生:
不過實際設計是否使用 Native VLAN、是否讓 Native VLAN 承載管理流量,要依設備規範與安全政策決定。
沒有必要為了「看起來有設定」就硬塞一個 Native VLAN 進去。
所有 VLAN 之間的流量,都要經過同一個 Router 實體介面。
例如 VLAN 20 傳送大型檔案到 VLAN 60,封包會:
從 Switch 上 Trunk 到 Router
→ Router 完成 Routing
→ 再從同一條 Trunk 回到 Switch
同一條實體介面同時承擔:
因此可能出現:
Router-on-a-Stick 很適合教學、小型環境或特殊需求,但大型企業網路通常更常使用 Layer 3 Switch。
Layer 3 Switch 同時具備:
它可以為每個 VLAN 建立:
SVI,Switch Virtual Interface
例如:
interface Vlan20
ip address 10.10.20.1 255.255.255.0
no shutdown
以及:
interface Vlan60
ip address 10.10.60.1 255.255.255.0
no shutdown
再啟用 Routing:
ip routing
此時:
10.10.20.1
10.10.60.1
不是。
SVI 是代表某個 VLAN 的邏輯 Layer 3 Interface。
例如:
interface Vlan20
不是 Switch 上的第 20 個實體 Port。
它代表 VLAN 20 的 Layer 3 介面,可以用來:
多個位於 VLAN 20 的 Access Port,可以共用同一個 SVI Gateway。
建立:
interface Vlan20
no shutdown
不代表 SVI 一定會 Up。
SVI 要正常 Up,通常至少需要:
如果 VLAN 存在,但沒有任何 Active Port,SVI 可能仍是 Down。
可能看到:
Vlan20 is down, line protocol is down
因此 SVI 不通時,不要只重複輸入:
no shutdown
如果下面沒有任何活著的 Layer 2 成員,它仍然可能很合理地躺著。
部分 Layer 3 Switch 即使建立了多個 SVI,也需要啟用:
ip routing
才能在不同 IP Network 之間轉送封包。
如果沒有啟用,SVI 可能只能作為管理介面,無法執行完整 Inter-VLAN Routing。
常見症狀是:
這時可以檢查:
ip routing 是否啟用查看路由表:
show ip route
正常可能看到:
C 10.10.20.0/24 is directly connected, Vlan20
C 10.10.60.0/24 is directly connected, Vlan60
C 代表 Connected。
有這兩條 Connected Route,Layer 3 Switch 才知道這兩個網段分別連在哪個 SVI。
Layer 3 Switch 通常能利用硬體 ASIC 進行高速轉送。
同一台 Layer 3 Switch 上的 VLAN 間流量,不需要繞到外部 Router 再回來。
例如:
VLAN 20
→ Layer 3 Switch
→ VLAN 60
相較於 Router-on-a-Stick:
VLAN 20
→ Switch
→ Trunk
→ Router
→ Trunk
→ Switch
→ VLAN 60
路徑更直接,也比較適合大量 East-West Traffic。
因此企業園區網路常由 Core 或 Distribution Layer 的 Layer 3 Switch 負責 Inter-VLAN Routing。
Firewall 則可能負責:
但實際架構仍依公司規模、安全需求與設備能力設計。
不是買了一台 Layer 3 Switch,就一定要把所有 Firewall 邊界搬過去。
速度與安全控制需要一起考量。
| 項目 | Router-on-a-Stick | Layer 3 Switch |
|---|---|---|
| Layer 3 介面 | Router Subinterface | SVI |
| VLAN 傳遞 | 需要 Trunk 到 Router | Switch 內部處理 |
| 效能 | 受單一介面與 Router 限制 | 通常較高 |
| 成本 | 可利用現有 Router | 需要支援 L3 的 Switch |
| 擴充性 | 中小型環境 | 中大型企業較合適 |
| 單點 | Trunk/Router Interface | 需另設計設備冗餘 |
| 設定概念 | encapsulation dot1Q |
interface vlan+ip routing |
| 常見用途 | 教學、小型網路、分支 | 園區網路、核心/匯聚層 |
兩者沒有絕對誰比較高級。
重點是根據:
選擇合適架構。
可以。
Firewall 可以建立不同 VLAN Subinterface 或 Layer 3 Interface,並為不同網段提供 Gateway。
例如:
Firewall Port1.20
→ VLAN 20
→ 10.10.20.1
Firewall Port1.60
→ VLAN 60
→ 10.10.60.1
優點是跨 VLAN 流量可以直接受到:
限制則可能包括:
因此,有些公司會讓一般辦公 VLAN 在 Layer 3 Switch 路由,敏感區域則經 Firewall;有些公司則要求所有跨區流量都通過 Firewall。
沒有唯一正確答案。
真正該懷疑的是:架構為什麼這樣設計,有沒有對應業務與安全需求,而不是只看設備名字決定誰負責。
假設 Layer 3 Switch 已有:
10.10.20.0/24
10.10.60.0/24
兩條 Connected Route,兩邊也能 Ping 自己的 Gateway。
但 VLAN 20 仍無法存取 VLAN 60。
這時可能有 ACL 套用在:
因此:
有 Route,只代表設備知道往哪裡送,不代表政策允許它送。
ACL 的完整判斷會放到下一篇。
今天先記住,Routing 和 Permission 是兩個不同問題:
假設 VLAN 20 的 PC 可以把封包送到 VLAN 60 的 Server,但 Server 的 Default Gateway 填錯。
去程:
PC
→ VLAN 20 Gateway
→ VLAN 60
→ Server
成功抵達。
Server 回覆時卻交給錯誤 Gateway:
Server
→ 錯誤 Gateway
→ 封包消失
Client 最後仍然收不到回覆。
可能症狀:
因此排錯時要確認:
只追去程,通常只能找到一半的真相。
/23 網段的常見誤判企業網路不一定都使用 /24。
例如:
255.255.254.0
就是 /23。
第三個 Octet 的區塊大小為:
256 - 254 = 2
因此網段邊界會以 2 遞增:
10.10.144.0/23
涵蓋 10.10.144.0 ~ 10.10.145.255
10.10.146.0/23
涵蓋 10.10.146.0 ~ 10.10.147.255
假設:
Printer:10.10.145.50/23
Wi-Fi Client:10.10.146.60/23
雖然第三個 Octet 只差 1,但它們不在同一個 /23:
10.10.144.0/23
10.10.146.0/23
兩者需要經過 Layer 3 Routing。
如果只看 IP 很接近,就說「應該同網段」,很容易查錯方向。
Subnet 是否相同,不能憑肉眼感覺親不親近,要用 Mask 計算。
假設環境經過泛化後如下:
有線 Client:
10.10.145.20/23
Gateway:10.10.144.1
Printer:
10.10.145.50/23
Gateway:10.10.144.1
兩者位於:
10.10.144.0/23
所以有線 Client 可以直接透過 Layer 2 與 Printer 通訊。
Wi-Fi Client 則取得:
10.10.146.60/23
Gateway:10.10.146.1
它位於:
10.10.146.0/23
要存取印表機,必須經過:
Wi-Fi Client
→ 10.10.146.1
→ Inter-VLAN Routing/Firewall
→ 10.10.144.0/23
→ Printer
如果有線可以印、Wi-Fi 不行,可能原因包括:
這時不應先重裝印表機 Driver。
因為兩種 Client 最大的差異,是它們所在的網段與路徑。
遇到跨 VLAN 不通時,可以依序拆解。
檢查:
先確認兩端真的位於不同 Subnet。
Client 測:
ping 10.10.20.1
Printer/Server 端測:
ping 10.10.60.1
如果連自己的 Gateway 都不通,先查:
不要急著往跨 VLAN Routing 查。
Router-on-a-Stick 檢查:
encapsulation dot1Q
Layer 3 Switch 檢查:
ip routing
Cisco:
show ip route
確認兩個網段是否存在。
若為 Connected,應看到類似:
C 10.10.20.0/24 is directly connected, Vlan20
C 10.10.60.0/24 is directly connected, Vlan60
如果其中一個網段不存在,就先查介面與 SVI 狀態。
檢查:
可以從 Gateway 設備測試兩端。
例如使用來源 SVI Ping:
ping 10.10.60.50 source 10.10.20.1
實際語法依設備而異。
這能協助判斷:
確認:
Ping 被擋不代表列印一定不行,Ping 成功也不代表 TCP 9100 或 SMB 可以使用。
要測實際服務。
檢查:
很多跨 VLAN 問題最後不在 Router,而是 Server 沒有正確 Gateway。
確認:
不要因為 Ping 變綠,就忘記真正需求可能是列印、SSH、RDP 或 HTTPS。
例如:
VLAN 20:10.10.20.0/24
VLAN 30:10.10.20.0/24
如果兩個 VLAN 沒有 Layer 2 延伸,它們彼此的 ARP 無法直接傳遞,普通 Routing 也無法合理區分相同 Prefix 應該去哪裡。
除非有特殊設計,否則一個 Subnet 不應隨意拆散到互不相通的 VLAN。
VLAN 建立只是 Layer 2 分段。
沒有 SVI、Router Subinterface 或 Firewall Interface,就沒有 Layer 3 Gateway。
每個 VLAN 都能 Ping 自己的 SVI,但 VLAN 間仍然不通。
需要確認設備支援並啟用 Layer 3 Routing。
Router 不知道 Tagged Frame 應交給哪個 Subinterface。
Router-on-a-Stick 需要多個 VLAN 經同一介面傳送。
若 Switch Port 是 Access,通常只會有一個 VLAN 能正常運作。
去程抵達,回覆卻不知道怎麼離開目的 Subnet。
短期看似修好,長期卻破壞安全邊界。
應只允許業務需要的來源、目的與服務。
VLAN 將一個 Layer 2 網路切成不同 Broadcast Domain。
不同 VLAN 要互通,需要透過 Layer 3 Routing。
常見方法包括:
Router-on-a-Stick 使用:
Subinterface
+ encapsulation dot1Q
+ Switch Trunk
Layer 3 Switch 則使用:
SVI
+ ip routing
排錯時,要同時確認:
有 Route,代表設備知道路怎麼走;能不能走,還要看安全政策。
我覺得這主題每篇文章都挑的不錯,中斷就太可惜了。
我有看到其他人中斷,都重新開一樣主題重寫。
你可以在挑戰看看試試看🙂