本文速览

配置 WireGuard 时,先分清本机身份、对端身份与公网入口,再检查隧道地址和流量范围。本文适合已经持有自己服务商或自建端点配置的用户,说明如何在 Shadowrocket 中对应参数、验证连接,以及按握手、路由、DNS、MTU 的顺序定位问题。示例地址仅用于解释字段,不是可连接的服务。

一、添加前先区分 Interface 与 Peer

Shadowrocket(小火箭)的 WireGuard 配置不能只靠一个服务器地址完成。常见 WireGuard 配置把信息分成 [Interface] 与 [Peer]:前者描述本机的密钥和隧道地址,后者描述通信对端的公钥、入口及允许的地址范围。把两部分的密钥填反,即使地址和端口正确,也无法完成正常认证。

本文以用户已有自己的服务商与配置为前提。添加前应拿到完整且相互匹配的参数;只有 Endpoint、没有本机 PrivateKey 或对端 PublicKey,不能构成可用配置。Shadowrocket 是闭源商业应用,客户端买断 ≠ 线路套餐,购买客户端不会自动生成可用的 WireGuard 对端。

参数归属:本机与通信对端

Interface:本机
  • PrivateKey:本机私钥,必须保密。
  • Address:分配给本机的隧道 IP,通常包含前缀长度。
  • MTU:隧道接口的报文大小设置。
  • DNS:部分配置文件携带的解析器设置,不属于 WireGuard 握手参数。
Peer:通信对端
  • PublicKey:远端的公钥,不是本机公钥。
  • Endpoint:远端可访问的域名或 IP 与 UDP 端口。
  • AllowedIPs:关联此 Peer 的地址范围。
  • PresharedKey:可选的预共享密钥,双方必须一致。

先按角色整理原始配置,再逐项填写;不要根据字段名称相似就交换密钥。

二、在 Home 添加 WireGuard 并保留原始参数

手动添加从 Home → 右上角「+」→ Type → WireGuard 开始。选择协议后再填写,避免把 WireGuard 参数留在其他协议的表单中。下面使用 WireGuard 配置文件的标准字段名解释对应关系;应用表单可能把 Endpoint 拆成地址与端口,具体字段显示以当前应用内为准。

  1. 整理配置

    保留一份原始配置,分别标出 Interface 的 PrivateKey、Address,以及 Peer 的 PublicKey、Endpoint、AllowedIPs。若有 PresharedKey,一并记录但不要放入公开笔记或截图。

  2. 选择协议

    进入 Home →「+」→ Type → WireGuard。先确认 Type,再输入参数;不要把完整的配置文件文本粘贴进服务器地址栏。

  3. 填写入口

    将 Endpoint 的主机与端口对应填写。例如 192.0.2.10:51820 表示主机 192.0.2.10、端口 51820;该文档示例地址不可用作实际入口。

  4. 填写身份

    填写本机 PrivateKey、对端 PublicKey 和已分配的 Address,再按原始配置处理 AllowedIPs 及可选参数。密钥不要附带引号、字段名或换行。

  5. 保存验证

    保存后回到 Home,选中该配置,核对 Global Routing,再开启连接。首次出现系统 VPN 配置授权时,核对应用后按系统提示操作。用一个已知允许访问的目标发起请求,并检查连接结果。

三、PrivateKey 与 PublicKey:长度正确不等于配对正确

PrivateKey 用于本机身份认证,对应的本机 PublicKey 需要登记在远端的 Peer 配置中。Shadowrocket 内填写的 Peer PublicKey 则应来自远端。两端不是互相交换私钥,而是各自保存私钥、使用对方公钥识别对端。

32 字节
WireGuard 公钥与私钥的原始长度
44 字符
标准带填充 Base64 编码的密钥长度
双方一致
启用 PresharedKey 时的必要条件

上述长度只用于检查明显的复制错误,不能证明密钥有效或属于同一连接。末尾的 = 可能是 Base64 填充,不应随意删除;聊天排版带入的空格、引号和换行则不属于密钥。也不要用外观相近的字符手工补齐缺失内容。

四、Endpoint、Address 与 AllowedIPs 分别控制什么

Endpoint 是建立通信时访问的外层入口,Address 是本机在隧道内使用的地址,两者不能互换。例如远端公网入口使用端口 51820,并不意味着本机 Address 也要包含该端口。WireGuard 使用 UDP;入口只允许 TCP 通过时,填写同一个端口数字也不能替代 UDP 连通性。

字段示例或形式核对要点
Endpoint192.0.2.10:51820文档示例。实际主机与 UDP 端口必须由配置方提供;51820 是常见选择,不是强制值。
IPv6 Endpoint[2001:db8::10]:51820组合格式用方括号区分 IPv6 地址与端口;分栏表单按对应地址、端口栏填写。
Address10.20.0.2/32示例隧道地址。必须使用实际分配值,避免与另一设备重复。
AllowedIPs10.20.0.0/24只声明此网段,不代表任意公网地址都能通过此 Peer。
AllowedIPs0.0.0.0/0, ::/0分别覆盖全部 IPv4 与 IPv6;仍需对端转发能力及应用流量策略配合。

