網絡小故事 5 · 進階

一屋分兩區VLAN(虛擬區域網絡)

訪客用的 Wi-Fi,為什麼看不到家中的電腦?

主角:八爪、阿麥、小比閱讀時間約 10 分鐘

建議先讀:小故事 1「Switch 入門」、小故事 3「ARP」

1. 故事

按「下一步」一步一步看。每一步都有一位角色出場,解釋自己正在做什麼。

序幕:溫習一下

第 1 步/共 11 步

一個 LAN,一個 Broadcast Domain

接在我身上的裝置都在同一個 LAN(區域網絡)。收到 Broadcast(廣播),我會送到所有其他 Port(連接埠),這個範圍叫 Broadcast Domain(廣播域)。

動畫文字版(全部步驟)
  1. 序幕:溫習一下
  2. 一個 LAN,一個 Broadcast Domain 八爪:接在我身上的裝置都在同一個 LAN(區域網絡)。收到 Broadcast(廣播),我會送到所有其他 Port(連接埠),這個範圍叫 Broadcast Domain(廣播域)。
  3. 第一幕:客人來了
  4. 兩位客人接上網線 阿麥:兩位客人來探我,把手提電腦接到八爪的 P5 和 P6 上網。歡迎歡迎!不過……他們現在和我們在同一個 LAN 裡了。
  5. 客人的 Broadcast 人人收到 小比:客人電腦 1 發出一個 ARP(位址解析協定)Broadcast。八爪照規矩送到所有 Port,阿麥、桌面電腦和電視全部都收到了!
  6. 這樣安全嗎? 阿麥:客人的電腦可以看到家中每一部裝置,甚至可以嘗試打開我的共享資料夾。萬一它中了病毒,也可以直接找上我們。可以把客人分開嗎?
    • 問題一:私隱——大家都看得到對方
    • 問題二:安全——病毒可以直接找上家中裝置
    • 問題三:效率——Broadcast 越多,大家越忙
  7. 第二幕:VLAN 出場
  8. 八爪放下屏風 八爪:不用另外買 Switch!我把自己的 Port 分組:P1 至 P3 是家人區 VLAN 10,P5 和 P6 是客人區 VLAN 20。這叫 VLAN(虛擬區域網絡),每一區就是一個獨立的 LAN。
    • V10 = VLAN 10(家人區);V20 = VLAN 20(客人區)
    • 接一般裝置、只屬於一個 VLAN 的 Port,叫 Access Port(存取連接埠)
    • 電腦本身不知道自己在哪個 VLAN,全由八爪按 Port 決定
  9. Broadcast 只留在自己一區 小比:客人電腦 1 再發出 Broadcast。這次八爪只把我送到同樣是 VLAN 20 的 P6,家人區完全收不到!
  10. 家人區也一樣 小比:阿麥發出 Broadcast,我只會去到桌面電腦和電視。現在一部 Switch 裡,有兩個互不相干的 Broadcast Domain。
  11. 跨區?此路不通 八爪:客人電腦 1 想直接送 Frame(訊框)給阿麥。可是阿麥在 VLAN 10,我在 VLAN 20 的筆記簿裡找不到他,也不會把 Frame 送過去。
    • 不同 VLAN = 不同的 LAN
    • 找不到收件人時,最多只在 VLAN 20 內 Flooding(例如送到 P6),阿麥永遠收不到
    • 要跨區溝通,就要經 Router(路由器),而且可以設定規則(小故事 10)
  12. 筆記簿多了一欄 八爪:有了 VLAN,我的 MAC Address Table(MAC 位址表)多了一欄「VLAN」。送貨時,我只會在同一個 VLAN 的記錄裡找收件人。阿麥寄給電視?收到!馬上送到正確的連接埠!
    • VLAN 10:…:01 → P1、…:04 → P2、…:02 → P3
    • VLAN 20:…:05 → P5、…:06 → P6
  13. 一個 VLAN,一個 Subnet 阿麥:每一區通常也會用自己的一組 IP Address(網絡位址):家人區是 192.168.1.0/24,客人區是 192.168.20.0/24。一個 VLAN,就是一個網絡。
    • 家人區 VLAN 10:192.168.1.0/24(阿麥 192.168.1.10)
    • 客人區 VLAN 20:192.168.20.0/24(客人電腦 1 192.168.20.10)
  14. 總結:一屋分兩區 八爪:只用一部 Switch、不用重新接線,我就把家分成兩區。可是樓上也有一部 Switch,同樣有家人和客人的裝置,兩部 Switch 之間要拉多少條線呢?下一個故事揭曉!
    • VLAN:把一部 Switch 的 Port 分成幾個獨立的 LAN
    • Broadcast 和 Frame 只在同一個 VLAN 內傳送
    • 跨 VLAN 要經 Router

