代理协议 · 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