WireGuard:自建 VPN 的正确用法,和三个常见误解
先纠正三个最常见的误解:
- 误解一:它是用来「科学上网」的。它只是隧道,不是流量通道——你的出口在服务器那头,服务器在哪个国家决定你从哪出去;
- 误解二:配置越复杂越安全。安全取决于密钥管理和最小权限,不取决于配置长度;
- 误解三:装了它就没有隐私问题。流量到服务器之后仍然从服务器出去,等于把信任从运营商转移到了自己。
一、最实用的三个场景
- 在外网安全访问家里/公司的内网服务:不用暴露任何端口,手机连上隧道就等于回到局域网;
- 公共 Wi-Fi 下加密流量:机场、酒店的网络上,所有流量走隧道;
- 多台服务器组成内网:几台不同机房的机器通过它互联,数据库只在内网端口监听。
第一个场景价值最高:把自建服务从公网收回内网,攻击面直接归零。
二、服务端配置
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = 服务端私钥
[Peer]
# 手机
PublicKey = 手机公钥
AllowedIPs = 10.8.0.2/32
[Peer]
# 笔记本
PublicKey = 笔记本公钥
AllowedIPs = 10.8.0.3/32
要点:每个客户端一个 /32 地址,AllowedIPs 精确到单个 IP——这就是最小权限,客户端之间互相不可见。
三、客户端配置里最关键的一行
[Interface]
PrivateKey = 客户端私钥
Address = 10.8.0.2/32
DNS = 10.8.0.1
[Peer]
PublicKey = 服务端公钥
Endpoint = 服务器IP:51820
AllowedIPs = 10.8.0.0/24, 192.168.1.0/24
PersistentKeepalive = 25
AllowedIPs 决定了「哪些流量走隧道」:
| 设成 | 效果 | 适合 |
|---|---|---|
10.8.0.0/24 | 只有虚拟内网走隧道 | 访问家里服务 |
0.0.0.0/0 | 所有流量走隧道(全局代理) | 公共 Wi-Fi 加密 |
10.8.0.0/24, 192.168.1.0/24 | 内网 + 家庭局域网 | 远程访问 NAS |
四、密钥管理
一对公私钥就是一个身份。三条规则:
- 每台设备独立密钥,不要多设备共用一个;
- 私钥不进版本库、不进聊天记录;
- 设备丢了就删掉对应的 Peer 段——这是它唯一的「吊销」机制。
五、常见的失效原因
- 握手失败:密钥对不上,或
Endpoint端口写错; - 连上但访问不了内网:服务器没开 IP 转发(
net.ipv4.ip_forward=1)或没配 NAT; - 一段时间后断连:NAT 超时,加
PersistentKeepalive = 25; - 只有部分服务能访问:服务本身只监听
127.0.0.1,隧道进来的包到不了。
六、和 frp 的区别
两者常被混淆:
| WireGuard | frp | |
|---|---|---|
| 方向 | 客户端主动连服务器 | 内网服务主动连公网服务器 |
| 暴露方式 | 不暴露端口,进虚拟内网 | 把内网端口映射到公网 |
| 适合 | 自己访问自己的服务 | 需要给别人访问 |
如果只是你自己用,WireGuard 更安全;如果要分享给外部人,才需要 frp 那种映射方案。
七、别忘了它也会被墙
它的握手特征很固定,在某些网络环境下会被识别和阻断。真要在受限网络里用,需要额外做流量伪装——那属于另一个话题,且稳定性始终不如直连。
内网穿透的方案见 frp 内网穿透实战;组网控制面见 Headscale。
相关阅读
版权声明:如无特殊标注,文章均为本站原创,转载时请以链接形式注明文章出处。







评论