2. 問題在哪裡

接在同一部 Switch(交換器)上的裝置,全部在同一個 LAN(區域網絡),也就是同一個 Broadcast Domain(廣播域):一個 Broadcast(廣播)Frame(訊框)可以去到的範圍。

當客人把電腦接到八爪身上,就會出現三個問題:

問題 發生了什麼事
私隱 客人的 ARP(位址解析協定)Broadcast 去到家中每一部裝置,大家都看得到對方
安全 客人的電腦可以嘗試打開阿麥的共享資料夾;萬一它中了病毒,也可以直接找上家中裝置
效率 裝置越多,Broadcast 越多,每部裝置都要花時間處理

最直接的方法,是另外買一部 Switch 給客人用,再拉一套新的網線。但這樣又貴又麻煩,而且每次想改分組,都要重新接線。

3. 網絡怎樣解決

好像在大廳放一道屏風,把一間屋分成家人區和客人區。屋還是同一間,但兩區的人互相看不見、聽不到。

VLAN(虛擬區域網絡)就是把一部 Switch 的 Port(連接埠)分組,每一組變成一個獨立的 LAN。Broadcast 和 Frame 只會在同一個 VLAN 內傳送。

不用買新 Switch,也不用重新接線,改一改設定就可以。

4. 看深一點

八爪的 Port 分組

每個 VLAN 用一個號碼識別,叫 VLAN ID(VLAN 編號)。故事中八爪的設定是這樣:

Port 接著 VLAN
P1 阿麥 10(家人區)
P2 桌面電腦 10(家人區)
P3 電視 10(家人區)
P4 Access Point(家人手機) 10(家人區)
P5 客人電腦 1 20(客人區)
P6 客人電腦 2 20(客人區)

像這樣接一般裝置、只屬於一個 VLAN 的 Port,叫 Access Port(存取連接埠)。

留意:電腦本身完全不知道自己在哪個 VLAN。它送出的是普通的 Frame,由八爪按「Frame 從哪個 Port 進來」決定它屬於哪個 VLAN。

VLAN ID 是一個 12 位元的數字,可用範圍是 1 至 4094。很多 Switch 出廠時,所有 Port 都預設在 VLAN 1。

設定大約是這樣

不同品牌的寫法不同,以下是一個常見的寫法,把 P5 設為 VLAN 20 的 Access Port:

vlan 20
 name guest
interface P5
 switchport mode access
 switchport access vlan 20

(真實設備上的介面名稱會是 GigabitEthernet0/5 之類,這裡用 P5 方便對照。)

筆記簿多了一欄

有了 VLAN,八爪的 MAC Address Table(MAC 位址表)多了一欄「VLAN」:

VLAN MAC Address Port 裝置
10 00:00:5E:00:53:01 P1 阿麥
10 00:00:5E:00:53:04 P2 桌面電腦
10 00:00:5E:00:53:02 P3 電視
20 00:00:5E:00:53:05 P5 客人電腦 1
20 00:00:5E:00:53:06 P6 客人電腦 2

八爪的規則都一樣:Learning(學習)、Flooding(泛洪)、Forwarding(轉發)。唯一分別是,所有動作都只在同一個 VLAN 內進行:

  • Flooding:只送到同一個 VLAN 的其他 Port。
  • Forwarding:只在同一個 VLAN 的記錄裡找收件人。客人電腦 1(VLAN 20)送 Frame 給阿麥,八爪在 VLAN 20 的記錄裡找不到阿麥,最多只會在 VLAN 20 內 Flooding,永遠不會送到 VLAN 10 的 Port。

一個 VLAN,一個 Subnet(子網絡)

每個 VLAN 是一個獨立的 LAN,通常也會用自己的一組 IP Address(網絡位址):

VLAN 名稱 Subnet(子網絡) 例子
10 家人區 192.168.1.0/24 阿麥 192.168.1.10
20 客人區 192.168.20.0/24 客人電腦 1 192.168.20.10、客人電腦 2 192.168.20.11

VLAN 在 Layer 2(第二層)把 LAN 分開,Subnet 在 Layer 3(第三層)把 IP Address 分開。兩者是不同的東西,但一般會一對一配合使用。

