如何用 WireGuard 给全网设备挂上内网 VPN

2025.7.2 杂七杂八 1309
33BLOG智能摘要
WireGuard 实现全网设备接入内网的方法包括服务器和客户端配置。服务器端安装依赖后生成密钥,配置接口参数如地址、端口和私钥,并设置防火墙规则。客户端配置需特别注意 Android 需手动填写 DNS 否则无法保存,而 macOS 则自动处理。设置中包括接口地址、DNS、公钥、路线和服务器端点等参数。优化建议添加 MTU 参数和切换网络后重连。注意 WireGuard 默认无流量加密,建议限制 AllowedIPs 以保护敏感业务数据。
— 此摘要由33BLOG基于AI分析文章内容生成,仅供参考。

实战指南:用 WireGuard 打通全网设备的 VPN 内网通道

如何用 WireGuard 给全网设备挂上内网 VPN

大家好,我是 33blog 的运维老司机。今天要分享的是我折腾 WireGuard 三个月的实战经验——如何用这个轻量级 VPN 让手机、笔记本、云服务器全部接入同一个内网。相比 OpenVPN 那些老前辈,WireGuard 的配置简单得让人感动,但有些坑还是得提前预警。

为什么选择 WireGuard?

去年公司要求全员接入内网时,我测试过各种方案:OpenVPN 配置复杂得像在写论文,IPSec 的 NAT 穿透让人头秃,直到遇见 WireGuard。它的优势太明显了:

  • 内核级性能,传输速度比 OpenVPN 快 2-3 倍
  • 配置文件就一个文本文件,改完立即生效
  • 移动端切换网络时自动重连,不会像 IPSec 那样断线

服务器端配置(Linux 示例)

我的 VPS 是 Ubuntu 20.04,先装依赖包:

sudo apt update
sudo apt install wireguard resolvconf

生成服务器密钥对(千万保管好私钥):

wg genkey | sudo tee /etc/wireguard/private.key
sudo cat /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key

创建配置文件 /etc/wireguard/wg0.conf,重点注意:

[Interface]
Address = 10.8.0.1/24  # 内网网段
ListenPort = 51820      # 记得开防火墙
PrivateKey = <服务器私钥>
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT

客户端配置踩坑实录

给手机(Android)配置时遇到大坑:WireGuard 官方APP要求必须填写 DNS,否则无法保存配置。而 macOS 客户端却不需要,这兼容性…

这是我的手机配置模板:

[Interface]
PrivateKey = <客户端私钥>
Address = 10.8.0.2/24
DNS = 8.8.8.8  # 必须项!

[Peer]
PublicKey = <服务器公钥>
AllowedIPs = 10.8.0.0/24
Endpoint = your-server.com:51820
PersistentKeepalive = 25  # 保持 NAT 穿透

网络优化技巧

实测发现两个提速秘诀:

  1. 在服务器 wg0.conf 添加 MTU = 1280(避免某些网络分片)
  2. 手机连接 WiFi 和 5G 时,用 wg-quick down wg0 切换网络后立即重连

最后提醒:WireGuard 默认没有流量加密(!),敏感业务记得在 AllowedIPs 里指定路由,别把所有流量都走 VPN。

现在我的设备们终于能在同一个 10.8.0.0 网段里愉快玩耍了,有什么问题欢迎在评论区交流~

评论

  • WireGuard的配置确实比OpenVPN简单多了,最近也准备试试看

  • 请问MTU设置成1280对性能影响大吗?🤔

  • 老哥写得真详细,收藏了!之前被OpenVPN折腾得不行

  • 移动端必须填DNS这个设计真的很迷,我第一次配置也卡在这里半天

  • 实测WireGuard确实稳定,在公司连回家里的NAS再也不掉线了

  • 为什么我的Ubuntu22.04装完后提示找不到wg命令?有人遇到过吗

  • 这个教程比官方文档清楚多了,新手友好👍

  • 正在考虑要不要把公司的VPN迁移到WireGuard,看完更有信心了