WireGuard 是什么?WireGuard 协议与代理类协议的区别
WireGuard 协议是工作在三层的 VPN 隧道:在虚拟网卡上配置自己的私钥和对端公钥,IP 包经 UDP 加密传输。官方写明它不专注混淆、不支持 TCP 隧道,和订阅式的代理类协议定位不同。
WireGuard 资料卡核验于 2026-10-09
- 来历
- 官方站点 www.wireguard.com。技术白皮书《WireGuard: Next Generation Kernel Network Tunnel》作者为 Jason A. Donenfeld,论文发表于 NDSS 2017;站点称它最初为 Linux 内核发布,现已跨平台,源码分为多个仓库,托管在 ZX2C4 Git 仓库等处。
- 传输与加密
- 只走 UDP,不支持 TCP 隧道。握手基于 Noise_IK,使用 Curve25519 交换密钥、ChaCha20-Poly1305 加密、BLAKE2s 哈希、HKDF 派生密钥;握手每隔几分钟重做以轮换会话密钥。
- 官方文档写明支持的内核
- WireGuard 官方实现(Linux 内核及各平台版本)、Xray-core、sing-box、Mihomo
- 相关 RFC
- RFC 7539、RFC 7693、RFC 5869
站内收录的客户端里,文档写明支持 WireGuard 的
- mihomo
- v2rayN
- v2rayNG
- Xray-core
- sing-box
- Hiddify
- Karing
- NekoBox for Android
- Throne
- Shadowrocket
- Stash
- Surge
- Loon
- OpenClash
- PassWall
- WireGuard
完整对照见协议 × 客户端支持矩阵。
WireGuard 官方站点协议与密码学概述已知限制技术白皮书(PDF)Xray 文档:WireGuardsing-box 文档:WireGuard 端点Mihomo 文档:WireGuard
这张卡片的资料来源(11 条)
- 官方首页:概念概览、UDP 封装 IP 包、Cryptokey Routing、漫游、跨平台(Windows、macOS、BSD、iOS、Android)、内核组件 GPLv2(www.wireguard.com)
- 协议页:原语列表(ChaCha20-Poly1305、Curve25519、BLAKE2s、SipHash24、HKDF);握手每隔几分钟进行以轮换密钥;Noise_IK;所有包经 UDP 发送(www.wireguard.com)
- 已知限制页:不专注混淆、不支持 TCP、默认非后量子安全(www.wireguard.com)
- 白皮书首页:作者 Jason A. Donenfeld;Linux 实现可少于 4000 行;发表于 NDSS 2017(www.wireguard.com)
- Xray 文档:用户态 WireGuard 实现;并提示 WireGuard 并非为穿越防火墙设计,特征明显可能导致服务器被封(xtls.github.io)
- sing-box 文档:自 1.11.0 起提供 WireGuard 端点,旧的 WireGuard 出站已标记弃用(sing-box.sagernet.org)
- sing-box 文档:WireGuard 出站在 1.11.0 起弃用(sing-box.sagernet.org)
- Mihomo 文档含 wireguard 代理类型(wiki.metacubex.one)
- RFC 7539:ChaCha20 与 Poly1305(协议页引用)(www.rfc-editor.org)
- RFC 7693:BLAKE2(协议页引用)(www.rfc-editor.org)
- RFC 5869:HKDF(协议页引用)(www.rfc-editor.org)
WireGuard 协议是一条工作在三层的 VPN 隧道:你在虚拟网卡上配置自己的私钥和对端的公钥,IP 包就被加密后经 UDP 送给对端。它的身份靠密钥对,不靠 UUID 或密码,也不负责密钥分发,所以和订阅里常见的 VMess、Trojan 这类代理类协议不在同一个层级。本文依据官方站点和白皮书回答 wireguard是什么,再说清它在梯子场景里处于什么位置。
WireGuard 协议是什么:一条三层加密隧道,来自 Linux 内核
官方站点是 www.wireguard.com,技术白皮书是 WireGuard 技术白皮书,题为《WireGuard: Next Generation Kernel Network Tunnel》,作者 Jason A. Donenfeld。站点称它最初为 Linux 内核发布,现已跨平台,源码分成多个仓库,入口见 源码仓库列表。
“三层”指的是网络层:虚拟网卡收发的是一个个 IP 包。这是它和多数代理类协议最直观的差别。代理类协议由代理程序接住应用的连接,再按协议转发 TCP 和 UDP 流量;WireGuard 则是先建一张虚拟网卡,凡是路由到这张网卡的 IP 包,统统走隧道。想先分清“VPN”和“梯子”在日常说法里怎么混用,读 VPN 梯子是什么。
wireguard原理:公钥即身份,UDP 承载 IP 包
官方首页和协议页把运作方式讲得很简洁。可以拆成下面几块:
| 概念 | 官方资料怎么说 | 白话理解 |
|---|---|---|
| 密钥对 | 接口上配置自己的私钥和对端公钥 | 公钥相当于对方的身份证明,私钥只属于你的设备 |
| Cryptokey Routing | 把对端公钥与允许进入隧道的 IP 地址段关联,公钥同时用于互相认证 | 一张“哪个对端负责哪些地址”的对应表 |
| 握手与加密 | 基于 Noise_IK,Curve25519 交换密钥,ChaCha20-Poly1305 加密,BLAKE2s 哈希,HKDF 派生密钥 | 协议页给出的是一份确定的原语列表,节点里不会有“加密方式”可选项 |
| 重做握手 | 每隔几分钟重做,轮换会话密钥 | 会话密钥不会一直用下去 |
| 漫游 | 收到某对端可解密的数据包后,会记住它最新的公网端点 | 设备换了网络,只要还能送到,对端就能找到你 |
| 重连 | 接口启动后,握手和重新握手由协议自动处理 | 使用者不必手动管理重连 |
白皮书还称,它在 Linux 上的实现可少于 4000 行代码,便于审计。这是作者的说法,梯子岛没有能力做代码审计,只把它当作设计取向来转述。另外要注意:WireGuard 自身没有 RFC,协议页引用的是 ChaCha20、BLAKE2、HKDF 这些密码学构件的标准。
wireguard vpn 和订阅式代理协议,到底差在哪
很多人把 wireguard vpn 和订阅里的 vless、trojan 节点混着问。下面这张表只列资料能支撑的差别:
| 对比点 | WireGuard | VMess、VLESS、Trojan 等代理类协议 |
|---|---|---|
| 工作层级 | 三层,在虚拟网卡上收发 IP 包 | 代理程序按连接转发 TCP 与 UDP 流量 |
| 身份凭据 | 私钥与对端公钥 | UUID、密码或其哈希等,视协议而定 |
| 底层传输 | 只走 UDP,不支持 TCP 隧道 | 既有跑在 TCP 上的,可换 WebSocket、gRPC 等传输方式,见 传输方式有哪些,也有基于 QUIC 的 |
| 混淆 | 官方称不专注混淆,应由上层负责 | 常与 TLS 或 REALITY 等外层搭配 |
| 流量去向 | 由“允许进入隧道的 IP 地址段”决定 | 由客户端里的规则与分流设置决定 |
| 重连 | 协议自动完成握手与重握手 | 取决于客户端实现 |
结论不是谁高谁低,而是定位不同。需要整张网卡走隧道时,WireGuard 的模型很直接;需要按域名、按规则分流时,代理类协议配合 Clash 系或 sing-box 系客户端的规则更顺手。具体规则怎么写,见 Clash 规则怎么写。订阅或套餐里是否提供 WireGuard 节点,要看提供方,资料待核实,梯子岛不替它们做判断。
WireGuard 协议的三条限制:没有混淆、没有 TCP、没有后量子
官方的 已知限制 页对 WireGuard 协议的边界写得很坦率。三条放在一起看:
| 限制 | 官方的说法 | 对使用者的含义 |
|---|---|---|
| 不专注混淆 | 混淆应由上层负责 | 协议自身的特征是明显的,Xray 文档提示这可能导致服务器被封 |
| 不支持 TCP 隧道 | 理由是 TCP-over-TCP 性能很差,转 TCP 的工作交给上层工具 | 链路上不放行 UDP 的地方,隧道建立不起来 |
| 默认非后量子安全 | 建议在其上运行后量子握手,并把结果放入预共享密钥位 | 需要这类保护时,要靠额外的上层方案,而不是默认具备 |
“Xray 文档提示”那一格,来自 Xray 对自家 WireGuard 出站的说明:WireGuard 并非为穿越防火墙设计,特征明显,可能导致服务器被封。这是内核文档的提醒,是否真的发生,取决于你所处的网络,梯子岛没有数据可以印证。你可以把它理解成:WireGuard 擅长的是“把两端连成一张私有网络”,而不是“让流量看起来像别的东西”。
内核里的 WireGuard:Xray、sing-box、Mihomo 各怎么放
主流内核的文档都收录了它,但位置不同:
| 内核 | 文档里的位置 | 要留意什么 |
|---|---|---|
| Xray-core | 出站里有 WireGuard 页,是用户态实现 | 文档提示它的特征明显,可能导致服务器被封 |
| sing-box | 较新的文档提供“WireGuard 端点”,旧的 WireGuard 出站已标记弃用 | 旧教程写的出站字段不要直接照抄,见 端点文档 |
| Mihomo | 有 wireguard 代理类型 | 字段以 Mihomo 文档为准 |
要用官方实现,则看 WireGuard 客户端 档案和 下载导航:它覆盖 Linux 内核以及 Windows、macOS、BSD、iOS、Android 的各平台版本,安装包以官方的 安装页 为入口,不要在搜索结果里找“下载站”。内核之间的区别可以顺带读 Mihomo 与 Xray-core 对比。
读懂一份 WireGuard 配置:五样东西
不管是官方客户端还是内核里的写法,WireGuard 的配置都绕不开下面五样。官方 快速入门 把配置分成接口和对端两部分,字段的具体叫法以它和你所用客户端的说明为准:
- 自己的私钥:只属于你的设备,不要发给任何人,也别放进截图。
- 隧道里的本地地址:这张虚拟网卡自己的 IP。
- 对端公钥:用来确认你连的是谁,公钥可以交给对方。
- 对端的地址和端口:你要主动连接的那一端在哪。官方站点说明,收到对端可解密的包后会记住它最新的公网端点,这就是它所说的漫游。
- 允许进入隧道的地址段:决定哪些 IP 包走隧道,这一项填得太宽或太窄,行为会完全不同。
有时还会多出一个预共享密钥,那是可选的额外一层。配置文件由谁生成、私钥放在哪里,取决于提供方,你要做的是确认私钥只在自己的设备上,一旦出现在别人手里就应当作废换新。逐步导入配置的做法,见 WireGuard 配置教程。
怎么确认 WireGuard 隧道确实在工作
- 对照上一节,确认五样东西都在,而且公钥、私钥没有粘错,多一个空格也会对不上。
- 看握手状态。官方的 wg 命令会显示最近一次握手的时间,图形客户端的叫法不一,在状态页里找“握手”字样;从来没有握手,多半是密钥、地址或网络有问题。
- 换一个网络再试,例如从家宽换成手机热点。隧道只走 UDP,换网络后结果不同,说明问题更可能出在 UDP 能否到达,这只是判断思路,不是结论。
- 连上后,用 IP 与 DNS 检测 看出口地区和 DNS 走向。整张网卡走隧道时,DNS 仍可能走原来的路径,原理和处理见 DNS 泄露怎么解决。
- 仍然不通,就按 梯子连不上怎么办 的顺序往下查。
下一步:按你的目的去对应的页面
- 想动手配置官方客户端:读 WireGuard 配置教程。
- 想确认自己的代理类客户端支不支持 WireGuard:查 协议支持矩阵,没写明的格子就是资料待核实。
- 想看同样依赖 UDP 的另一类协议:读 TUIC 协议 或 Hysteria2 协议。
- 想按场景选协议:读 代理协议怎么选;想翻官方规范原文,去 协议规范导航。
分清层级后,再回头看别人说的“WireGuard 好不好用”,你会发现很多争论其实是把隧道和代理放在了同一个尺子上。
这篇没有覆盖的
- 各类订阅是否提供 WireGuard 节点、怎么提供,没有资料可引用,本文不做判断。
- 性能高低不在本文范围,梯子岛手里没有可核对的测试数据,因此不作排名。
- 只讲客户端一侧怎么理解配置,不教服务端搭建,也不涉及密钥分发方案。
本文引用的官方来源
- WireGuard 官网(www.wireguard.com)
- 协议与密码学概述(www.wireguard.com)
- 已知限制(www.wireguard.com)
- WireGuard 技术白皮书(www.wireguard.com)
- Xray 文档:WireGuard(xtls.github.io)
- sing-box 文档:WireGuard 端点(sing-box.sagernet.org)
以上链接均为官方页面,梯子岛在 2026-10-09 核对过;个别网站会拦截自动化访问,用浏览器直接打开即可。平台规则可能随时调整,以官方页面当前内容为准。
WireGuard 协议常见问题
WireGuard 是什么?
WireGuard 是一种工作在三层的 VPN 隧道。你在虚拟网卡上配置自己的私钥和对端的公钥,IP 包就经 UDP 加密后送到对端。官方站点称它最初为 Linux 内核发布,现在已覆盖 Windows、macOS、BSD、iOS 和 Android。密钥怎么分发,不在它的范围内。
WireGuard 和 VMess、Trojan 是一类东西吗?
不是同一个层级。WireGuard 在虚拟网卡上收发 IP 包,身份靠公私钥对;VMess、Trojan 这类代理类协议由代理程序转发 TCP 与 UDP 流量,身份靠 UUID 或密码。两者的配置字段、传输方式和使用习惯都不同,导入节点前要先分清协议类型。
WireGuard 为什么不支持 TCP?
官方的已知限制页写明不支持 TCP 隧道,理由是 TCP-over-TCP 性能很差,转 TCP 的工作交给上层工具去做。它只通过 UDP 发送所有数据包,所以所在网络如果不放行 UDP,WireGuard 隧道就建立不起来,换网络对比一下可以帮你判断。
WireGuard 有混淆功能吗?
没有。官方已知限制页说明 WireGuard 不专注于混淆,混淆应由上层负责。Xray 文档也提示,WireGuard 并非为穿越防火墙设计,特征明显,可能导致服务器被封。是否会遇到这种情况取决于你的网络,梯子岛没有数据可以判断。
sing-box 里的 WireGuard 出站还能用吗?
sing-box 文档说明,较新的版本提供了 WireGuard 端点,旧的 WireGuard 出站已被标记为弃用。看到旧教程写的是出站写法,不要直接照抄,先对照当前文档里端点的字段,再决定怎么改,客户端界面如何呈现以所用软件为准。
接着读
- 客户端 · WireGuard 客户端是什么?官方客户端与协议的关系
- 教程 · WireGuard 配置教程:客户端导入配置与各平台入口
- 指南 · VPN 梯子是什么?VPN、梯子与代理的区别
- 协议 · TUIC 协议是什么?QUIC 系代理协议的特点
- 协议 · 代理协议怎么选?按场景与客户端倒推,不按名气选
- 术语 · QUIC是什么意思