摘要
- Disconnect-Request 与 CoA-Request 用一组属性查找已经存在的会话。同一组属性可以找不到任何会话,也可以命中多个;一旦命中多个,请求就要作用于全部匹配项。
- ACK 是 NAS 对成功状态迁移的正式断言,不只是收包回执;但它也不能替计费系统、下游执行点和流量观测发言。
CoA-NAK + Error-Cause 507甚至表示后续授权流程已经成功启动。
一条通过认证的控制报文,很容易在运维记录中被写成“合法命令”。这个词跨过了两道仍未回答的问题:发送方有没有权改变这个用户?请求里的属性究竟选中了哪些在线状态?
RFC 5176 处理的是登录之后的变化。Disconnect-Request 要求网络接入服务器终止已有会话,CoA-Request 要求它修改现有授权。报文到达 NAS 只是链条开端。NAS 还要确认权限、寻找会话、检查全部属性、决定能否原子执行,再用 ACK 或 NAK 描述结果。
查找条件就是影响半径
User-Name、NAS-Port、Framed-IP-Address、Calling-Station-Id、Acct-Session-Id、Chargeable-User-Identity 等属性都可能参与会话识别。它们不是给日志看的附加说明,而是实际决定操作集合的选择器。
若一个会话都没有命中,NAS 必须返回 NAK。若命中多个,RFC 并不擅自挑一个“最像”的对象,而是要求请求作用于所有匹配会话。NAS 若不支持多会话操作,应返回 Error-Cause 508,明确说明多会话选择不受支持。
因此,用户名正确远远不够。审计必须保留完整属性、匹配数量以及每个会话的标识。共享账号、重新连接后残留的旧状态、代理路径上的标识压缩,都可能让本来想断一台终端的请求覆盖更大的集合。密码学没有失败,选择器却可能过宽。
原子性保护一致性,不保护意图
CoA 对匹配集合执行全有或全无。如果所有请求变更都能在所有匹配会话上成功,NAS 才返回 CoA-ACK 并完成全部修改。任何一个属性或任何一个会话无法处理,就返回 CoA-NAK,且全部不改。断开操作同样不能只断掉集合中的一部分。
这条规则很重要。它避免一个命令留下互相矛盾的会话状态。但原子性发生在选择之后。如果错误的条件匹配了三个会话,NAS 可以极其正确、极其一致地把三个都断开。此时 ACK 没有说谎;错误发生在它之前。
所以运维平台应在执行前记录基数,而不是只在事后保存一个结果码。预期一条却命中三条,本身就应触发停机式复核。
ACK 有真实语义,也有视野边界
把 ACK 说成“只证明收到请求”并不符合 RFC。Disconnect-ACK 是 NAS 对相关会话上下文已经丢弃、这些会话不再连接的断言;CoA-ACK 是对所请求授权变更已经成功的断言。它们是执行层回执。
但 NAS 只能为自己看到的状态负责。计费停止记录可能延迟,下游网关可能还保留上下文,策略副本可能尚未收敛,用户流量也可能经过另一个观察点。ACK 不能因为经过认证,就代表这些系统同时完成变化。
严谨的证据链并不贬低 ACK,而是给它正确位置:保存请求原文与安全通道、说明发送方的授权依据、记录匹配集合、保留 ACK/NAK 与全部 Error-Cause,再对照 NAS 会话表、Accounting 记录、策略状态与真实流量。
NAK 不总是“什么都没发生”
Authorize Only 是最清楚的反例。NAS 若接受这类 CoA 指令,绝不能返回 CoA-ACK。它应返回 CoA-NAK,同时给出 Error-Cause 507 Request Initiated,随后由 NAS 发起 Access-Request。最终是 Access-Accept 还是 Access-Reject,要等下一轮授权交换决定。
这里的 NAK 表示 CoA 本身不是最终授权,却又确认后续流程已经启动。把它标红为失败,会丢掉真正的进展;把它标绿为最终成功,也越过了尚未出现的 Access 响应。
其他错误原因同样不能混成一栏:找不到会话、管理员禁止、代理不可路由、资源不足、不支持属性、多会话选择不受支持,分别指向不同控制面。经核验的勘误还说明,200 段成功原因不只出现在 ACK,ACK 也可以携带 Error-Cause。只看包名,会把协议明确保留的信息抹掉。
安全传输不会自动授予控制权
传统 UDP 模式用源地址选择共享密钥,再由基于 MD5 的 RADIUS 结构验证请求;Event-Timestamp、重传标识和重复检测处理新鲜度。RFC 5176 仍明确指出:认证通过的客户端不一定有权修改共享 NAS 上的所有用户。一个运营方不能因为和设备有密钥,就得到另一个运营方用户的控制权。
RFC 9765 为 RADIUS/1.1 引入协商后的 TLS 或 DTLS 传输。受保护通道取代旧式包认证,Message-Authenticator 也不再发送。密码学边界变强了,但“这个主体能否改变这个 realm、这个订户、这个会话”仍要由授权规则回答。
代理只增加另一张回执。RFC 8559 用 Operator-Name 与不透明的 Operator-NAS-Identifier 帮助动态授权请求沿反向路径找到正确 NAS。找到设备,不等于在设备内部唯一找到用户会话。
这正是现实分层的意义:客户端证明它发出了什么,代理证明它路由到哪里,NAS 证明它执行或拒绝了什么,计费与流量系统各自证明后果。可靠性来自这些证据能够互相对照,而不是让其中一个符号获得超出视野的权力。
来源
- https://www.rfc-editor.org/rfc/rfc5176.html
- https://www.rfc-editor.org/rfc/rfc5176.txt
- https://www.rfc-editor.org/info/rfc5176
- https://datatracker.ietf.org/doc/rfc5176/
- https://datatracker.ietf.org/doc/rfc5176/history/
- https://datatracker.ietf.org/doc/rfc5176/references/
- https://www.rfc-editor.org/errata_search.php?rfc=5176
- https://www.iana.org/assignments/radius-types/radius-types.xhtml
- https://www.rfc-editor.org/rfc/rfc3576.html
- https://www.rfc-editor.org/rfc/rfc2865.html
- https://www.rfc-editor.org/rfc/rfc2866.html
- https://www.rfc-editor.org/rfc/rfc2869.html
- https://www.rfc-editor.org/rfc/rfc5080.html
- https://www.rfc-editor.org/rfc/rfc8559.html
- https://www.rfc-editor.org/rfc/rfc9765.html
- https://www.rfc-editor.org/rfc/rfc6614.html
- https://www.rfc-editor.org/rfc/rfc7360.html
- https://heng.lu/on-reality-layers-symbolic-power-and-why-clarity-feels-so-hostile/
- https://heng.lu/minimum-initial-specification-localized-future-decision-voluntary-adoption-internet-coordination-system/
- https://heng.lu/running-code-primary-the-patch-needed-to-preserve-the-internet-original-design/
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
