|
|
伺服器架好之後,真正每天在用的是手機和筆電這一端。這篇處理用戶端唯一真正的難點:那一行 AllowedIPs 到底該填什麼,以及怎麼讓它自己連、不用每次手動開。
每一步都寫了你會看到什麼。照著做完一個平台,那個平台就可以收工。
做完這篇你會有什麼
- 一行算得出來、而且知道為什麼這樣寫的 `AllowedIPs`
- iPhone:離開家裡的 Wi-Fi 自動連上,回到家自動斷開
- Android:VPN 掉線時完全不放行流量(系統層的斷線保護)
- Windows:開機就在背景連著,不用登入桌面
- Linux:開機自動起,而且知道怎麼讓它不要亂改路由表
這篇的前提:你手上已經有一份 `.conf` 檔或一張 QR code。還沒有的話那是伺服器端的事,這篇不需要它就能讀懂,但要真的連上得先有。
---
步驟 1:把手上的設定檔攤開,確認六行都在
不管是誰給你的、是 QR code 還是檔案,內容一定長這樣:
- [Interface]
- PrivateKey = 6JkP2mNqRsTuVwXyZa1BcDeFgHiJkLmNoPqRsTuVwXy=
- Address = 10.20.30.2/32
- DNS = 192.168.88.1
- [Peer]
- PublicKey = xTIBA8dJ+YbXQ9r2vKcN0mFe7sLpQwZ3hYuGaVcRtE4=
- AllowedIPs = 192.168.88.0/24, 10.20.30.0/24
- Endpoint = 114.32.80.149:51820
- PersistentKeepalive = 25
複製代碼
六行各自在決定什麼
- `PrivateKey` —— 這台裝置的身分。一台裝置一份,不要兩台共用。兩台同時連的時候伺服器只記得「這個身分現在在哪個位址」,後連上的會把前一台的位置覆寫掉,表現是兩台輪流斷線,看起來像網路不穩
- `Address` —— 你在隧道裡的 IP。要用 `/32`。寫成 `/24` 的話你這台會以為整個隧道網段都由自己直連,連伺服器都找不到
- `DNS` —— 連上之後查名字用誰。填家裡路由器或 Pi-hole 的內網 IP,`nas.local` 這種名字才查得到。這一行在 Android 上常常不生效,步驟 5 會處理
- `PublicKey` —— 伺服器的公鑰。這是伺服器的,不是你的。貼成自己的公鑰是最常見的錯誤,症狀是交握永遠不成立
- `Endpoint` —— 伺服器在外面的位址和埠。這裡如果是 192.168.x.x,這份設定只有在家裡才連得上,等於沒用
- `PersistentKeepalive` —— 每 N 秒送一個小封包。手機和筆電幾乎都在 NAT 後面,沒有這一行的話掛著十分鐘沒動就會斷,而且不會自己回來。填 25
看不到 `PersistentKeepalive` 就自己在 `[Peer]` 底下補一行 `PersistentKeepalive = 25`。伺服器端沒填的話用戶端這邊補就有效,這一行是各送各的。
---
步驟 2:決定要不要讓上網流量也走 VPN
這個決定只影響一行,但影響最大。

