opsx-tools a14d9e62e6 feat: 日志中心 + GRE协议支持 + 流量监控 + 部署脚本
- 新增日志中心功能 (api/logapi.go + Logs.vue)
- 新增GRE协议服务支持 (service/gre/)
- 新增流量监控组件 (TrafficChart.vue)
- 新增L2TP/IPSec测试用例
- 新增日志轮转服务 (logrotate.go)
- 新增部署脚本 (scripts/install.sh, uninstall.sh, service文件)
- 更新i18n国际化文件
- 优化后端API和前端路由
2026-07-25 08:50:34 +08:00

VPN 专线管理平台

Gin + Vue3 + SQLite 的多协议 VPN 专线 Web 管理平台:单二进制交付、配置简单、管理便捷、可扩展自定义协议。

支持协议

协议 实现方式 场景
WireGuard 系统 wg / wg-quick,多 Peer、NAT/MTU、流量累计 内部接入、移动办公(首选)
IPSec StrongSwan swanctl,厂商模板一键套用 第三方对接、站点互联
IKEv2 远程接入 StrongSwan Road Warrior,PSK + EAP-MSCHAPv2 员工手机/笔记本原生拨号
L2TP/IPSec StrongSwan + xl2tpd,支持多拨号用户 手机/老设备兼容
FRP 直接管理 frps / frpc(TOML),含 STCP/XTCP 内网穿透、端口映射
OpenVPN 进程管理 + PKI;UDP/TCP 可切换;证书/密码 + TOTP MFA 老项目兼容
自定义协议 插件命令钩子(Create/Start/Stop/Status/Config) 任意协议扩展

核心功能

  • 专线列表:名称/协议/状态/流量/到期时间,一键启停、编辑、删除、下载配置、WireGuard 二维码
  • 创建向导:选协议 → 依赖检测门控(未就绪不可选,引导下载/安装)→ 填参数(高级折叠)→ 必填校验
  • 在线会话:跨协议统一展示在线用户、公网 IP、VPN IP、连接时长、流量;支持踢下线
  • 流量审计:连接审计日志(connect/disconnect/auth_fail)、异常突发流量告警、管理员手动踢下线
  • 流量配额:隧道级配额(GB)、超额动作(告警/停止/限速)、周期重置(日/月)
  • 协议引擎管理:FRP/OpenVPN 支持平台一键下载部署;WireGuard/StrongSwan 显示系统包安装命令
  • WireGuard Peer 管理:详情内增删 Peer、按设备下载配置/二维码
  • 拨号用户:OpenVPN / L2TP / IKEv2 共用用户表;支持从平台用户导入、批量创建、LDAP 浏览导入
  • IPSec 第三方对接专页:设备模板预置 Phase1/Phase2 参数、双方参数一致性检查、一键连通性测试
  • 节点管理:多中继节点,远程节点支持 SSH 凭证验证(密码/私钥、即时测试连接)
  • 专线日志:操作栏「更多 → 查看日志」SSE 实时输出实例进程日志
  • 安全:PSK/私钥 AES-GCM 加密存储、配置文件 0600 权限、操作审计
  • 访问控制:admin / operator / viewer;首登强制改密;登录防爆破;TOTP MFA + 备用码;LDAP

快速开始

本地构建与运行

./run.sh run          # 构建并运行(默认 admin / admin123)
./run.sh dev          # 开发模式(前后端分离)
./run.sh restart      # 重新构建并重启
./run.sh stop         # 停止服务

Linux 服务器部署

# 1. 交叉编译 Linux 二进制(在 macOS 上)
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o opsx-vpn ./backend

# 2. 上传到服务器
scp opsx-vpn user@server:/opt/opsx-vpn/
cd /opt/opsx-vpn && chmod +x opsx-vpn

# 3. 安装系统依赖(按需)
apt install -y wireguard-tools openvpn strongswan strongswan-swanctl iptables
# FRP 无需系统包 —— 平台 UI 内点「下载部署」自动从 GitHub 下载到 data/bin/

# 4. 启动(生产建议用 systemd 管理)
./opsx-vpn   # 监听 :8080,数据目录 ./data

systemd 服务(生产推荐)

# /etc/systemd/system/opsx-vpn.service
[Unit]
Description=VPN Management Platform
After=network.target

[Service]
Type=simple
WorkingDirectory=/opt/opsx-vpn
ExecStart=/opt/opsx-vpn/opsx-vpn
Restart=always
RestartSec=5
# 环境变量按需调整
Environment=VPN_LISTEN_ADDR=:8080
Environment=VPN_DATA_DIR=/opt/opsx-vpn/data
# WireGuard/OpenVPN 需要 root 权限(创建 TUN 设备 + iptables)
# 如需降权,需配置 NET_ADMIN capability

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable --now opsx-vpn
journalctl -u opsx-vpn -f   # 查看日志

