找回密碼
 立即註冊
    查看: 200|回覆: 0

    【WireGuard 用戶端】AllowedIPs 到底在做什麼:全流量與分流的算法,以及連不上的六層排查

    [複製鏈接]

    !lvup!   100%

    386

    主題

    27

    回帖

    2200萬

    積分

    管理員

    積分
    22006063
    發表於 2026-9-25 01:22:41 | 顯示全部樓層 |閱讀模式
    伺服器架好了,設定檔也拿到了,但手機連上去之後家裡的東西還是打不開。這篇處理的就是這一段。

    這篇不教你怎麼架伺服器(本系列另外有專門講那件事的篇章)。這篇假設你手上已經有一份用戶端設定檔 —— 不管它是 wg-easy 產生的、是別人給你的、還是你自己寫的 —— 然後處理接下來的每一件事:


    • 那六個欄位各自在做什麼,尤其是最容易被誤解的 `AllowedIPs`
    • 全流量和分流怎麼選,而且 `AllowedIPs` 要怎麼算
    • iPhone、Android、Windows 各自有什麼、沒有什麼
    • 連不上的時候,六層一層一層往下查


    全篇會用同一組設定當例子,你只要把數字換成你自己的:
    1. 家裡的區網        192.168.1.0/24
    2. 家裡的路由器      192.168.1.1
    3. Home Assistant    192.168.1.10
    4. 家裡的 DNS        192.168.1.10(跑 AdGuard Home 或 Pi-hole)
    5. VPN 的隧道網段    10.8.0.0/24
    6.   伺服器          10.8.0.1
    7.   你的手機        10.8.0.2
    8.   你的筆電        10.8.0.3
    9. 對外               home.example.com:51820(UDP)
    複製代碼

    ---

    步驟 1:看懂設定檔的六個欄位

    WireGuard 的用戶端設定就是一個純文字檔,副檔名 `.conf`。長這樣:
    1. [Interface]
    2. PrivateKey = KG5xL2...(你的私鑰,42 個字元結尾是 =)
    3. Address = 10.8.0.2/32
    4. DNS = 192.168.1.10
    5. MTU = 1420
    6. [Peer]
    7. PublicKey = hT8vQ1...(伺服器的公鑰)
    8. PresharedKey = 9jXm4...(選配,多一層對稱加密)
    9. Endpoint = home.example.com:51820
    10. AllowedIPs = 10.8.0.0/24, 192.168.1.0/24
    11. PersistentKeepalive = 25
    複製代碼

    一個一個看
    1. 欄位                在做什麼                        寫錯的症狀
    2. ------------------------------------------------------------------
    3. PrivateKey          你的身分。跟你的公鑰成對          握手永遠不會成功,
    4.                                                       而且看不出原因
    5. Address             你在隧道裡的 IP。               通了但別人回不了你
    6.                     **要寫 /32 不是 /24**
    7. DNS                 連上之後用哪台 DNS               IP 連得到但名字打不開
    8. MTU                 每個封包最大幾個位元組            握手成功、ping 通、
    9.                     預設 1420                        但網頁打不開(步驟 7 第六層)
    10. PublicKey           伺服器的公鑰                     握手永遠不會成功
    11. Endpoint            伺服器在哪裡(網域或 IP + 埠)    完全沒有任何封包送出
    12. AllowedIPs          往下看,這個最重要               各式各樣
    13. PersistentKeepalive 每 25 秒送一個心跳封包            斷線之後不會自己回來
    複製代碼

    ⚠ `Address` 要寫 `/32`。 寫 `/24` 的話,你的裝置會以為「10.8.0.0/24 這整段跟我直接相連」,於是不會把要送給 10.8.0.1 的封包交給 WireGuard 處理 —— 症狀是隧道看起來連上了,但 ping 伺服器不通。

    ⚠ `PersistentKeepalive = 25` 不要省。 官方的原話是「25 秒是一個對各式各樣防火牆都有效的合理間隔」。沒有它的話,你的手機從 Wi-Fi 切到行動網路、或者放著沒用十分鐘之後,中間的 NAT 會把對應關係忘掉,伺服器就再也找不到你,直到你主動送出下一個封包。做遠端監控的話這是致命的。

    ---

    伺服器就再也找不到你,直到你主動送出下一個封包

    步驟 2:AllowedIPs —— 同一個欄位,兩邊的意思不一樣

    這是整個 WireGuard 最容易被誤解的地方,而且誤解的後果是「通了但用不了」。
    1. 在「用戶端」的設定檔裡:
    2.   AllowedIPs = 這些目的地的封包,請走這條隧道
    3.   (等於在你的裝置上加路由)
    4. 在「伺服器」的設定檔裡(每個 peer 各一份):
    5.   AllowedIPs = 只接受這個 peer 送來、來源 IP 在這個範圍內的封包
    6.   (等於存取控制)
    複製代碼

    所以伺服器端每個用戶端的 AllowedIPs 一定要寫 `/32`:
    1. [Peer]
    2. # 手機
    3. PublicKey = ...
    4. AllowedIPs = 10.8.0.2/32      ← 一定要 /32
    5. [Peer]
    6. # 筆電
    7. PublicKey = ...
    8. AllowedIPs = 10.8.0.3/32      ← 一定要 /32
    複製代碼

    寫成 `10.8.0.0/24` 的話,第二個 peer 會覆蓋第一個 —— WireGuard 是靠「這個來源 IP 屬於哪個 peer」來決定回信要送給誰的。兩個 peer 宣告同一段,後面那個會搶走全部。症狀是「第二個人連上之後,第一個人就斷了」。

    ⚠ 用 MikroTik RouterOS 當伺服器的話多注意一件事:它的 WireGuard 預設監聽埠是 13231 不是 51820。照著網路教學填 51820 會完全連不上,而且你會一直去查防火牆。

    分流 vs 全流量

    這是用戶端 `AllowedIPs` 唯一要做的決定。

    以下還有約 81% 的內容
    登入後即可閱讀完整教學

    登入繼續閱讀使用 Google 登入
    您需要登入後纔可以回帖 登入 | 立即註冊

    本版積分規則

    延伸閱讀

    加入惟家 LINE 群 QR Code加入惟家 LINE 群

    Archiver|手機版|惟家的智能論壇

    GMT+8, 2026-11-10 00:44 , Processed in 0.126654 second(s), 25 queries .

    快速回覆 返回頂部 返回列表