授权与激活
把购买得到的激活码填进控制台「授权」页:联机激活、心跳续期、机器指纹与节点配额,以及到期后会发生什么。
商业版墨守装完就在转发流量,但付费防护能力要激活后才开启。在 价格页 完成购买后你会拿到一串激活码(形如 MG-XXXX-XXXX-XXXX),把它填进控制台「授权 → 授权管理」即可。激活是联机的:本机算出机器指纹换回一张 Ed25519 签名令牌,之后靠心跳续期。
#一分钟激活
- 1登录控制台安装完成的横幅里会写明「授权状态:未激活」与激活入口。
- 2进「授权 → 授权管理」页面顶部的标签即当前状态:已授权 / 未激活 / 已到期 / 已吊销 / 离线过久。
- 3粘贴激活码点「激活」几秒内返回结果。成功后状态变「已授权」,下方列出套餐、到期时间、配额与已授权能力。
- 4(可选)核对能力清单「已授权能力」列出的键就是这台实例真正被允许启用的模块,与你购买的套餐一致。
不方便开控制台时,也可以写进配置后重启:
用配置文件激活
# /etc/moguard/moguard.yaml
license:
license_key: "MG-XXXX-XXXX-XXXX" # 激活码(bearer 凭证,注意保密)
# server_url: "https://..." # 授权服务器地址,安装包已预置,一般不用改
# data_dir: "data/license" # 令牌缓存与实例 ID 目录
# heartbeat_seconds: 60 # 心跳周期,0 = 用服务端建议值改完配置后重启生效
systemctl restart moguard控制台激活的激活码会落盘持久化,优先级高于配置文件里的
license_key;重启后自动恢复,不用重填。验签公钥编译期内嵌在程序里,无需任何配置。#激活链路:它到底做了什么
- 1算机器指纹优先用数据目录里持久化的实例 ID(
data/license/instance-id),退化时才用 machine-id / 主网卡 MAC 派生的哈希。 - 2联机激活带激活码 + 指纹 + 主机名 + 版本 + 随机 nonce 请求授权服务器。
- 3验签后才采信服务器返回一张 Ed25519 签名令牌(Compact JWS)。墨守用内嵌公钥验签、核对 nonce 与指纹,通过才算数——明文字段一律不作数,伪造响应无法激活。
- 4缓存到磁盘令牌原子写入
data/license/license.jws,重启直接加载,断网也能带着授权跑。 - 5周期心跳默认 60 秒一次,用来尽快拿到续期 / 吊销 / 套餐变更。心跳不决定停机。
#五种授权状态
| 状态 | 含义 | 怎么处理 |
|---|---|---|
已授权 active | 令牌验签通过、未到期、未吊销 | 正常运行,按 features / quotas 放行能力 |
已到期 expired | 订阅到期(按天判定) | 续费后自动恢复;也可在控制台重新激活新码 |
已吊销 revoked | 授权被签发方吊销 | 联系我们确认原因 |
离线过久 stale | 令牌过了新鲜期且长时间刷不到新的 | 恢复外网连通后自动刷新 |
未激活 unlicensed | 从未激活或无有效令牌 | 粘贴激活码激活 |
#到期后会发生什么
两档语义,由令牌里的 onExpire 决定,默认是不伤业务的那一档:
passthrough(默认)流量照常反向代理,仅关闭全部防护能力,控制台红条提示原因。授权事故绝不会把你的站点打挂。
halt停止接管流量(站点经墨守不可达)。仅在合同明确要求「未授权即彻底停用」时才会签发这一档。
断网不会误停铁律:连不上授权服务器绝不停机。 心跳失败(断网、服务端维护)什么都不做,继续用本地令牌;只有拿到验签通过的到期 / 吊销结论,或本地时钟越过令牌里的到期时间,才会切换状态。
#机器指纹与节点配额
一个激活码能激活几台由套餐的 nodes 配额决定,靠机器指纹计数。指纹的目标是「同一台机器重启后不变、换机器就变」。
| 字段 / 控件 | 默认 / 示例 | 说明 |
|---|---|---|
sites | 套餐决定 | 受保护站点数上限,本端硬限。 |
nodes | 套餐决定 | 可激活节点数;超额时激活接口直接拒绝。 |
qps | 套餐决定 | 建议值(软限,用于告警与容量规划),不做硬切。 |
别让 Pod 重建吃光节点配额容器 / K8s 部署要挂持久卷。指纹优先取
data_dir 下的实例 ID 文件,只要该目录随卷存活,Pod 重建就不算新节点;否则每次重建都会吃掉一个节点名额,很快就激活失败。把 data_dir(默认 data/license)放进持久化目录即可。#能力是怎么被限制的
墨守不写「if 套餐 == 企业版」这类判断。签名令牌里的 features 是唯一权限来源:未授权的能力,其配置段在装配阶段就被清空,对应模块根本不会初始化——不是「跑起来再拦」,而是「压根没跑」。默认拒绝,令牌里没有的键一律关闭。
看不到「授权」菜单是正常的:只有商业版构建才有授权页与强制授权,自建开源构建的授权模块默认不启用。
#常见问题
| 现象 | 原因 / 处理 |
|---|---|
| 激活提示激活码无效 | 核对是否有多余空格 / 换行;确认购买邮件或 价格页 弹窗里复制的是完整激活码 |
| 激活提示超出节点上限 | 同一激活码激活的机器数已达套餐 nodes;换机 / 重装 / 容器重建都会产生新指纹,联系我们解绑或升级配额 |
| 状态一直「未激活」 | 服务器不通或 server_url 为空(日志会写 license 需要 server_url)。检查出网与 HTTPS 可达性,心跳会持续重试 |
| 状态变「离线过久」 | 长期断网导致令牌过了新鲜期。恢复外网后会在下一次心跳自动刷新 |
配置里改了 license_key 却没变化 | 控制台激活过的激活码优先级更高;在控制台重新激活新码即可 |
