Linux 上的 WireGuard 伺服器設定(wg0、NAT、對等節點)

12 分鐘閱讀 - 2026年6月22日

hero section cover
目錄
  • 何時應使用 WireGuard 伺服器
  • 伺服器設定
  • 新增與移除對等夥伴
  • 故障排除
  • 金鑰輪替與預共享金鑰
分享

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日

更多文章