代理協定 · Clash文件

WireGuard

Clash 生態系的 WireGuard 出站設定參考,以目前 Mihomo 欄位為準,涵蓋本機介面、Peer、Allowed IPs、MTU 與遠端 DNS。

  • private-key
  • public-key
  • allowed-ips
  • MTU
  • DNS
代理協定

WireGuard 出站如何工作

WireGuard 在目前核心中是三層隧道型出站。用戶端會在內部建立 WireGuard 網路裝置,把命中該節點的 TCP 或 UDP 流量送入隧道,而不是接管作業系統的全部預設路由。

設定必須同時描述本機介面和遠端 Peer。本機位址與私鑰屬於用戶端介面,伺服器端點、公鑰和 Allowed IPs 屬於 Peer,兩組欄位不能互換。

單 Peer 最小設定

只有一個 Peer 時可以使用簡化寫法,把端點和 Peer 金鑰直接寫在節點頂層。ipipv6 至少填寫一個,否則用戶端無法建立本機隧道位址。

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 和本機 ipipv6 仍放在節點頂層,伺服器端點和 Peer 金鑰移入每個陣列項。

每個 Peer 都必須提供非空的 allowed-ips,並應按網段區分。使用 peers 後,頂層的 serverportpublic-keypre-shared-key 會被忽略;頂層 reserved 則作為沒有單獨填寫 reserved 的 Peer 的還原值。

WireGuard 多 Peer 欄位層級
層級欄位要求
節點頂層private-keyipipv6描述本機 WireGuard 介面
節點頂層peers包含一個或多個遠端 Peer
節點頂層reserved作為各 Peer 未單獨填寫 reserved 時的還原值
每個 Peerserverportpublic-key描述遠端端點與身分
每個 Peerallowed-ips必須非空,多個 Peer 需要按網段區分
每個 Peerpre-shared-keyreserved僅在伺服器端明確要求時填寫

金鑰、路由與連通性欄位

金鑰和值的格式會在節點初始化時驗證。網路可連線但隧道內無流量時,應優先檢查 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 時,補充正確的 ipipv6
  • 出現金鑰解碼錯誤時,確認複製的是 Base64 金鑰,不是設定檔路徑或十六進制文字。
  • 多 Peer 報告 missing allowed_ips 時,為每個 Peer 提供非空且明確的網段清單。
  • 握手存在但無資料時,核對對端公鑰、Allowed IPs、NAT、防火牆與 MTU。
YAML
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