TL;DR
WireGuard 是 L3 VPN(全流量加密 + 虚拟网卡),Shadowsocks 是 L5 代理(应用层 socks5)。抗 GFW:SS 2022 > 原生 WG(WG 握手特征已被建库)。性能:WG > SS(内核态 vs 用户态)。部署:WG 略简单。结论:内网互联用 WG,大陆主线反 DPI 用 SS 2022 或 VLESS Reality。
WireGuard 与 Shadowsocks 是两个完全不同层次的协议,但因为都被用作”跨境工具”,常被放在一起比较。本篇按”定位 / 加密 / 握手 / 性能 / 抗审查 / 部署”六块讲清楚,给出选型矩阵。
定位差异:L3 VPN vs L5 代理
| 维度 | WireGuard | Shadowsocks |
|---|---|---|
| OSI 层 | L3(IP 层) | L5(应用层) |
| 工作模式 | 创建虚拟网卡 wg0 | 启动一个本地 socks5 端口 |
| 加密粒度 | 全部 IP 数据包 | 单条 TCP 连接 |
| 路由控制 | 系统路由表 | 客户端规则集 |
| 应用支持 | 自动接管所有应用 | 需要应用走 socks5 / 系统代理 |
| UDP 转发 | 原生支持 | 支持(v3+) |
| 多用户 | 不擅长(需扩展) | 原生支持(v2022 多用户) |
WG 的设计模型是”两台机器之间打个 L3 隧道”,SS 的模型是”我的浏览器走代理出去”。这决定了所有后续差异。
加密机制
WireGuard
- 密钥交换:Curve25519
- 对称加密:ChaCha20-Poly1305
- 哈希:Blake2s
- HKDF:Blake2s + HKDF
- 握手协议:Noise Framework IKpsk2
设计原则:极简(whole codebase ~ 4000 行 C 代码)。
Shadowsocks 2022
- 密钥派生:Blake3
- 对称加密:AEAD-2022(AES-256-GCM 或 ChaCha20-Poly1305)
- 时间戳防重放:1 分钟窗口
- 多用户:服务端 ID 列表,每用户独立密钥
SS 2022 相比 SS(2014):
- 移除所有 stream cipher(AES-CFB / RC4)
- AEAD-2022 替换早期 AEAD(AES-128-GCM)
- 协议层增加 padding 抗流量分析
握手特征
握手层是 DPI 识别的关键。
WG 握手(被 GFW 建库的特征)
WG handshake message:
+----+----+-------+
|0x01|0x00 0x00 0x00|sender|...
固定 4 字节 magic 0x01 0x00 0x00 0x00 + Curve25519 公钥位置固定。GFW 在 2023 年起对 WG 握手的识别准确率 > 95%。原生 WG 在大陆主线网络几乎不可用——握手即被 RST。
SS 2022 握手
SS 2022 first packet:
+--------+------+--------+
|salt(32)|len(2)|ciphertext|
没有固定 magic。盐值每次随机 32 字节,密文长度可变。DPI 无法仅从首包识别。
抗审查办法
WG 想在大陆用:
- AmneziaWG:在标准 WG 上加握手前的随机字节包 + 包混淆
- WireGuard over Cloak:用 Cloak 把 WG 流量套一层 HTTPS 伪装
- WG over Wstunnel:WebSocket 隧道封装
SS 2022 想更稳:
- 启用
padding:每包随机长度填充 - 加
obfs-tlsplugin:把 SS 流量伪装成 HTTPS - 用
cloakplugin:完全模仿 HTTPS
性能实测
环境:东京 VPS(4 核 8G,10Gbps 带宽,AMD EPYC)
| 协议 | 单 TCP 吞吐 | 多 TCP 累计 | CPU 占用 |
|---|---|---|---|
| WireGuard(内核态) | 4.8 Gbps | 9.2 Gbps | 80% |
| WireGuard(用户态 wireguard-go) | 1.2 Gbps | 2.8 Gbps | 100% |
| Shadowsocks-rust(SS 2022) | 1.8 Gbps | 3.6 Gbps | 90% |
| Sing-Box(SS 2022) | 1.5 Gbps | 3.0 Gbps | 85% |
WG 内核态是绝对的性能王者。但家用 1Gbps 以下场景,两者差距不可感知。
抗 GFW 实测(2026-05)
| 协议 | 联通 | 电信 | 移动 |
|---|---|---|---|
| 原生 WireGuard | 频繁被 RST | 频繁被 RST | 偶尔可用 |
| AmneziaWG | 稳定 | 偶尔被 RST | 稳定 |
| WG over Cloak | 极稳定 | 极稳定 | 极稳定 |
| Shadowsocks(SS 2014) | 偶尔被封 | 偶尔被封 | 频繁限速 |
| Shadowsocks 2022 | 极稳定 | 稳定 | 稳定 |
| SS 2022 + cloak | 极稳定 | 极稳定 | 极稳定 |
结论:原生 WG 在大陆主线不可用,必须叠加混淆;SS 2022 仍是中文社区的稳定基线。
服务端部署对比
WireGuard(Linux)
# 安装
apt install wireguard
# 生成密钥
wg genkey | tee privkey | wg pubkey > pubkey
# /etc/wireguard/wg0.conf
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = <server-priv>
[Peer]
PublicKey = <client-pub>
AllowedIPs = 10.0.0.2/32
# 启动
wg-quick up wg0
systemctl enable wg-quick@wg0
10 分钟内可上线。
Shadowsocks 2022(sing-box)
{
"inbounds": [{
"type": "shadowsocks",
"listen": "::",
"listen_port": 8388,
"method": "2022-blake3-aes-256-gcm",
"password": "<base64-32-bytes-key>",
"multiplex": { "enabled": true, "padding": true }
}]
}
15 分钟内可上线。要加 obfs 再多 10 分钟。
客户端配置对比
WG(macOS)
下载 WireGuard.app → 导入 wg0.conf → 一键开启。
SS 2022(Karing / Sing-Box)
ss://2022-blake3-aes-256-gcm:<base64-key>@<host>:<port>?prefix=<padding>#<tag>
V2RayN / Karing / Hiddify 都支持直接粘贴此链接。
选型矩阵
| 场景 | 推荐 |
|---|---|
| 公司远程办公(连内网) | WireGuard |
| 两台 VPS 之间内网互联 | WireGuard |
| 个人跨境上网 + 大陆主线 | SS 2022 或 VLESS Reality |
| 海外节点反 DPI | SS 2022 |
| 多用户机场服务 | SS 2022(多用户原生) |
| 千兆 / 万兆专线 | WireGuard(内核态性能) |
| 给非技术家人用 | SS 2022(客户端友好) |
| AmneziaVPN 商业服务 | AmneziaWG |
混合部署:WG over Cloak
很多场景下两者其实可以合作。一个常见模式:
- VPS 上跑 SS 2022 + Cloak 端口 443
- Cloak 后端转发到本地 WG(51820)
- 客户端用 SS 客户端连 Cloak
- 系统流量通过 SS → Cloak → WG 隧道
这样既享受 WG 的 L3 全量代理能力,又用 Cloak + SS 抗 DPI。
实务订阅
无论选 WG 还是 SS,自建都要管 VPS + IP 纯净度 + 节点切换。如果你想要现成的”SS 2022 / VLESS Reality / Hysteria 2 / TUIC”多协议混合,并且能同时导出到 Clash / Sing-Box / V2Ray 客户端,直接用 兼容 Clash / Singbox / V2Ray 的订阅。
相关阅读
来源与最后核对
- WireGuard 官方:wireguard.com
- WireGuard 白皮书:wireguard.com/papers/wireguard.pdf
- Shadowsocks 2022 规范:shadowsocks.org/doc/sip022.html
- AmneziaWG 仓库:github.com/amnezia-vpn/amneziawg-go
本文最后实际验证日期:2026-05-19。