# 云逸RADIUS认证系统
**Repository Path**: yunyistudio/Yunyi-RADIUS
## Basic Information
- **Project Name**: 云逸RADIUS认证系统
- **Description**: YunyiRADIUS 是基于 ToughRADIUS 深度改造的企业级网络认证计费系统,采用 Vue 3 + Element Plus + Go 技术栈,完整实现标准 RADIUS 协议(RFC 2865/2866)及 RadSec(RFC 6614),提供 AAA(认证、授权、计费)一体化解决方案。
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2026-06-27
- **Last Updated**: 2026-09-07
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# YunyiRADIUS 云逸网络认证计费系统
## 平台简介
在做网络认证项目的过程中,我们研究了大量开源 RADIUS 方案,最终在 Gitee 上找到了 [jamiesun](https://gitee.com/jamiesun) 大佬开源的 [ToughRADIUS](https://gitee.com/jamiesun/ToughRADIUS.git),其架构设计和功能覆盖度在同类项目中非常出色。在其基础上,我们结合多年网络运维经验进行了深度改造,融合现代前端技术栈,形成了现在的 YunyiRADIUS 认证计费系统。
YunyiRADIUS 采用 **Vue 3 + Element Plus + Go** 全栈分离架构,完整支持 **标准 RADIUS 协议(RFC 2865, RFC 2866)** 及 **RadSec(RFC 6614)**,提供企业级 **AAA(认证、授权、计费)** 一体化解决方案。适用于 **酒店 WiFi 认证**、**企业局域网准入**、**商场公共 WiFi**、**校园网络** 等场景。系统内置了我们在生产环境中验证过的多项增强:11 阶段可插拔认证流水线、AES-256-GCM 字段加密、WAL 预写日志防数据丢失、支付幂等防重、OpenAPI 授权心跳等。
前端基于 **Vue 3 + TypeScript + Element Plus + Vite** 构建,响应式布局支持 PC 和平板。后端基于 **Go 1.25 + Echo + GORM**,编译为单一静态二进制,无需运行环境依赖,内存占用低、启动快。数据库支持 **PostgreSQL**(生产)和 **SQLite**(轻量部署)。
* 感谢 [ToughRADIUS](https://gitee.com/jamiesun/ToughRADIUS.git) 框架提供的 RADIUS 协议基础实现
* 感谢 [Element Plus](https://element-plus.org/) 提供的优秀 Vue 3 组件库
* 感谢 [go-radius](https://github.com/layeh/radius) 提供的 Go RADIUS 协议库
## 交流与支持
- 技术交流QQ群:1038824705 点击链接加入群聊【云逸RADIUS认证计费系统】
- 商务合作邮箱:hfyunyi@foxmail.com
- 文档: 说明文档
## 与 ToughRADIUS 的核心差异
| 模块 | ToughRADIUS | YunyiRADIUS |
|------|-------------|-------------|
| 认证流程 | 线性处理 | **11 阶段可插拔流水线**(元数据→NAS查找→防重放→限流→VSA解析→加载用户→代理→二次认证→模板→EAP分发→插件验证) |
| 密码存储 | 明文/bcrypt | **AES-256-GCM 加密**,认证前透明解密,内存即焚 |
| 手机号存储 | 明文 | **AES-256-GCM 加密**,API 返回脱敏(138****1234) |
| 计费可靠性 | 回复 NAS 后异步写 DB,崩溃可能丢数据 | **WAL 预写日志**:先写磁盘 fsync → 回复 NAS → 异步处理 → 断点续传 |
| 支付防重 | 无保护 | **DB 原子 UPDATE 幂等**,异步通知和同步跳转并发不会重复充值 |
| 机器指纹 | SHA256 明文哈希 | **v2 AES-128-GCM 确定性加密**,同机永远相同 |
| 软件授权 | 无 | **OpenAPI HMAC-SHA256 + 心跳保活 + 自动重激活 + .lic 离线授权** |
| Docker 镜像 | 未提供 | **23MB scratch 基础镜像**,秒级构建 |
| 健康自检 | 无 | **/health 端点**:DB 连接池状态 + goroutine 计数 |
## 技术栈
| 层级 | 技术 |
|------|------|
| 语言 | Go 1.25 |
| Web 框架 | labstack/echo v4 |
| 前端 | Vue 3 + TypeScript + Element Plus + Vite |
| 数据库 | PostgreSQL 16(生产)/ SQLite(开发) |
| ORM | GORM |
| RADIUS | layeh.com/radius |
| 缓存 | Redis 7(可选,建议) |
| 时序库 | InfluxDB 2.7(可选,监控) |
| 日志 | zap + lumberjack |
| 任务调度 | robfig/cron |
## 环境要求
| 组件 | 要求 | 验证命令 | 是否必须 |
|------|------|----------|----------|
| Linux | CentOS 7+ / Ubuntu 18.04+ / Debian 10+ | `uname -a` | ✅ |
| PostgreSQL | 14+ | `psql --version` | ✅(生产) |
| Redis | 7+ | `redis-server --version` | 推荐 |
| InfluxDB | 2.7+ | `influxd version` | 可选(监控) |
| Nginx | 1.18+ | `nginx -v` | 推荐(反向代理) |
## 主要特性
- ✅ **RADIUS 协议完整支持**: PAP / CHAP / MSCHAPv2 认证,11 阶段流水线
- ✅ **RadSec 支持**: RADIUS over TLS(RFC 6614)
- ✅ **EAP 认证**: EAP-MD5 / EAP-MSCHAPv2 / EAP-TLS / EAP-TTLS / PEAP
- ✅ **Portal 强制门户**: 自定义模板 + MAC 免认证 + Cookie 免登录
- ✅ **用户管理**: 开户、销户、套餐变更、批量导入
- ✅ **计费系统**: 时长/流量双模式,WAL 预写日志防丢
- ✅ **在线管理**: 实时会话监控、强制下线、CoA 动态调速
- ✅ **财务管理**: 手动充值/退款、支付宝支付、缴费清单、统计报表
- ✅ **设备管理**: NAS 设备、BAS 设备、网络节点
- ✅ **RBAC 权限**: 5 级角色 + 资源级细粒度权限
- ✅ **字段加密**: 密码/手机号 AES-256-GCM 存储,脱库无风险
- ✅ **支付幂等**: 支付宝回调并发安全
- ✅ **软件授权**: 在线激活 + 离线 .lic + 心跳保活
- ✅ **容器化部署**: Docker Compose 一键部署,23MB 镜像
## 适用场景
- 🏨 **酒店 WiFi 认证**:住客 Portal 登录 + 退房自动断网
- 🏢 **企业局域网准入**:员工账号认证 + 部门权限分级 + MAC 绑定
- 🏬 **商场公共 WiFi**:手机号/微信扫码 + 广告推送
- 🏫 **校园网络**:师生账号管理 + 流量/时长计费
- 🏟 **其他公共场所**:临时账号 + 套餐自选
## 支持的路由器/交换机厂商
| 厂商 | 支持状态 |
|------|----------|
| MikroTik (RouterOS) | ✅ 完整 |
| 华为 (Huawei) | ✅ 完整 |
| H3C | ✅ 完整 |
| 思科 (Cisco) | ✅ 完整 |
| 中兴 (ZTE) | ✅ |
| Juniper | ✅ |
| Aruba | ✅ |
| 爱立信 | ✅ |
| Alcatel | ✅ |
| 锐捷 (Ruijie) | ✅ |
## 系统功能
### RADIUS 认证计费
- **设备管理**:NAS 设备 CRUD,厂商 VSA 自动解析(13 家厂商)
- **用户管理**:开户、销户、套餐变更、到期自动处理
- **套餐管理**:流量型/时长型套餐 + 多档位定价
- **在线管理**:实时会话监控、强制下线、CoA 动态调速
- **计费日志**:完整上下线记录,流量明细
- **代理认证**:RADIUS Proxy 上游转发
### Portal 强制门户
- **认证页面**:可自定义 HTML 模板,支持变量替换
- **MAC 免认证**:首次登录后自动绑定
- **Cookie 免登录**:浏览器端免重复登录
- **白名单**:免认证域名/IP 配置
### 用户自助门户
- **套餐商城**:浏览套餐、选择档位、在线支付
- **账单查询**:充值记录、消费明细
- **个人信息**:修改密码、绑定手机/邮箱
- **在线设备**:查看和管理已登录设备
### 管理后台
- **仪表盘**:用户统计、收入概览、在线趋势
- **用户管理**:操作员/角色/权限,RBAC 细粒度控制
- **系统配置**:分组动态配置(RADIUS/安全/LDAP)
- **统计报表**:收入折线图、用户统计、套餐分布
- **操作日志**:管理员操作审计
- **数据备份**:一键备份/恢复
## 部署方式
### Docker 一键部署(推荐)
```bash
tar xzf yunyiradius-docker.tar.gz
cd docker/
vim yunyiradius.yml # 修改密码
vim docker-compose.yml # 修改密码
chmod +x install.sh && ./install.sh
```
### 二进制部署
```bash
tar xzf yunyiradius-binary.tar.gz
cd binary/
vim yunyiradius.yml
chmod +x install.sh && ./install.sh
```
## 默认账号
首次启动时系统自动生成随机密码,通过日志获取:
```bash
# Docker 部署
docker compose logs app | grep generated_password
# 二进制部署
journalctl -u yunyiradius | grep generated_password
```
输出示例:
```
created bootstrap super admin 'admin' with a random password
username: admin
generated_password: xxxxxxxxxxxxxxxx
```
> ⚠ 首次登录后务必修改密码!管理后台 → 右上角头像 → 账户设置。
# 系统截图
### 登录界面

### 后台首页

### 用户管理

### Portal管理

### 用户门户