`AllowedIPs` 的意思不是「允許誰連我」
它是「哪些目的地的流量要塞進這條隧道」。WireGuard 沒有另外的路由設定,就靠這一行同時當路由表跟存取清單用。
三種模式,挑一種
- 分流 —— 只有連家裡的東西走 VPN,其他照常。九成的日常使用是這個
- 全流量 —— 所有流量都繞回家再出去。在飯店、機場、咖啡店的 Wi-Fi 上用
- 全流量但排除區網 —— 所有流量走 VPN,但你人在的那個地方的區網不走。這是實際上最常需要、也最少人知道怎麼寫的一種
全流量的代價要先知道:你手機的上傳速度會變成你家的上傳速度。台灣常見的 300M/100M,那個 100M 就是天花板,而且多了一段往返延遲。看影片、傳大檔會有感。
第三種模式解決的是什麼問題:你開了全流量,人在辦公室,然後發現辦公室的印表機、同事分享的資料夾全部連不到 —— 因為 `0.0.0.0/0` 把「連辦公室區網」的流量也塞進隧道,送回你家去了,你家當然找不到那台印表機。
---
步驟 3:把 `AllowedIPs` 那一行算出來
3-1 分流(最常用)
- AllowedIPs = 192.168.88.0/24, 10.20.30.0/24
複製代碼
兩段:家裡的內網網段、隧道網段。
隧道網段那一段不要漏。漏了的話你連得到家裡的 NAS,卻 ping 不到 VPN 伺服器本身,除錯的時候會很困惑。
家裡的網段怎麼知道?在家裡任何一台電腦上:
- # Windows
- ipconfig
- # macOS / Linux
- ip -4 addr show
- # macOS(舊指令也可以)
- ifconfig | grep "inet "
複製代碼
你會看到一個像 `192.168.88.35` 的位址加上遮罩 `255.255.255.0`。那就是 `192.168.88.0/24`。遮罩是 `255.255.0.0` 的話是 `/16`,`255.255.255.128` 是 `/25`。
3-2 全流量
- AllowedIPs = 0.0.0.0/0, ::/0
複製代碼
`::/0` 那一半只涵蓋 IPv6。只寫 `::/0` 不寫 `0.0.0.0/0` 的話,IPv4 的流量一條都不會走 VPN —— 症狀是交握成功、時間一直在更新,但什麼都連不到。有些伺服器端的匯出功能預設就只給 `::/0`,看到的時候自己補上 IPv4 那一半。
3-3 全流量但排除區網
這一段是把 `0.0.0.0/0` 扣掉三段私有網段之後剩下的東西。沒有一個簡寫可以表達「扣掉」,所以只能把剩下的列出來:
- AllowedIPs = 0.0.0.0/5, 8.0.0.0/7, 11.0.0.0/8, 12.0.0.0/6, 16.0.0.0/4, 32.0.0.0/3, 64.0.0.0/2, 128.0.0.0/3, 160.0.0.0/5, 168.0.0.0/6, 172.0.0.0/12, 172.32.0.0/11, 172.64.0.0/10, 172.128.0.0/9, 173.0.0.0/8, 174.0.0.0/7, 176.0.0.0/4, 192.0.0.0/9, 192.128.0.0/11, 192.160.0.0/13, 192.169.0.0/16, 192.170.0.0/15, 192.172.0.0/14, 192.176.0.0/12, 192.192.0.0/10, 193.0.0.0/8, 194.0.0.0/7, 196.0.0.0/6, 200.0.0.0/5, 208.0.0.0/4, 10.20.30.0/24, 192.168.88.0/24
複製代碼
看起來嚇人,但它只是一個算術結果。怎麼確認這一串是對的:
- 前面那三十段裡沒有 `10.`、`172.16` 到 `172.31`、`192.168` 開頭的東西 —— 那三段就是被扣掉的私有網段
- 最後兩段是你刻意加回來的:隧道網段,和你家的內網。不加回來的話你連了 VPN 卻連不到自己家
- `224.0.0.0` 以上(多播與保留位址)故意不在裡面。那些本來就不該送進隧道
你家的內網如果就是 192.168.88.0/24,而你現在人在的地方也是 192.168.88.0/24 —— 這是無解的衝突,兩邊位址一模一樣,作業系統分不出來。所以家裡的網段不要用 192.168.0.x 或 192.168.1.x,那兩個是全世界路由器的出廠預設,你在外面一定會撞到。
---
步驟 4:iPhone / iPad

4-1 安裝與匯入
- App Store 搜尋 WireGuard,發行者是 WireGuard Development Team。有一堆同名的第三方 App,認發行者
- 打開 → 右上角 + → 從 QR code 建立(有檔案的話選「從檔案或封存檔匯入」)
- 取個名字,例如 `home`
你會看到清單裡出現一筆,右邊有一個開關。
⚠ 第一次一定會跳一個視窗:「WireGuard 想要加入 VPN 設定」。要按「允許」。
不小心按了不允許的話,之後撥那個開關會完全沒反應,也不會有任何錯誤訊息 —— 開關撥過去又自己彈回來。修法是把這個通道整個刪掉重新匯入,它會再問一次。
4-2 讓它自己連(這才是重點)
iOS 的官方 App 有一個 Android 沒有的功能叫依需求啟用(On-Demand Activation):由系統判斷網路環境,自動開關 VPN。
|
|