概述
OpenVPN 配置复杂、性能拉胯的年代早就过去了。WireGuard 是新一代 VPN 协议,内核级实现,延迟低、带宽高,配置文件就十几行代码。
不管你是想在外网安全访问家里 NAS,还是给手机开一个加密通道,WireGuard 都是目前最省心的选择。
这篇教程用 Docker 部署 WireGuard Easy(图形化管理面板),全程不需要记复杂命令。
准备工作
你需要以下条件:
- 一台 Linux VPS(Ubuntu 22.04 / Debian 12 均可)
- Docker 和 Docker Compose 已安装
- 一个域名(可选,直接用 IP 也能跑)
检查 Docker 是否就绪:
docker --version && docker compose version
两个都有输出就行。没装的话跑一行:
curl -fsSL https://get.docker.com | sh
安装步骤
1. 创建项目目录
mkdir -p ~/wireguard && cd ~/wireguard
2. 编写 docker-compose.yml
cat > docker-compose.yml << 'EOF'
version: "3.8"
services:
wireguard:
image: ghcr.io/wg-easy/wg-easy:latest
container_name: wg-easy
restart: unless-stopped
environment:
- WG_HOST=你的服务器IP或域名
- WG_PORT=51820
- WG_DEFAULT_ADDRESS=10.8.0.x
- WG_DEFAULT_DNS=1.1.1.1
- WG_PERSISTENT_KEEPALIVE=25
- WG_ALLOWED_IPS=0.0.0.0/0, ::/0
volumes:
- ./wg-data:/etc/wireguard
- ./data:/data
ports:
- "51820:51820/udp"
- "51821:51821/tcp"
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.src_valid_mark=1
EOF
把 WG_HOST 改成你的 VPS 公网 IP 或域名。
几个关键参数说明:
| 参数 | 作用 |
|---|---|
| WG_HOST | 服务器公网地址,客户端用来连接 |
| WG_PORT | WireGuard 监听端口,默认 51820 |
| WG_DEFAULT_ADDRESS | 客户端分配的 IP 段 |
| 51820/udp | VPN 数据通道 |
| 51821/tcp | Web 管理面板 |
3. 启动服务
docker compose up -d
等几秒检查状态:
docker compose ps
看到 wg-easy 状态为 Up 就对了。
4. 放行防火墙
VPS 需要开放 UDP 51820 端口:
# Ubuntu/Debian 用 ufw
sudo ufw allow 51820/udp
sudo ufw allow 51821/tcp
sudo ufw reload
# 或者用 firewalld
sudo firewall-cmd --permanent --add-port=51820/udp
sudo firewall-cmd --permanent --add-port=51821/tcp
sudo firewall-cmd --reload
云服务商控制台的安全组也要放行这两个端口。
5. 配置 IP 转发
WireGuard 需要开启 IP 转发才能让流量穿过隧道:
# 临时生效
sudo sysctl -w net.ipv4.ip_forward=1
# 永久生效
echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
重启容器让它重新加载配置:
docker compose restart
使用管理面板
浏览器打开 http://你的IP:51821。
默认密码是 password。登录后第一件事就是改密码。
面板功能很简单:
- Add Client — 添加新设备
- 每个客户端生成一个二维码,手机扫一下就能连
- 可以查看每个设备的在线状态和流量统计
- 支持删除客户端、批量导出配置
添加客户端后,你会看到:
- QR Code — 手机扫码直接连接
- Config — 复制文本配置,手动导入到客户端
- Traffic — 实时流量监控
客户端连接
Android / iOS
- 安装 WireGuard 官方 App(应用商店搜 WireGuard)
- 扫描面板上的二维码,或手动粘贴配置
- 点击 Connect,状态变成 Connected 就说明连上了
Windows / macOS
- 下载客户端:https://www.wireguard.com/install/
- 点击面板上的 Config,复制全部内容
- 在客户端里点 Import → Paste from clipboard
- 点击 Connect
Linux
sudo apt install wireguard-tools
sudo cp your-client.conf /etc/wireguard/wg0.conf
sudo systemctl start wg-quick@wg0
sudo systemctl enable wg-quick@wg0
验证连接
连上之后确认流量确实走了 VPN:
# 查看隧道接口
ip addr show wg0
# 测试连通性
ping -c 4 10.8.0.1
# 查看外网 IP 是否变成服务器 IP
curl ifconfig.me
ifconfig.me 返回的应该是你 VPS 的 IP 地址,说明流量已经通过 WireGuard 隧道出去了。
常见问题
Q: 连上了但上不了网?
IP 转发没开,或者防火墙规则不对。检查这两条:
sysctl net.ipv4.ip_forward
iptables -t nat -L POSTROUTING -v -n
第一条应该输出 1。第二条能看到 MASQUERADE 规则。
Q: 手机连上很快,电脑连上很慢?
检查电脑端的 DNS 设置。WireGuard Easy 默认 DNS 是 1.1.1.1,如果你的网络环境有 DNS 污染,换成 223.5.5.5(阿里 DNS)试试。
Q: 怎么让特定流量走 VPN,其他不走?
编辑客户端配置文件,把 AllowedIPs 从 0.0.0.0/0, ::/0 改成具体的网段。比如只代理某个内网地址。
Q: 忘记面板密码怎么办?
删掉数据目录里的密码文件,重启容器:
rm -rf data/wg-easy.env
docker compose restart
密码会恢复成默认的 password。
Q: 能同时连多个设备吗?
可以。WireGuard Easy 支持无限客户端,每个设备独立密钥。面板上会显示每个设备的最后活跃时间。
总结
WireGuard Easy 把复杂的 VPN 配置简化成了点几下鼠标。从安装到能用,大概 10 分钟搞定。
现在连上你的手机,走到任何地方都能安全上网。
试试扫个二维码,看看你的外网 IP 变不变。