内网穿透系列十六:使用 wg-easy 快速搭建基于 wireguard 的虚拟局域网,支持Docker部署


一、简介
-
• wg-easy 是一个快速启动 WireGuard 服务的开源工具
-
• WireGuard是基于UDP传输协议实现的隧道,性能比普通TCP隧道更高
-
• 提供 Web 的管理界面,可实现在线授权访问、新建客户端、各种服务配置等
-
• 支持Docker一键部署,轻量运行
-
• 开源地址参考:https://github.com/wg-easy/wg-easy
-
• 该工具的大致的整体架构可参考下图:
二、安装(Docker)
-
• 提前准备好Docker、docker-compose软件环境
-
• 新建docker-compose.yml配置文件,配置内容如下:
services:
wg-easy:
image: ghcr.io/wg-easy/wg-easy:15
container_name: wg-easy
volumes:
- ./wireguard:/etc/wireguard
- /lib/modules:/lib/modules:ro
ports:
- "51820:51820/udp" #这是服务端与子节点通信接口
- "51821:51821/tcp" #这是ui页面访问端口
restart: unless-stopped
environment:
- INSECURE=true # 允许 HTTP 访问
- PORT=51821 # Web UI 端口
- HOST=0.0.0.0 # Web UI 绑定地址
- DISABLE_IPV6=true # 禁用 IPv6
cap_add:
- NET_ADMIN
- SYS_MODULE
#如果需要在主机网络上搭建局域网,开启network_mode: host,如果启动报错的话,需要关闭sysctls、ports,然后在主机设置内核参数才能启动
#network_mode: host
sysctls:
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.src_valid_mark=1- • 配置完成,一键启动,执行下面命令
docker-compose up -d执行命令,成功启动容器参考下面截图

三、使用
1. 登录可视化界面,初始化配置
2. 下载并安装 wireguard 客户端,添加客户端配置
-
• wireguard 提供多种操作系统的客户端,下载地址:https://www+wireguard+com/install/
-
• 下载相应系统的安装包安装后,打开客户端软件添加客户端配置文件,并启动连接
-
• 如果是服务器环境,可以选择在Docker中启动 wireguard 客户端 新建 docker-compose.yml 配置文件,内容如下:
services:
wireguard-client:
image: linuxserver/wireguard
cap_add:
- NET_ADMIN
environment:
- TZ=Asia/Shanghai
volumes:
- ./config:/config
network_mode: host
#restart: unless-stopped #不要自动重启,防止网关异常,重启服务器也不行注意一定要先把有效的xxx.conf客户端配置文件复制为./config/wg0.conf或者直接复制到 ./config/wg_confs 目录下,否则可能出现服务器路由异常,会出现断网失联问题,可以修改客户端配置文件 ,限制指定IP才走隧道,如下AllowedIPs配置:
[Interface]
......
[Peer]
AllowedIPs = 10.8.0.0/24
......执行如下命令启动客户端
docker-compose up -d成功在Docker中启动wireguard客户端参考如下截图:

3. 通过虚拟IP访问其他客户端的服务实例
-
• 通过虚拟局域网IP访问http服务,如访问内网中的 portainer 容器管理服务
-
• 通过虚拟局域网IP访问TCP服务,如MySQL服务
四、总结
-
• wg-easy 提供了一个简单的方式来设置和管理 WireGuard 隧道
-
• 可以通过Docker方式快速部署,安装运维成本低
-
• 需要有一台公网IP的中转服务器,不建议在海外服务器部署国内使用
-
• WireGuard基于UDP传输,性能非常好,但是需要注意网络运营商的QOS干扰
推荐一下个人网站(本文内容如有错漏只会在个人博客更新):
