# 云逸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 ``` > ⚠ 首次登录后务必修改密码!管理后台 → 右上角头像 → 账户设置。 # 系统截图 ### 登录界面 ![login](doc/gitee-images/login.png) ### 后台首页 ![admin](doc/gitee-images/admin.png) ### 用户管理 ![user](doc/gitee-images/user.png) ### Portal管理 ![Portal](doc/gitee-images/Portal.png) ### 用户门户 ![user-2](doc/gitee-images/user-2.png)