在 WireGuard 协议层,AllowedIPs 参与选择出站数据对应的 Peer,也用于校验该 Peer 发来的数据所声明的源地址。它不是网站域名列表,不能写成 example.com,也不能直接放入 DOMAIN-SUFFIX 规则。只有 IPv4 默认范围而没有 IPv6 范围时,不应据此认定 IPv6 目标也已经覆盖。

五、Global Routing 与 WireGuard 不是同一层设置

Shadowrocket 先按自身的流量策略决定请求去向,WireGuard 参数再约束选中该连接后的通信。Global Routing 下的 Proxy、Direct、Config、Scene 不能与 AllowedIPs 画等号:Proxy 用于代理路径,Direct 用于直接连接,Config 按配置规则处理,Scene 按已配置的场景设置处理。具体结果还取决于选中的策略与配置。

首次验证时,可在了解影响范围的前提下短暂使用 Proxy,并选中待测 WireGuard 连接,减少规则分流对判断的干扰;验证后恢复原来的姿态。在 Config 下,即使 WireGuard 本身可用,请求若命中 DIRECT,也不会因为 AllowedIPs 写了默认范围就自动改走该 Peer。

DOMAIN-SUFFIX,example.com,PROXY
GEOIP,CN,DIRECT
IP-CIDR,192.0.2.0/24,DIRECT
FINAL,PROXY

这段是规则关键字示意,不是 WireGuard 配置,也不是要求覆盖现有 Config。DOMAIN-SUFFIX 匹配域名后缀,GEOIP 按 IP 地理库匹配,IP-CIDR 匹配 IP 网段,FINAL 接收未被前序规则匹配的请求。示例中的 PROXY 表示代理策略;实际使用时还要核对配置中的策略指向,不能只看规则末尾文字。

六、MTU 与 PersistentKeepalive 的调整边界

MTU 控制隧道接口发送的 IP 报文大小。WireGuard 封装还需要外层 IP、UDP 等开销,因此不能直接把底层链路的 MTU 原样照抄进隧道。1420 是常见的排查参考值,但不是适合所有路径的固定答案;应优先使用已有配置给出的值或应用默认处理。

  1. 先确认基础连接。如果连握手都未建立,应先检查 Endpoint、UDP 网络和密钥,不要把 MTU 当作首要原因。
  2. 记录可复现现象。例如小请求成功、较大响应反复停住,才需要进一步怀疑路径 MTU、丢包或相关网络限制。这只是排查线索,不是单凭现象就能确定的结论。
  3. 一次只改一个值。可在配置方允许的范围内,分别以 1420、1380 进行对照;每次保存并重新连接,用相同目标与请求复测,记录原值以便恢复。
  4. 避免无限减小。如果减小后没有改善,应回到 DNS、路由和对端状态检查,而不是持续降低数值。涉及 IPv6 时,还需满足其链路 MTU 约束。

PersistentKeepalive 用于周期性发送保活数据,帮助维持 NAT 映射。25 秒是常见配置示例,不是必须开启的协议要求;0 表示关闭周期性保活。它适合排查空闲一段时间后回程通信中断的情形,不能修复错误公钥、不可达端口或不受允许的目标网段。

七、按现象排查,而不是反复重建配置

每轮排查只改变一项,并记录测试网络、Global Routing 姿态、访问目标和结果。Home 中的延迟或连通性结果只能说明对应测试项目的表现;不同测试方式覆盖的环节不同,不能用单个延迟数值证明密钥、DNS、AllowedIPs 和所有业务请求都正常。

开关打开了,为什么仍然没有流量?

先在 Home 核对选中的是否是刚保存的 WireGuard 连接,再核对 Global Routing。随后检查 Endpoint 的主机与 UDP 端口、PrivateKey 与对端 PublicKey 的归属。如果有对端管理权限,可在发起请求后核对握手时间;系统 VPN 已启动不等于对端已认证。

只有一部分地址能访问,是 AllowedIPs 写错了吗?

先对照失败目标的 IP 是否落在 AllowedIPs 内,再检查 Config 中是否被分配到其他策略。若原配置只允许 10.20.0.0/24,不要直接改成默认范围期待获得公网转发;应向配置管理方确认允许范围及远端转发设置。

Wi-Fi 能用,蜂窝网络不行,先改哪里?

保持密钥、目标与策略不变,先分别在两种网络手动连接。检查 Endpoint 域名的解析结果、IPv4 或 IPv6 可达性及 UDP 通信条件,再查看 Settings → On Demand 是否存在不同网络下的触发设置。不要同时修改端口、密钥与 MTU。

把同一份配置复制到 iPad 后,iPhone 不稳定了?

先停用其中一台设备再复测。如果单台正常、同时使用异常,核对两台是否使用了相同 PrivateKey 与 Address。向配置管理方申请独立 Peer 与隧道地址,并分别保存;仅更改显示名称不会改变协议身份。

发截图求助时,哪些内容需要遮住?

遮住 PrivateKey、PresharedKey、二维码以及任何订阅认证信息。保留经过脱敏的字段名称、端口、MTU、AllowedIPs 范围和错误现象即可。若私钥已经泄露,应更换密钥并同步更新远端登记,仅删除截图不足以撤销旧身份。