Linux 上的 WireGuard 伺服器設定(wg0、NAT、對等節點)
12 分鐘閱讀 - 2026年6月22日

Linux 實用 WireGuard 伺服器設定指南:金鑰、wg0.conf、NAT、透過 syncconf 進行對等端管理,以及系統管理員實際使用的疑難排解指令。
當您希望私下存取託管基礎架構,同時不將管理埠暴露於公共網際網路時,請運行 WireGuard 伺服器。它採用公鑰驗證機制,自 Linux 5.6 內核起即內建於內核中,且一旦啟動便不會干擾系統運作。本文將探討何時應使用 WireGuard 伺服器、如何啟動 wg0,以及如何維持對等節點的日常運作。
何時應使用 WireGuard 伺服器
有三種常見的部署模式:遠端存取、伺服器對伺服器連線,以及站點對站點路由。
若要進行遠端存取,請在 VPS 或專用主機上運行伺服器,並將管理流量導向隧道。將 AllowedIPs 各對等端至私有管理子網(例如 10.0.0.0/24),如此一來僅有針對內部系統的流量會使用隧道。其餘所有流量則維持在用戶的本地連線中。若用戶從家用或行動網路連線,請在 PersistentKeepalive = 25 ,以防止 NAT 連線被中斷。
對於伺服器對伺服器連線,請將 AllowedIPs 範圍盡可能狹窄。通常只需單一 /32 或小型後端子網。此舉可避免將無關流量拉入隧道,並確保路由行為可預測。
站對站連線則有所不同。WireGuard 主機充當子網之間的閘道,因此必須啟用 IP 轉發,且 NAT 規則必須將回傳流量導出至正確的介面。
| 模式 | AllowedIPs 範圍 | 最適合 | 設定複雜度 |
|---|---|---|---|
| 遠端存取 | 私有子網,例如 10.0.0.0/24 | 管理員與開發人員存取權限 | 低 |
| 伺服器對伺服器 | 特定 IP 或後端子網 | 點對點主機連結 | 低至中 |
| 站對站 | 整個遠端區域網路,例如 /24 | 閘道對閘道路由 | 中至高 |
| 私有服務存取 | 僅限內部子網(分割隧道) | 後端服務隔離 | 中等 |
伺服器設定
伺服器儲存私密金鑰,預設監聽 UDP 51820 ,並負責終止隧道。上述三種模式皆適用此基礎設定。
金鑰與 wg0.conf
產生伺服器金鑰對:
wg genkey | sudo tee /etc/wireguard/server_private.key | wg pubkey | sudo tee /etc/wireguard/server_public.key鎖定私鑰:
sudo chmod 600 /etc/wireguard/server_private.key私鑰應保留在伺服器上。公鑰則是您提供給對等節點的。
建立 /etc/wireguard/wg0.conf:
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <SERVER_PRIVATE_KEY>
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o <PUBLIC_IFACE> -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o <PUBLIC_IFACE> -j MASQUERADE
[Peer]
PublicKey = <CLIENT_PUBLIC_KEY>
AllowedIPs = 10.8.0.2/32找出要將流量轉入的外發介面 <PUBLIC_IFACE> :
ip -o -4 route show to default | awk '{print $5}'轉發、防火牆與 NAT
開啟監聽埠:
sudo ufw allow 51820/udp透過在 /etc/sysctl.conf:
net.ipv4.ip_forward = 1無需重新開機即可套用:
sudo sysctl -p該 PostUp 以及 PostDown 這兩行 wg0.conf 中的和這兩行,會在介面啟動或關閉時新增或移除 NAT 偽裝規則。若缺少這兩行,來自 LAN 的回傳流量將永遠無法返回對等端。
啟動隧道
wg-quick 可透過單一指令同時處理介面、路由以及 PostUp/PostDown 鉤子:
sudo wg-quick up wg0若要在重新開機後自動啟動,請啟用 systemd 單元:
sudo systemctl enable --now wg-quick@wg0使用以下指令檢查狀態:
sudo wg show最近的 latest handshake 行可確認隧道運作正常。若顯示內容過時或為空,請檢查防火牆、雙方密鑰以及對等方的 AllowedIPs.
新增與移除對等夥伴
每個對等方都需要專屬的金鑰對。請在客戶端生成該金鑰對,然後將對等方的公鑰加入 wg0.conf 新增 [Peer] 區塊中,並透過 AllowedIPs 分配其隧道 IP 的條目。
請使用 /32 來設定單一裝置:
AllowedIPs = 10.8.0.3/32這可防止某個對等端佔用分配給另一端的位址。若要進行分流隧道存取,請僅列出應透過隧道傳輸的私有子網,例如 AllowedIPs = 10.8.0.0/24.
在不中斷現有連線的情況下套用設定變更:
sudo wg syncconf wg0 <(wg-quick strip wg0)移除對等節點的操作方式相同。刪除其 [Peer] 區塊,並 wg0.conf 並再次執行 syncconf 指令。
故障排除
若對等連線已建立,但無法連通對端任何資源,原因通常有以下四種:
- IP 轉發功能已關閉
- 缺少 NAT 偽裝規則
- NAT 規則中的出站介面設定錯誤
AllowedIPs未包含目的地
檢查轉發設定:
cat /proc/sys/net/ipv4/ip_forward應返回 1。若回傳 0,表示 sysctl 變更未生效或未儲存。
檢查 NAT 規則與出站介面:
sudo iptables -t nat -L POSTROUTING
ip route get 1.1.1.1第二條指令會顯示實際的出站介面名稱,例如 ens3, enp1s0,或 eth0。該名稱必須與 MASQUERADE 規則中的介面相符。
若手握過程本身缺失,請確認 UDP 51820 在防火牆及任何上游服務供應商處是否已開啟,並確認雙方皆持有對方的正確公鑰。
對於位於會中斷閒置 UDP 連線的住宅或行動 NAT 後方的對等端,請在 PersistentKeepalive = 25 。
金鑰輪替與預共享金鑰
對於持續運作數月的隧道,建議每年左右輪替一次金鑰。生成新的金鑰對,更新兩端,並透過 wg syncconf。切勿在兩個對等節點間重複使用同一私鑰,此舉將導致路由衝突並中斷兩者之間的傳輸。
若要在公鑰驗證之上增加額外的安全層,請為每個對等節點新增一個預共享金鑰:
wg genpsk將結果新增為 PresharedKey = <PSK> 加入 [Peer] 區塊中。WireGuard 會將預共享金鑰(PSK)混入握手過程中,因此即使攻擊者以某種方式取得其中一個非對稱金鑰,若未持有該預共享金鑰,仍無法解密流量。
日常實用的指令:
| 指令 | 用途 |
|---|---|
wg show | 對等節點、握手過程、流量計數器 |
wg show wg0 transfer | 位元組計數器適用於 wg0 |
wg show all dump | 用於監控腳本的機器可解析輸出 |
wg syncconf wg0 <(wg-quick strip wg0) | 在不終止連線的情況下套用設定變更 |
wg genpsk | 產生預共享金鑰 |
若您需要一個穩定且對外開放的主機,用以終止 WireGuard 隧道並將私有流量路由至您的基礎架構,不妨參考 FDC 的不限流量 VPS 方案。

數位視力疲勞:在螢幕使用頻繁的時代,如何保護您的視力
整天盯著螢幕看嗎?學習如何運用經過驗證的技巧與工具來減輕數位眼疲勞。這份指南對於遠距工作者、開發人員以及所有科技從業者而言都不可或缺。
4 分鐘閱讀 - 2025年5月21日
為何擁有強大且不限流量的 VPS 至關重要
8 分鐘閱讀 - 2025年5月9日