WireGuard 出站如何工作
WireGuard 在目前核心中是三層隧道型出站。用戶端會在內部建立 WireGuard 網路裝置,把命中該節點的 TCP 或 UDP 流量送入隧道,而不是接管作業系統的全部預設路由。
設定必須同時描述本機介面和遠端 Peer。本機位址與私鑰屬於用戶端介面,伺服器端點、公鑰和 Allowed IPs 屬於 Peer,兩組欄位不能互換。
單 Peer 最小設定
只有一個 Peer 時可以使用簡化寫法,把端點和 Peer 金鑰直接寫在節點頂層。ip 與 ipv6 至少填寫一個,否則用戶端無法建立本機隧道位址。
name必填- 節點名稱,用於策略群組與規則引用。
type必填- 固定填寫
wireguard。 private-key必填- Base64 編碼的用戶端私鑰,必須保密。
ip條件必填- 用戶端在 WireGuard 網路中的 IPv4 位址;與
ipv6至少存在一個。 ipv6條件必填- 用戶端在 WireGuard 網路中的 IPv6 位址;沒有 IPv6 時可以省略。
server必填- 遠端 Peer 的網域或 IP 位址。
port必填- 遠端 Peer 的 WireGuard 連接埠。
public-key必填- Base64 編碼的遠端 Peer 公鑰。
- 單 Peer 路由目前實作
- 簡化寫法會按本機位址族自動建立
0.0.0.0/0和::/0路由,頂層allowed-ips不會被讀取。
多 Peer 完整寫法
需要多個 Peer 時使用 peers 陣列。private-key 和本機 ip 或 ipv6 仍放在節點頂層,伺服器端點和 Peer 金鑰移入每個陣列項。
每個 Peer 都必須提供非空的 allowed-ips,並應按網段區分。使用 peers 後,頂層的 server、port、public-key 和 pre-shared-key 會被忽略;頂層 reserved 則作為沒有單獨填寫 reserved 的 Peer 的還原值。
| 層級 | 欄位 | 要求 |
|---|---|---|
| 節點頂層 | private-key、ip、ipv6 | 描述本機 WireGuard 介面 |
| 節點頂層 | peers | 包含一個或多個遠端 Peer |
| 節點頂層 | reserved | 作為各 Peer 未單獨填寫 reserved 時的還原值 |
| 每個 Peer | server、port、public-key | 描述遠端端點與身分 |
| 每個 Peer | allowed-ips | 必須非空,多個 Peer 需要按網段區分 |
| 每個 Peer | pre-shared-key、reserved | 僅在伺服器端明確要求時填寫 |
金鑰、路由與連通性欄位
金鑰和值的格式會在節點初始化時驗證。網路可連線但隧道內無流量時,應優先檢查 Allowed IPs、MTU 和保活,而不是先改 Clash 規則。
pre-shared-key按需- Base64 編碼的額外預共享金鑰,必須與對應 Peer 一致。
reserved按需- 正好 3 位元組的 WireGuard 保留值,部分 WARP 節點需要。
persistent-keepalive按需- 按秒定期傳送保活包,常用於 NAT 後方的用戶端。
mtu按需- 內部 WireGuard 裝置 MTU,未填寫時目前實作使用 1408。
udp按需- 允許命中該節點的 UDP 應用流量進入 WireGuard 出站。
dialer-proxy按需- 透過另一個出站或策略群組連線 WireGuard 端點。
遠端 DNS 與 AmneziaWG
WireGuard 出站可以為進入隧道的網域請求使用專屬解析器。AmneziaWG 選項只在伺服器端使用相同擴展時填寫,各欄位還受 AmneziaWG 版本約束。
remote-dns-resolve按需- 設為
true時,允許使用目前 WireGuard 出站進行遠端解析。預設false。 dns條件生效- 遠端解析使用的 DNS 伺服器,僅在
remote-dns-resolve: true時生效。 amnezia-wg-option進階- 存在該對象時啟用 AmneziaWG,參數必須來自對應伺服器端設定。
從標準設定映射到用戶端欄位
標準 WireGuard [Interface] 的 Address 與 PrivateKey 映射到頂層位址和私鑰;[Peer] 的 Endpoint、PublicKey 與 AllowedIPs 映射到 Peer 欄位。標準設定中的 ListenPort 是本機監聽連接埠,不應誤寫成遠端 port。
下面兩個金鑰只是格式有效的示例值,不能用於實際認證。單 Peer 簡寫不讀取頂層 allowed-ips;需要自訂路由範圍時改用 peers 陣列,並在每個 Peer 內填寫 allowed-ips。
- 出現 missing local address 時,補充正確的
ip或ipv6。 - 出現金鑰解碼錯誤時,確認複製的是 Base64 金鑰,不是設定檔路徑或十六進制文字。
- 多 Peer 報告 missing allowed_ips 時,為每個 Peer 提供非空且明確的網段清單。
- 握手存在但無資料時,核對對端公鑰、Allowed IPs、NAT、防火牆與 MTU。
proxies:
- name: wg-node
type: wireguard
private-key: ZXhhbXBsZS1jbGllbnQtcHJpdmF0ZS1rZXktMDAwMDA=
ip: 10.0.0.2
server: 203.0.113.10
port: 51820
public-key: ZXhhbXBsZS1wZWVyLXB1YmxpYy1rZXktMDAwMDAwMDA=
udp: true
mtu: 1408
persistent-keepalive: 25