1. 故事
按「下一步」一步一步看。每一步都有一位角色出場,解釋自己正在做什麼。
序幕:溫習一下
第 1 步/共 12 步
大門上的洞
上次,我用 Port Forwarding(連接埠轉發)把 203.0.113.1:8080 轉交給相片伺服器。阿麥由咖啡店可以連回家,可是陌生人也可以來敲這道門!
動畫文字版(全部步驟)
- 序幕:溫習一下
- 大門上的洞 路路:上次,我用 Port Forwarding(連接埠轉發)把
203.0.113.1:8080轉交給相片伺服器。阿麥由咖啡店可以連回家,可是陌生人也可以來敲這道門! - 第一幕:更安全的方法
- 關上大門的洞 盾盾:我是盾盾,家中的 Firewall(防火牆)。名單上沒有你,不能進去!我們先刪除 Port Forwarding 規則,
8080不再對外開放。可是這樣,阿麥在咖啡店也用不到相片伺服器了。 - 公共 Wi-Fi 也不可信 小比:而且咖啡店的 Wi-Fi 裡還有偷聽者。家中有些裝置和舊程式根本沒有 HTTPS 加密,走在公共網絡上,內容一覽無遺。
- 第二幕:挖一條秘密隧道
- 只開一道小門 盾盾:路路開啟 VPN(虛擬私人網絡) 伺服器,我只為它開一道小門:UDP Port
51820。而且只有持有正確鎖匙的裝置,才可以通過。- Port
51820是 VPN 軟件 WireGuard 常用的預設 Port - 其他常見 VPN 技術:IPsec、OpenVPN
- Port
- 互相驗證身份 路路:阿麥電腦上的 VPN Client(VPN 用戶端) 和我握手:大家出示預先設定好的鎖匙,確認對方身份,再協商出這次連線用的加密鎖匙。
- 隧道建立了 路路:一條 Tunnel(隧道) 在咖啡店和家之間建立了!阿麥的電腦還用上一個預先設定好的 VPN 專用位址
192.168.50.2,好像家中網絡多了一位成員。- VPN 網絡:阿麥
192.168.50.2、家中路路192.168.50.1
- VPN 網絡:阿麥
- 小比坐進運送箱 小比:我原本寫著「由
192.168.50.2寄192.168.1.12:8080」。VPN 把我加密,再放進一個外層運送箱:「寄203.0.113.1,UDP51820」。沿途的 Router 只看外層找路。- 內層(加密):
192.168.50.2→192.168.1.12:8080 - 外層(不加密):
192.168.0.23→203.0.113.1:51820 - 外層經咖啡店 NAT 後,寄件人變成
198.51.100.1
- 內層(加密):
- 偷聽者只見到鎖著的箱 小比:偷聽者收到的,只是一堆寄往
203.0.113.1的加密資料。他不知道我要去家中哪部裝置,更看不到相片。 - 路路開箱、送進家中 路路:我收到運送箱,拆開外層、解密,取出原本的小比:寄
192.168.1.12:8080。我把他送到相片伺服器,回覆再經隧道送回咖啡店。阿麥好像坐在家中一樣! - 第三幕:隧道的不同用法
- 全部走隧道? 路路:阿麥可以選擇 Full Tunnel(全隧道):連去
example.com的資料也先經隧道回家,再由家中出去,在公共 Wi-Fi 上最安全;或者 Split Tunnel(分割隧道):只有去家中的資料才走隧道。 - 付費 VPN 服務 盾盾:市面上的 VPN 服務,就是把隧道的另一端放在服務商那裡。咖啡店和 ISP 看不到你的內容;但服務商看得到你連去哪些網站,沒有 HTTPS 的內容也看得到。你只是換了一個信任對象,並不是完全匿名。
- Remote-access VPN(遠端存取 VPN):一部裝置連回一個網絡
- Site-to-site VPN(站點對站點 VPN):兩個網絡的 Router 長期連接
- 總結:秘密隧道 小比:VPN 把我加密、放進寄往家中的外層運送箱。沿途只看到鎖著的箱;到了家,路路開箱,我就好像本來就在家裡一樣。大門只需開一道只認鎖匙的小門!
2. 問題在哪裡
在小故事 14,路路用 Port Forwarding(連接埠轉發)把 203.0.113.1:8080 轉交給家中桌面電腦的相片伺服器 192.168.1.12:8080。阿麥在咖啡店終於看到相片了,但留下兩個問題:
- 大門上開了一個洞。 全世界都可以來敲
8080。陌生人192.0.2.66也可以不停嘗試猜密碼,或者利用軟件的漏洞入侵。(留意:192 開頭不一定是 Private,只有 192.168 開頭才是。192.0.2.66是互聯網上的公共位址。) - 路上沒有保護。 家中有些裝置和舊程式沒有 HTTPS(加密網頁傳輸協定)。走在咖啡店的公共 Wi-Fi(無線網絡)上,內容一覽無遺。
把 Port Forwarding 刪掉,洞是補好了,可是阿麥在外面就再也用不到家中的服務。
3. 網絡怎樣解決
在咖啡店和家之間,挖一條只有自己人才能進入的秘密隧道。
這就是 VPN(虛擬私人網絡):一種在公共互聯網上,建立一條加密通道,把遠方裝置接回某個私人網絡的技術。小比被加密後,坐進一個寫著「寄家中路路」的運送箱;沿途的人只看到鎖著的箱子,到了家才由路路開箱。
家中大門只需開一道小門:守門的盾盾,即家中 Router(路由器)內置的 Firewall(防火牆),只為 VPN 開放 UDP(用戶資料包協定)Port(連接埠)51820,而且只讓持有正確鎖匙的裝置通過。
4. 看深一點
三個角色
| 角色 | 在哪裡 | 做什麼 |
|---|---|---|
| VPN Client(VPN 用戶端) | 阿麥的電腦 | 把小比加密、放進運送箱 |
| VPN Server(VPN 伺服器) | 家中路路,203.0.113.1 UDP 51820 |
開箱、解密,再送進家中網絡 |
| Tunnel(隧道) | 兩者之間 | 經公共互聯網、全程加密的通道 |
故事中的 Port 51820,是 VPN 軟件 WireGuard 常用的預設 Port,用 UDP 傳送。其他常見的 VPN 技術還有 IPsec 和 OpenVPN,原理大同小異。
握手:先驗明身份
連線前,VPN Client 和 VPN Server 會先握手:大家出示預先設定好的鎖匙,確認對方是自己人,再協商出這次連線用的加密鎖匙。這和小故事 17 的 TLS(傳輸層安全)握手很相似。
沒有正確鎖匙的人,例如陌生人 192.0.2.66,連握手都過不了。
隧道裡的包裝:一個封包包住另一個封包
隧道建立後,阿麥的電腦用一個預先設定好的 VPN 專用位址 192.168.50.2;家中路路在 VPN 網絡裡是 192.168.50.1。阿麥好像成了家中網絡的一位成員。
小比出發時,其實有兩層:
外層(不加密,讓沿途 Router 找路)
寄件人:192.168.0.23 → 經咖啡店 NAT 後變成 198.51.100.1
收件人:203.0.113.1 UDP 51820
┌─────────────────────────────────────────┐
│ 內層(整個加密) │
│ 寄件人:192.168.50.2 │
│ 收件人:192.168.1.12 TCP 8080 │
│ 內容:相片 │
└─────────────────────────────────────────┘
這就是 Encapsulation(封裝)的另一種用法:把一整個封包,當作另一個封包的 Payload(資料內容)。
沿途的 Router 只看外層,把箱子送到 203.0.113.1。咖啡店的 NAT(網絡位址轉換)也只改外層的寄件人。路路收到後拆走外層、解密,取出原本的小比,再按內層的地址送到 192.168.1.12 TCP(傳輸控制協定)Port 8080。回覆沿同一條隧道送回咖啡店。
Full Tunnel 還是 Split Tunnel?
| Full Tunnel(全隧道) | Split Tunnel(分割隧道) | |
|---|---|---|
| 哪些資料走隧道 | 全部,包括去 example.com 的 |
只有去家中網絡的 |
去 example.com 的路線 |
先回家,再由家中出去互聯網 | 直接經咖啡店出去 |
| 優點 | 在公共 Wi-Fi 上最安全 | 較快,不佔用家中頻寬 |
| 缺點 | 繞遠路,較慢 | 其他資料仍在公共 Wi-Fi 上走 |
兩種常見用法
- Remote-access VPN(遠端存取 VPN):一部裝置連回一個網絡,例如阿麥在咖啡店連回家,或員工在家連回公司。
- Site-to-site VPN(站點對站點 VPN):兩個網絡的 Router 長期連接,例如總公司和分店,員工完全不用開任何軟件。
市面上的付費 VPN 服務,就是把隧道的另一端放在服務商那裡。咖啡店和 ISP(互聯網服務供應商)看不到你的內容;但服務商看得到你連去哪些網站,沒有 HTTPS 的內容也看得到。
5. 動手試試
任務:找找你的 VPN 設定
- 在手機的「設定」裡搜尋「VPN」。
- 看看有沒有已安裝的 VPN 設定,或者公司、學校要求安裝的 VPN 程式。
- 如果有,留意它是不是 Full Tunnel:連上後打開任何網站,網站看到的 Public IP(公共位址)會變成 VPN 另一端的位址。
- 想一想:你信任這個 VPN 的另一端嗎?
小互動
外層還是內層?
以下每一項資料,是寫在外層運送箱,還是寫在加密的內層?
-
1收件人 192.168.1.12
-
2收件人 203.0.113.1
-
3UDP Port 51820
-
4Port 8080
-
5寄件人 192.168.50.2
-
6經咖啡店 NAT 後的寄件人 198.51.100.1
全部分對了!外層寫著寄往 VPN 伺服器的公共地址;內層加密,寫著家中網絡裡的真正地址。
6. 比喻的極限
- 隧道不是一條真的專線。 外層封包仍然和其他人的封包一起,在公共互聯網上一站一站被轉送;「隧道」只是說它們被加密包好,別人看不到裡面。
- 偷聽者仍然看得到運送箱。 他知道阿麥正在連接
203.0.113.1,也看得到資料量和時間,只是看不到內容和真正的目的地。 - VPN 不是隱身斗篷。 付費 VPN 服務商處於可以看到你流量的位置;你只是換了一個信任對象,並不是完全匿名。
- 進了隧道,也不代表絕對安全。 VPN 不會令電腦不中病毒;家中的相片伺服器仍然要用強密碼,並保持軟件更新。
- 多包一層要付出代價。 外層標頭會佔用空間,繞路也需要時間,所以用 VPN 上網通常會慢一點。
7. 小測驗
8. 重點筆記
- VPN(虛擬私人網絡)在公共互聯網上建立一條加密的 Tunnel(隧道),讓遠方裝置好像接在家中或公司的網絡裡。
- 隧道裡的封包有兩層:外層寫著 VPN Server 的公共地址(例如
203.0.113.1UDP51820),內層加密,寫著真正的目的地(例如192.168.1.12:8080)。 - 和 Port Forwarding 相比,VPN 只開一道小門,只讓持有正確鎖匙的裝置進入。
- Full Tunnel 讓所有資料都走隧道;Split Tunnel 只讓去家中網絡的資料走隧道。
- VPN 不等於匿名:隧道另一端的人看得到你的流量。
延伸閱讀
VPN 讓阿麥由咖啡店安全回家,靠的是盾盾只為 UDP 51820 開一道小門。可是盾盾怎樣知道哪個封包可以進門、哪個要攔下?下一個故事,盾盾會打開他的名單,介紹 Firewall(防火牆)與 ACL(存取控制清單)。