[点晴永久免费OA]OmniWire:一个功能强大的网络安全网关系统,集成了 WireGuard VPN 服务端管理、TCP/UDP 端口转发、智能端口管理等核心功能
|
admin
2026年4月6日 11:56
本文热度 46
|
项目简介
OmniWire 是一个功能强大的网络安全网关系统,集成了 WireGuard VPN 服务端管理、TCP/UDP 端口转发、智能端口管理等核心功能。采用 GoFrame 作为后端框架,Vue 3 作为前端框架,提供现代化的 Web 管理界面。
项目地址:https://github.com/weideng365/OmniWire
核心技术栈
后端
| | |
|---|
| | |
| | 企业级 Web 开发框架,提供路由、ORM、配置管理等 |
| | WireGuard 纯 Go 实现,无需系统内核模块 |
| | 高性能、轻量级网络框架,用于 TCP/UDP 端口转发 |
| | |
| | |
| | |
| | |
| | |
前端
| | |
|---|
| | |
| | |
| | |
| | |
| | |
| | HTTP 客户端(含 Bearer Token 拦截器) |
网络协议
已完成功能清单
WireGuard VPN 服务端
| |
|---|
| 管理 WireGuard 接口、监听端口、密钥对、MTU、DNS 等 |
| |
| |
| |
| |
| |
| |
| |
TCP/UDP 端口转发
智能端口管理
系统管理
| |
|---|
| 基于 JWT 的用户登录认证,Bearer Token 鉴权 |
| |
| |
| |
| 实时显示 WireGuard 状态、Peer 数、转发规则数、活跃连接数 |
| |
| |
技术架构
┌─────────────────────────────────────────────────────────────┐
│ Web Browser │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Vue 3 Frontend │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ Dashboard │ │ WireGuard │ │ Port Forward │ │
│ │ │ │ Management │ │ Management │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│ Axios + Bearer Token
▼
┌─────────────────────────────────────────────────────────────┐
│ GoFrame Backend │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ JWT Middleware (白名单: /login, /health) │ │
│ └──────────────────────────────────────────────────────┘ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ API Layer │ │ Service │ │ Data Access │ │
│ │ Controller │ │ Layer │ │ Layer (DAO) │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Core Services │ │
│ │ ┌───────────┐ ┌───────────┐ ┌───────────────────┐ │ │
│ │ │ WireGuard │ │ TCP/UDP │ │ Port │ │ │
│ │ │ Service │ │ Forward │ │ Manager │ │ │
│ │ └───────────┘ └───────────┘ └───────────────────┘ │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ System Layer │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ WireGuard │ │ iptables/ │ │ SQLite/MySQL │ │
│ │ Kernel │ │ nftables │ │ Database │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
快速开始
环境要求
- 操作系统: Linux (推荐 Ubuntu 20.04+, Debian 11+, CentOS 8+),Windows 需管理员权限
- 数据库: SQLite 3(默认,零配置)/ MySQL 8.0+(可选)
安装部署
1. 克隆项目
git clone https://github.com/weideng365/OmniWire.git
cd OmniWire
2. 启动后端服务
cd server
go mod tidy
go run main.go # 默认监听 :8110
3. 启动前端开发服务器
cd web
npm install
npm run dev # 默认监听 :4000,自动代理 /api 到 :8110
4. 访问系统
打开浏览器访问 http://localhost:4000
首次登录后请立即在「系统设置」中修改默认密码。
Docker 部署
docker-compose up -d
容器暴露端口:
51820/udp — WireGuard VPN
生产构建
# 构建前端(输出到 server/resource/public)
cd web && npm run build
# 构建后端二进制(SQLite 需要 CGO_ENABLED=1)
cd server && CGO_ENABLED=1 go build -o omniwire main.go
# 运行
./omniwire
使用手册
登录与鉴权
- 输入用户名和密码登录,系统返回 JWT Token
- Token 有效期默认 24 小时,过期后自动跳转登录页
- 所有 API 请求(除
/login 和 /health)需携带 Authorization: Bearer <token> 头
WireGuard 管理
- 进入「WireGuard」页面,首次使用需点击「启动」开启服务
- 在「配置」中设置服务器公网 IP(Endpoint)、监听端口、子网等参数
- 点击「添加客户端」创建 Peer,系统自动分配 IP 和生成密钥对
- 通过「下载配置」或「扫描二维码」将配置导入客户端设备
端口转发
- 填写规则名称、协议(TCP/UDP)、监听端口、目标地址和端口
端口管理
系统设置
- 需输入旧密码验证身份,修改成功后自动跳转登录页重新登录
配置说明
配置文件位于 server/manifest/config/config.yaml
# 服务器配置
server:
address:":8110" # 监听地址(Docker 中为 :8080)
# 数据库配置
database:
default:
type:"sqlite"
link:"sqlite::@file(./data/omniwire.db)"
# WireGuard 配置
wireguard:
interface:"omniwire" # 接口名称
listenPort:51820 # 监听端口
addressRange:"10.66.66.0/24"# VPN 子网
# 安全配置
security:
jwtSecret:"omniwire-secret-key-change-in-production"# 生产环境务必修改!
tokenExpire:"24h" # Token 过期时间
authEnabled:true # 是否启用登录验证
API 接口
| | | |
|---|
| /api/v1/system/login | | |
| /api/v1/system/change-password | | |
| /api/v1/system/info | | |
| /api/v1/system/dashboard | | |
| /api/v1/system/health | | |
| /api/v1/wireguard/status | | |
| /api/v1/wireguard/start | | |
| /api/v1/wireguard/stop | | |
| /api/v1/wireguard/restart | | |
| /api/v1/wireguard/config | | |
| /api/v1/wireguard/config | | |
| /api/v1/wireguard/peers | | |
| /api/v1/wireguard/peers | | |
| /api/v1/forward | | |
| /api/v1/forward | | |
| /api/v1/forward/:id | | |
| /api/v1/forward/:id | | |
| /api/v1/port/scan | | |
| /api/v1/port/check/:port | | |
| /api/v1/port/listen | | |
注意事项
安全
- 生产环境务必修改
config.yaml 中的 jwtSecret,使用随机强密钥 - 建议通过 Nginx 反向代理并启用 HTTPS 访问管理界面
- JWT Token 存储在浏览器 localStorage 中,注意 XSS 防护
Windows 平台
- 管理员权限 — 程序需要以管理员权限运行才能创建 WireGuard 虚拟网卡
- Wintun 驱动 — 程序依赖 Wintun 驱动,首次运行自动加载。如遇问题,从 Wintun 官网 下载最新版本放到程序目录
- 防火墙 — 需手动放行 UDP 51820 端口(WireGuard 监听端口)
- IP 配置 — Windows 下 WireGuard 虚拟网卡可能出现
169.254.x.x(APIPA)地址,表示 IP 配置失败
Linux 平台
- 生产部署的主要支持平台,推荐使用 Docker 部署
- 容器需要
NET_ADMIN 和 SYS_MODULE 权限 - 宿主机需开启
net.ipv4.ip_forward=1
数据库
- 程序自动创建
./data 目录存放 SQLite 数据库 - 如需重置所有配置,删除
./data/omniwire.db 文件后重启即可 - 首次启动自动生成 WireGuard 密钥对并存入数据库
- 用户密码使用 bcrypt 哈希存储,数据库泄露不会暴露明文密码
云服务器端口放行
在阿里云、腾讯云等云服务器上部署时,除了系统防火墙(iptables/firewalld)外,还需要在云控制台的安全组中放行相应端口:
- Web 管理端口 — 放行 TCP
8110(或自定义端口),用于访问管理界面 - WireGuard 端口 — 放行 UDP
51820(或自定义端口),用于 VPN 连接 - 端口转发端口 — 根据配置的转发规则,放行对应的 TCP/UDP 端口
- 安全组规则和系统防火墙是两层独立的防护,两者都需要放行才能访问
- 建议仅放行必要端口,避免使用
0.0.0.0/0 全开策略 - 管理端口建议限制来源 IP 或通过 VPN 内网访问
开发计划
待开发功能
- [ ] SSL 证书一键申请 — 集成 Let's Encrypt / ACME 协议,通过 Web 界面一键申请和自动续期 SSL 证书
- [ ] 转发端口绑定域名和证书 — 为端口转发规则绑定自定义域名和 SSL 证书,支持 HTTPS 转发
- [ ] 反向代理 — 内置 HTTP/HTTPS 反向代理功能,支持负载均衡、Header 改写、WebSocket 代理
- [ ] 域名分流 — 基于域名(SNI/Host)的流量分流,不同域名路由到不同后端服务
- [ ] 云服务商 DNS 对接 — 对接阿里云、腾讯云、Cloudflare 等云服务商 API,实现域名解析自动添加/修改/删除
- [ ] 操作日志记录 — 记录用户操作日志,支持审计追溯
项目结构
OmniWire/
├── server/ # 后端服务 (GoFrame)
│ ├── api/v1/ # API 接口定义(按领域划分)
│ ├── internal/
│ │ ├── cmd/ # 命令行入口、路由注册、JWT 中间件、数据库初始化
│ │ ├── controller/ # 控制器层(HTTP 处理器)
│ │ ├── service/ # 业务逻辑层
│ │ │ ├── wgserver/ # WireGuard 服务器生命周期管理
│ │ │ ├── wireguard/ # WireGuard 业务逻辑
│ │ │ ├── forward/ # TCP/UDP 端口转发引擎
│ │ │ └── port/ # 端口扫描和监控
│ │ ├── model/ # 数据模型
│ │ └── dao/ # 数据访问层
│ ├── manifest/config/ # 配置文件 (config.yaml)
│ ├── resource/public/ # 前端构建输出(生产环境静态文件)
│ ├── go.mod
│ └── main.go # 程序入口
│
├── web/ # 前端应用 (Vue 3)
│ ├── src/
│ │ ├── api/ # API 接口封装(Axios)
│ │ ├── layouts/ # 布局组件
│ │ ├── router/ # 路由配置(含路由守卫)
│ │ ├── stores/ # Pinia 状态管理
│ │ ├── views/ # 页面视图
│ │ ├── App.vue
│ │ └── main.js
│ ├── index.html
│ ├── package.json
│ └── vite.config.js # Vite 配置(开发代理 /api → :8110)
│
├── Dockerfile # 多阶段构建
├── docker-compose.yml
└── README.md
阅读原文:原文链接
该文章在 2026/4/7 10:01:57 编辑过