WireGuard 一键搭建:最轻量的 VPS 自建 VPN 教程

概述

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_PORTWireGuard 监听端口,默认 51820
WG_DEFAULT_ADDRESS客户端分配的 IP 段
51820/udpVPN 数据通道
51821/tcpWeb 管理面板

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

  1. 安装 WireGuard 官方 App(应用商店搜 WireGuard)
  2. 扫描面板上的二维码,或手动粘贴配置
  3. 点击 Connect,状态变成 Connected 就说明连上了

Windows / macOS

  1. 下载客户端:https://www.wireguard.com/install/
  2. 点击面板上的 Config,复制全部内容
  3. 在客户端里点 Import → Paste from clipboard
  4. 点击 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,其他不走?

编辑客户端配置文件,把 AllowedIPs0.0.0.0/0, ::/0 改成具体的网段。比如只代理某个内网地址。

Q: 忘记面板密码怎么办?

删掉数据目录里的密码文件,重启容器:

rm -rf data/wg-easy.env
docker compose restart

密码会恢复成默认的 password

Q: 能同时连多个设备吗?

可以。WireGuard Easy 支持无限客户端,每个设备独立密钥。面板上会显示每个设备的最后活跃时间。

总结

WireGuard Easy 把复杂的 VPN 配置简化成了点几下鼠标。从安装到能用,大概 10 分钟搞定。

现在连上你的手机,走到任何地方都能安全上网。

试试扫个二维码,看看你的外网 IP 变不变。

这篇文章对你有帮助吗?