防火墙 / 安全组端口

部署到云服务器时,需开放以下端口:

VPN 数据通道(对公网开放)

端口 协议 类型 用途
UDP 51820 WireGuard UDP WG 默认监听端口(可在创建时改)
UDP 1194 OpenVPN UDP OpenVPN 默认端口(可改 TCP)
TCP 1194 OpenVPN TCP OpenVPN TCP 模式(如选 TCP)
UDP 500 IPSec / IKEv2 / L2TP UDP IKE 密钥交换
UDP 4500 IPSec / IKEv2 / L2TP UDP NAT-T 穿透
UDP 1701 L2TP UDP L2TP 隧道
TCP 7000 FRP TCP frps 绑定端口(客户端连接用)

管理(仅限你的 IP 或内网)

端口 协议 类型 用途
TCP 8080 管理平台 TCP Web UI + API(勿对公网开放,建议 Nginx HTTPS 后改 443)
TCP 22 SSH TCP 远程管理

安全组配置示例

# VPN 数据通道(对公网开放)
UDP  500/4500    0.0.0.0/0    # IPSec/IKEv2/L2TP 密钥交换 + NAT-T
UDP  51820       0.0.0.0/0    # WireGuard
UDP  1194        0.0.0.0/0    # OpenVPN UDP
TCP  1194        0.0.0.0/0    # OpenVPN TCP(如启用)
UDP  1701        0.0.0.0/0    # L2TP
TCP  7000        0.0.0.0/0    # FRP server

# 管理(仅限你的 IP)
TCP  8080        你的IP/32    # 管理 UI
TCP  22          你的IP/32    # SSH

注意:IPSec 必须同时开放 UDP 500 + 4500(缺一个连不上)。管理端口 8080 切勿对公网开放。仅用 WireGuard 最简部署只需 3 个端口:UDP 51820 + TCP 8080 + TCP 22。

协议依赖安装

协议 安装方式 平台下载
WireGuard apt install -y wireguard-tools ❌ 系统包
OpenVPN apt install -y openvpn ✅ GitHub Release / 系统包
StrongSwan (IPSec/IKEv2/L2TP) apt install -y strongswan strongswan-swanctl ❌ 系统包
FRP 无需系统包 ✅ 平台 UI「下载部署」自动从 GitHub 下载

在「总览 → 协议引擎状态」表中,未就绪的协议会显示「下载部署」或「安装命令」按钮。

环境变量

变量 默认 说明
VPN_LISTEN_ADDR :8080 监听地址
VPN_DATA_DIR ./data 数据目录(SQLite、密钥、实例配置、下载的二进制)

常用命令

命令 说明
./run.sh run 构建并后台运行单二进制(默认)
./run.sh build 全量构建(前端 + 后端二进制)
./run.sh dev 开发模式(前后端分离)
./run.sh stop 停止所有服务
./run.sh restart 重新构建并重启
./run.sh status 查看服务状态

项目结构

frontend/               # Vue3 + Element Plus 前端
backend/
  main.go               # Gin 入口(内嵌前端 embed.FS)
  internal/
    api/                # REST 路由与鉴权
    core/               # Protocol 统一接口 + 注册中心
    model/              # GORM 数据模型
    store/              # SQLite + AES-GCM 密钥存储
    service/            # 协议实现
      wireguard/ ipsec/ ikev2/ l2tp/ frp/ openvpn/
      custom/           # 自定义协议插件
    monitor/            # 状态/流量/会话/配额采集引擎
    sessionmgr/         # 在线会话同步 + 连接审计
    trafficmgr/         # 流量配额 + 异常检测 + 限速
    binmgr/             # 协议二进制下载部署 + 安装引导
    sshutil/            # SSH 连接测试(节点验证)

交付形态

  • 单二进制:前端构建后通过 go:embed 内嵌进 Go 二进制,./opsx-vpn 单文件即可运行(含 SPA + REST API + SQLite)
  • 不依赖 Docker、不依赖外部数据库
  • 纯静态编译:CGO_ENABLED=0 可交叉编译到任意 Linux/Windows
S
Description
No description provided
Readme
3.8 MiB
0 Stars 1 Watchers 0 Forks
Languages
Go 59.7%
Vue 25.2%
Rust 5.6%
TypeScript 3.8%
JavaScript 2.4%
Other 3.3%