Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

常见问题解答

English version: FAQ

按主题分组的常见问题。如果这里没有覆盖你的问题,请检索 GitHub issues 或新开一个。

安装与访问

忘记管理员密码怎么办?

使用内置工具,指向服务器实际使用的配置文件:

go run ./cmd/reset-password -c /etc/toughradius.yml -u admin -p <新密码>

-initdb 之后的默认账号为 admin / toughradius

SQLite 和 PostgreSQL 怎么选?

SQLite(默认)零依赖——纯 Go 驱动、单文件存于 {workdir}/data/——适合实验 与小规模部署。生产规模、高计费量,或需要外部备份工具(pg_dump、复制)时 选 PostgreSQL。

能不能不用 1812/1813/1816 这些端口?

可以——所有端口都可通过 YAML 或环境变量配置(radiusd.auth_portradiusd.acct_portweb.port 等)。见运维指南

管理界面的 HTTPS 端口(1817)不工作

Web TLS 监听需要 {workdir}/private/toughradius.tls.crt.key。文件缺失 或无效时只记录日志并停掉 HTTPS 监听——1816 上的 HTTP 继续服务。可用 cmd/certgen 生成证书或提供自己的证书。

-initdb 可以再跑一次吗?

不可以。 它会删除并重建所有表。仅在首次安装时执行。常规升级无需手动 处理表结构——迁移在启动时自动完成。

认证

所有请求都被忽略 / 超时

最常见的两个原因:

  1. 请求的源 IP 未登记为 NAS 设备——在 NAS 设备 中添加(或修正 NAT 使源地址符合预期)。
  2. 共享密钥不一致——RADIUS 对报文本身校验失败的包会静默丢弃。

打开 radiusd.debug: true 或把日志级别调到 debug 查看实际到达的报文。

用户认证成功但没有限速

只有 NAS 记录的厂商具备限速 VSA(华为、MikroTik、H3C、中兴、爱快)时才 会下发限速属性。登记为 StandardCisco 的 NAS 不会收到私有限速属性—— 见厂商对接指南。同时确认用户的策略确实设置了 up_rate/down_rate(Kbps)。

拨号能认证成功,却拿不到 IP / 地址池没生效

只有在用户或其计费策略上设置了地址池时,Access-Accept 才会下发 Framed-Pool;且下发的池名必须与 NAS 上的地址池同名(如 RouterOS 的 /ip pool)。名字不一致、或根本没设池,客户端就拿不到(正确的)地址。需要固定 IP 时,可在用户上设置静态 IPv4(下发 Framed-IP-Address,覆盖地址池)。端到端 示例见场景实战手册 · MikroTik

有多台 NAS,需要为每台单独配置吗?

需要。每台 NAS 都要在「NAS 设备」中单独登记,各自填源 IP(或 identifier) 与各自的共享密钥。ToughRADIUS 按报文源地址(或 NAS identifier)匹配对应的 NAS 记录及其密钥;来自未登记源地址的请求会被记录并以「未授权 NAS」拒绝。不同 NAS 可用不同密钥,无需统一。

某个用户为什么被拒绝?

拒绝按原因分类(密码错误、用户不存在、已过期、已停用、并发超限、MAC/VLAN 绑定不符、未授权 NAS 等)——仪表盘展示各类计数,日志记录细节。最容易让人 意外的是绑定不符:开启 bind_mac/bind_vlan 后,首次出现的 MAC/VLAN 会被记录,后续请求必须匹配;更换硬件后请清空用户上的已存绑定值。

连续输错密码后响应变慢,为什么?

这是拒绝延迟防爆破机制:在 RejectDelayWindowSeconds(默认 10 秒)窗口内 连续拒绝达到 RejectDelayMaxRejects(默认 7 次)后,响应会被延迟。两个参数 都可在 系统配置 中调整。

ToughRADIUS 支持 802.1X / 企业级 Wi-Fi 吗?

支持。可用的 EAP 方法:EAP-MD5、EAP-MSCHAPv2、EAP-TLS、PEAPv0/EAP-MSCHAPv2 与 EAP-TTLS(内层 PAP / MS-CHAP-V2)。在 系统配置 → EapMethod 中选择。

EAP-TLS / PEAP / EAP-TTLS 启动不了