跨 VLAN 要經 Router

不同 VLAN 就是不同的網絡。要互相溝通,就要經 Router(路由器)或 Layer 3 Switch(第三層交換器)轉送,這叫 Inter-VLAN Routing(VLAN 間路由),小故事 10 會詳細講。

好處是:Router 可以設定規則,例如「客人區可以上網,但不可以連接家人區」。

回到訪客 Wi-Fi(無線網絡)

很多 Access Point(無線基地台)可以發出幾個 SSID(無線網絡名稱),並把每個 SSID 對應到一個 VLAN,例如「阿麥的家」→ VLAN 10,「阿麥的家-訪客」→ VLAN 20。

連接訪客 Wi-Fi 的手機,就好像接在客人區的 Port 上:可以上網,卻看不到家中的電腦。家用路由器的「訪客網絡」功能,也是用類似的隔離方法。

5. 動手試試

任務:找找「訪客網絡」

  1. 看看家中 Wi-Fi 路由器底部的標籤,找出管理頁面的位址(通常是 192.168.1.1 之類)和登入方法。
  2. 登入後,找一找「訪客網絡」或「Guest Network」的選項(名稱視乎品牌而定)。
  3. 看看有沒有「允許訪客存取區域網絡」之類的設定。想一想:關掉它,客人還可以打開你的共享資料夾嗎?

如果路由器不是你負責管理的,請先問問家人,不要隨便更改設定。

小互動

八爪會把 Frame 送到哪裡?

八爪把 P1 至 P3 設為 VLAN 10,P5 和 P6 設為 VLAN 20。以下每一個情況,Frame 會去到哪裡?

  1. 1阿麥(P1)發出 Broadcast

  2. 2客人電腦 1(P5)發出 Broadcast

  3. 3阿麥(P1)送 Frame 給電視(P3)

  4. 4客人電腦 1(P5)直接送 Frame 給阿麥(P1)

  5. 5客人電腦 2(P6)送 Frame 給客人電腦 1(P5)

  6. 6阿麥(P1)直接送 Frame 給客人電腦 2(P6)

6. 比喻的極限

  • 屏風不是真的東西。 VLAN 只是八爪記憶裡的分組設定,Port 和網線完全沒有改變;所以叫「虛擬」區域網絡。
  • 屏風不是萬能的保安。 VLAN 設定錯了(例如把客人的 Port 放錯 VLAN),隔離就會失效。重要的網絡還需要 Firewall(防火牆)等其他保護。
  • 兩區不是完全不能溝通。 經 Router 就可以跨 VLAN 溝通,而且是否放行由規則決定;屏風只是擋住了「直接」的 Frame。
  • 一部 Switch 可以分很多區。 故事只分兩區,現實中一部 Switch 可以有數十甚至數百個 VLAN。
  • 八爪不是唯一可以設定 VLAN 的設備。 VLAN 可以跨越幾部 Switch,Access Point 和 Router 也懂得 VLAN;它們之間怎樣分辨每個 Frame 屬於哪個 VLAN,下一個故事會講。

7. 小測驗

第 1 題,共 3 題VLAN 最主要的作用是什麼?
第 2 題,共 3 題阿麥(VLAN 10)發出一個 Broadcast,哪些裝置會收到?
第 3 題,共 3 題客人電腦(VLAN 20)想連接阿麥的電腦(VLAN 10),需要什麼?

8. 重點筆記

  • VLAN(虛擬區域網絡)把一部 Switch 的 Port 分成幾組,每一組是一個獨立的 LAN,也就是一個獨立的 Broadcast Domain。
  • 接一般裝置、只屬於一個 VLAN 的 Port 叫 Access Port(存取連接埠);裝置本身不知道自己在哪個 VLAN。
  • Switch 的 Learning、Flooding、Forwarding 全部只在同一個 VLAN 內進行。
  • 一個 VLAN 通常對應一個 Subnet;跨 VLAN 要經 Router,並可以設定規則。
  • 訪客 Wi-Fi 看不到家中的電腦,就是因為它被放在另一個 VLAN(或類似的隔離網絡)。

延伸閱讀

八爪只改設定,就把一間屋分成家人區和客人區。可是樓上還有一部 Switch,同樣有家人和客人的裝置。兩部 Switch 之間,要為每個 VLAN 各拉一條線嗎?下一個故事,我們會看看怎樣用一條線載多區:Trunk(中繼)與 802.1Q 標籤。