技术选型
-
SoftEther VPN:
- 服务端: SoftEther VPN Server
- 客户端: SoftEther VPN Client (官方提供,跨平台), 或者其他兼容的 VPN 客户端 (如 OpenVPN 客户端, 系统内置的 L2TP/IPsec 客户端等)
-
OpenVPN Access Server:
- 服务端: OpenVPN Access Server
- 客户端: OpenVPN Connect (官方提供,跨平台), 或者其他兼容的 OpenVPN 客户端
-
WireGuard (通过 Algo 或 wg-easy):
- 服务端: Algo 或 wg-easy 部署的 WireGuard 服务
- 客户端: WireGuard 官方客户端 (跨平台)
-
Pritunl:
- 服务端: Pritunl Server
- 客户端: Pritunl Client (官方提供,跨平台), 或者其他兼容的 OpenVPN 客户端.
方案选择
选择 wg-easy + WireGuard?**
- 简单性: WireGuard 的配置非常简洁,而 wg-easy 进一步简化了部署和管理过程,提供了图形化界面。
- 速度: WireGuard 以其卓越的性能而闻名,比 OpenVPN 和 IPsec 更快。
- 安全性: WireGuard 使用最先进的加密技术,并且代码库非常小,易于审计。
- 未来趋势: WireGuard 正在迅速成为 VPN 协议的新标准,许多大型公司和项目都在采用它。
- Docker部署: 方便部署、更新和迁移。
详细搭建步骤:
1. 准备工作
- 服务器:
- 一台具有公网 IP 地址的服务器(VPS 或 独立服务器)。
- 操作系统:推荐使用 Linux 发行版(如 Ubuntu Server、Debian、CentOS)。
- 服务器需要开放 UDP 51820 端口 (WireGuard 默认端口) 和 TCP 51821 端口 (wg-easy Web UI 端口). 如果你使用云服务商, 需要在安全组/防火墙规则中放行这两个端口.
- 域名 (可选,强烈推荐):
- 一个域名,例如
vpn.yourcompany.com
。 - 将域名解析到您的服务器公网 IP 地址。
- 一个域名,例如
- 本地环境:
- 安装了 Docker 和 Docker Compose 的电脑(用于管理服务器上的 wg-easy 容器)。
2. 服务器端部署 (使用 wg-easy)
-
SSH 连接到您的服务器。
-
安装 Docker 和 Docker Compose:
1
2
3
4
5
6
7
8
9
10
11
12# Ubuntu/Debian
sudo apt update
sudo apt install docker.io docker-compose -y
# CentOS
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io -y
sudo systemctl start docker
sudo systemctl enable docker
sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose #注意, 这个版本号可能会过时, 请去 https://github.com/docker/compose/releases/ 确认最新版本.
sudo chmod +x /usr/local/bin/docker-compose -
创建
docker-compose.yml
文件:1
nano docker-compose.yml
将以下内容复制到文件中,并根据您的实际情况修改:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26version: "3.8"
services:
wg-easy:
image: weejewel/wg-easy
container_name: wg-easy
cap_add:
- NET_ADMIN
- SYS_MODULE
environment:
- WG_HOST=your_server_public_ip_or_domain # 替换为你的服务器公网 IP 或域名
- PASSWORD=your_web_ui_password # 替换为 Web UI 的密码,务必设置强密码!
- WG_DEFAULT_ADDRESS=10.8.0.x # VPN 客户端的 IP 地址段,不要与内网 IP 冲突
- WG_DEFAULT_DNS=1.1.1.1 # 默认 DNS 服务器,可以改为内网 DNS 或其他公共 DNS
# 其他可选环境变量(可选):
# - WG_PORT=51820 # WireGuard 监听端口,默认为 51820
# - WG_ALLOWED_IPS=0.0.0.0/0 # 允许连接的客户端 IP 范围,默认为所有 IP
# - WG_MTU=1420 # MTU 值,通常不需要修改
volumes:
- ./wg-data:/etc/wireguard # 将 WireGuard 配置持久化到宿主机的 ./wg-data 目录
ports:
- "51820:51820/udp" # WireGuard 端口
- "51821:51821/tcp" # wg-easy Web UI 端口
restart: unless-stopped
sysctls:
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.src_valid_mark=1 -
启动 wg-easy 容器:
1
docker-compose up -d
-
确认容器正在运行:
1
docker ps
应该能看到名为
wg-easy
的容器正在运行。
3. 配置 wg-easy Web UI
- 在浏览器中访问
http://your_server_ip:51821
或http://your_domain:51821
。 - 使用您在
docker-compose.yml
文件中设置的密码登录。 - 在 Web UI 中创建客户端配置:
- 点击 “New” 按钮。
- 输入客户端名称(例如 “user1”)。
- 点击 “Create” 按钮。
- 点击新创建的客户端旁边的下载按钮,下载
.conf
配置文件。 或者点击二维码图标, 用手机客户端扫描二维码.
4. 客户端配置
-
下载并安装 WireGuard 客户端:
- Windows、macOS、Android、iOS: 从 WireGuard 官网下载并安装相应的客户端:https://www.wireguard.com/install/
- Linux: 使用包管理器安装:
1
2
3
4
5
6# Ubuntu/Debian
sudo apt install wireguard
# CentOS
sudo yum install epel-release
sudo yum install wireguard-tools
-
导入客户端配置文件:
- Windows、macOS、Android、iOS: 打开 WireGuard 客户端,点击 “Import tunnel(s) from file”,选择您从 wg-easy Web UI 下载的
.conf
文件。 - Linux: 将
.conf
文件复制到/etc/wireguard/
目录,并重命名为wg0.conf
(或其他您喜欢的名称, 例如client1.conf
):1
sudo cp user1.conf /etc/wireguard/wg0.conf
- Windows、macOS、Android、iOS: 打开 WireGuard 客户端,点击 “Import tunnel(s) from file”,选择您从 wg-easy Web UI 下载的
-
连接 VPN:
- Windows、macOS、Android、iOS: 在 WireGuard 客户端中,点击您导入的配置文件的 “Activate” 或 “Connect” 按钮。
- Linux: 使用
wg-quick
命令启动 VPN 连接:1
2
3
4
5sudo wg-quick up wg0 # wg0 是您的配置文件名(不带 .conf)
# 断开连接:
sudo wg-quick down wg0
#设置开机自启
sudo systemctl enable wg-quick@wg0
5. 测试连接
- 连接 VPN 后,访问一个可以显示您 IP 地址的网站(例如 https://www.whatismyip.com/),确认您的 IP 地址已变为服务器的公网 IP 地址。
- 尝试访问您内网的资源,确认可以正常访问。
后续维护:
- 添加新用户: 在 wg-easy Web UI 中创建新的客户端配置即可。
- 撤销用户: 在 wg-easy Web UI 中删除相应的客户端配置。
- 更新 wg-easy:
1
2docker-compose pull
docker-compose up -d - 查看 WireGuard 状态:
1
sudo wg show