基于 TLS 的 EAP 需要在系统配置中设置 EapTlsCertFile + EapTlsKeyFile—— 留空时这些方法按设计处于禁用状态。用 cmd/certgen 生成服务器证书、填好 路径后重试。EapTlsCaFile 仅在需要校验客户端证书(EAP-TLS)时配置。

服务器与设备时钟不同步会有什么影响?

时钟漂移会带来隐蔽问题:基于 TLS 的 EAP(EAP-TLS / PEAP / TTLS)会校验证书的 有效期(NotBefore / NotAfter),双方时间偏差过大可能导致握手失败;计费的 起止时间与时长会失真;拒绝延迟防爆破窗口(默认 10 秒)也以服务器时钟为准。请在 服务器与 NAS 上启用 NTP 保持时间同步。

EAP 方法怎么选?

  • EAP-TLS —— 最强(双向证书),需要给客户端发证。
  • PEAPv0/EAP-MSCHAPv2 —— Windows/AD 兼容;注意 MS-CHAPv2 的类 NTLMv1 攻击面(见安全策略)。
  • EAP-TTLS —— 通过内层 PAP 对接遗留/LDAP 后端,密码受 TLS 隧道保护。

会话、CoA 与计费

在线会话页的强制下线 / CoA 没有效果

依次检查:设备已开启动态授权(如 RouterOS 的 radius incoming、IOS 的 aaa server radius dynamic-author);NAS 记录上的 CoA 端口 与设备一致 (默认 3799);设备接受来自服务器地址的请求。ToughRADIUS 等待 5 秒并重试 2 次后才报告失败。

想在线给用户改速率(FUP 超额限速),怎么做?

ToughRADIUS 的「修改授权(CoA)」只携带 Session-TimeoutFilter-Id不会在线改写 Mikrotik-Rate-Limit 等限速属性。实时变速的标准做法是:先在 计费策略 / 用户上改速率,再对其执行「强制下线」,客户端自动重拨后即按新速率 重新授权;也可用 Filter-Id 让设备套用预先定义好的限速规则。详见 场景实战手册 · MikroTik · 在线管控

CoA / 强制下线提示找不到会话

操作员发起的 CoA / Disconnect 需要先在「在线会话」中定位该会话,再据其 NAS 记录与会话标识(如 Acct-Session-Id)向设备发起。若在线记录已残留失效(NAS 未 上报计费停止)或会话已结束,就会匹配不到——刷新在线列表、确认设备计费正常后 重试。

在线会话里出现早已下线的用户

在线记录由 NAS 的计费报文创建/刷新。NAS 停发(重启、断链)时记录可能残留。 请确认设备开启了计费与中间更新(每个 Access-Accept 都会下发 Acct-Interim-Interval,默认 300 秒)。残留记录也可在界面上手动下线/删除。

计费表一直增长,哪些会自动清理?

两个 @daily 定时任务会自动清理数据:一个删除一年前的操作日志(SysOprLog); 另一个 SchedClearExpireData 会按 AccountingHistoryDays(默认 90 天)删除已结束radius_accounting 计费历史(在线会话的记录不会被删),并清理连续多个计费中间更新 周期未刷新的 radius_online 残留在线行。将 AccountingHistoryDays 设为 0关闭计费历史清理(永久保留)。若流量很大、需要更激进的瘦身,仍建议把数据库级 归档纳入运维流程。配置备份不包含计费历史——见备份与恢复

并发会话数没有被限制

计费策略中的 active_num 是单用户并发上限(0 表示不限)。该检查统计 radius_online 表中的行数,依赖 NAS 正常上报计费——没有计费 Start 报文, 服务器无从得知谁在线。

运维

怎么接 Prometheus 监控?

目前没有 /metrics HTTP 端点;计数器在内存中并通过仪表盘展示。外部监控 建议探测端口、采集日志文件,并对进程退出告警(进程模型为 fail-fast)。

怎么安全升级?

停止服务、替换二进制(或拉取新的 Docker 标签)、启动。表结构迁移自动完成。 升级前先做配置备份(系统配置 → 备份)和数据库备份。

日志 / 数据 / 证书都存在哪里?

全部位于 system.workdir(默认 /var/toughradius)之下:data/(SQLite 数据库)、logs/private/(TLS 材料)、backup/(配置快照)。见 运维指南