WireGuard 是一个开源的 VPN 协议和软件,特点是快、省电、代码量小。它只用一种现代加密组合,没有可选项可挑,一份配置文件不到二十行,手机上一个二维码就能导入。Linux 内核从 5.6 起原生内置它,Windows、macOS、iOS、Android 都有官方客户端。缺点同样明确:它跑在 UDP 上,流量特征固定,在识别并干扰 VPN 的网络里很容易被限速或断连。所以它是「网络正常时的首选」,而不是「任何环境的万能钥匙」。
WireGuard 的工作原理
WireGuard 用公钥密码学做身份:每一端生成一对密钥,把公钥交给对方。客户端和服务器各自持有对方的公钥,握手时互相验证,然后用协商出的会话密钥加密之后的所有数据包。整个过程像 SSH 的密钥登录,没有用户名密码,没有证书链。
它的路由规则叫 AllowedIPs:写在客户端配置里,表示「哪些目标地址走隧道」。写 0.0.0.0/0, ::/0 就是全部流量都走,写某个网段就只有那个网段走。同一个字段在服务器端表示「允许这个客户端使用哪些源地址」。理解了这一个字段,WireGuard 就基本理解了。
配置文件逐行解释
一份典型的客户端配置:
``` [Interface] PrivateKey = 客户端私钥 Address = 10.0.0.2/32 DNS = 10.0.0.1
[Peer] PublicKey = 服务器公钥 Endpoint = 服务器域名或IP:51820 AllowedIPs = 0.0.0.0/0, ::/0 PersistentKeepalive = 25 ```
PrivateKey:本机私钥,只存在本机,泄露等于账号泄露。Address:隧道里本机的虚拟地址。DNS:隧道建立后使用的 DNS。填隧道内的地址,否则域名解析会绕过隧道,见DNS 泄露是什么意思。PublicKey:服务器公钥,用来验证对面确实是你的服务器。Endpoint:服务器地址和端口,默认 51820,可以改成任意端口。AllowedIPs:走隧道的目标范围,0.0.0.0/0, ::/0表示 IPv4 和 IPv6 全走。PersistentKeepalive:每隔多少秒发一个空包,手机在 NAT 后面必须设,一般 25。
服务商给的配置或二维码已经包含这些字段,自己不用改;自建服务器则需要在服务器端为每个客户端加一段 [Peer]。
Windows 和 macOS
- 从官网 wireguard.com 下载安装客户端(macOS 也可在 App Store 安装)。
- 打开客户端,「导入隧道」选择
.conf文件,或者「新建空隧道」把配置粘进去。 - 点「连接」。任务栏图标变绿,状态里的「最近握手」有时间,就说明通了。
- 打开我的 IP 是什么确认显示的是服务器地址。
Windows 上有一个常见坑:客户端默认开启 Kill Switch 一类的「阻止未经隧道的流量」选项,隧道断开时会完全断网,这是正确行为,不是故障。另一个坑是 IPv6:如果服务器不支持 IPv6 却写了 ::/0,IPv6 站点会打不开,删掉 ::/0 即可。
iOS 和 Android
- 安装官方 WireGuard 应用(App Store / Google Play)。
- 点「+」,选「从二维码创建」扫描服务商提供的二维码,或「从文件导入」。
- 首次连接时系统会请求添加 VPN 配置,允许。
- Android 上建议在系统设置的 VPN 项里开启「始终开启的 VPN」和「屏蔽未使用 VPN 的连接」,相当于系统级 Kill Switch。
- 手机在移动网络下如果频繁断线,把
PersistentKeepalive设为 25,并在电池设置里把应用设为「不受限制」。
按需隧道(On-Demand):iOS 客户端可以设置「连接到某些 Wi-Fi 时自动开启」,适合公共 Wi-Fi 场景。
OpenWrt 路由器
适合让电视、游戏机这类装不了客户端的设备一起走隧道。
- 安装软件包:
opkg update && opkg install wireguard-tools luci-proto-wireguard。 - 网络 → 接口 → 添加新接口,协议选 WireGuard VPN,填入私钥和
Address。 - 在「对端」标签添加服务器公钥、Endpoint、AllowedIPs 和 Keepalive,勾选「路由允许的 IP」。
- 防火墙里把新接口放进 wan 区域(或新建区域),确保 lan → 该区域允许转发并开启 IP 动态伪装。
- DNS:在 DHCP/DNS 设置里把上游 DNS 改为隧道内地址,否则全屋 DNS 泄露。
- 重启网络,从内网设备打开我的 IP 是什么验证。
路由器的 CPU 决定速度。入门级路由器跑 WireGuard 大约几十到一两百兆,够看视频;想跑满千兆需要 x86 或高端 ARM 平台。
WireGuard 还是 VLESS
两者解决的是不同问题。WireGuard 追求最快、最省电;VLESS + Reality 追求让隧道看起来像普通 HTTPS。经验规则:
- 家庭宽带、正常的移动网络、海外:WireGuard,速度和续航都最好。
- 会识别并干扰 VPN 的网络(部分校园网、企业网、某些地区的运营商):VLESS + Reality,WireGuard 在这种环境里往往连不上或被限速。
- 不确定:先试 WireGuard,连不上或明显限速就换 VLESS。
VLESS 为什么更难被识别,在VLESS 与 Reality里有详细解释。如果你用的是机场订阅,它通常同时给出两种节点,客户端里切换即可。
排错速查
- 「最近握手」一直为空:服务器地址或端口不通、公钥填错、或者本地时间偏差太大。
- 握手成功但打不开网页:
AllowedIPs没包含目标、DNS 没走隧道、或 IPv6 配置与服务器不匹配。 - 手机几分钟后断线:没设 Keepalive,或系统把应用后台冻结了。
- 速度只有几兆:换一个更近的服务器,或者路由器 CPU 到顶了。
404 VPN 的客户端同时内置 WireGuard 和 VLESS + Reality,按网络情况自动选择,DNS 在隧道内解析,并带 Kill Switch;需要在路由器上用的话也可以导出 WireGuard 配置。连接方式见工作原理,开始使用请到首页。