剪藏#剪藏#计算机低手

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

2026 年 1 月 7 日1 分钟
分享Twitter / XTelegram微博
内网穿透系列十六:使用 wg-easy 快速搭建基于 wireguard 的虚拟局域网,支持Docker部署 封面

Notion image

一、简介

  • • wg-easy 是一个快速启动 WireGuard 服务的开源工具

  • • WireGuard是基于UDP传输协议实现的隧道,性能比普通TCP隧道更高

  • • 提供 Web 的管理界面,可实现在线授权访问、新建客户端、各种服务配置等

  • • 支持Docker一键部署,轻量运行

  • • 开源地址参考:https://github.com/wg-easy/wg-easy

  • • 该工具的大致的整体架构可参考下图:

二、安装(Docker)

  • • 提前准备好Docker、docker-compose软件环境

  • • 新建docker-compose.yml配置文件,配置内容如下:

JAVASCRIPT
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
  • • 配置完成,一键启动,执行下面命令
JAVASCRIPT
docker-compose up -d

执行命令,成功启动容器参考下面截图

Notion image

三、使用

1. 登录可视化界面,初始化配置

2. 下载并安装 wireguard 客户端,添加客户端配置

  • • wireguard 提供多种操作系统的客户端,下载地址:https://www+wireguard+com/install/

  • • 下载相应系统的安装包安装后,打开客户端软件添加客户端配置文件,并启动连接

  • • 如果是服务器环境,可以选择在Docker中启动 wireguard 客户端 新建 docker-compose.yml 配置文件,内容如下:

JAVASCRIPT
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配置:

JAVASCRIPT
[Interface]
......
[Peer]
AllowedIPs = 10.8.0.0/24
......

执行如下命令启动客户端

JAVASCRIPT
docker-compose up -d

成功在Docker中启动wireguard客户端参考如下截图:

Notion image

3. 通过虚拟IP访问其他客户端的服务实例

  • • 通过虚拟局域网IP访问http服务,如访问内网中的 portainer 容器管理服务

  • • 通过虚拟局域网IP访问TCP服务,如MySQL服务

四、总结

  • • wg-easy 提供了一个简单的方式来设置和管理 WireGuard 隧道

  • • 可以通过Docker方式快速部署,安装运维成本低

  • • 需要有一台公网IP的中转服务器,不建议在海外服务器部署国内使用

  • • WireGuard基于UDP传输,性能非常好,但是需要注意网络运营商的QOS干扰

推荐一下个人网站(本文内容如有错漏只会在个人博客更新):

Notion image

原文地址: https://mp.weixin.qq.com/s/WxdTY1f0C6j_EwK5XuT7ag

相关文章