摘要
- RFC 3948 让 IKE 控制报文和 UDP 封装的 ESP 数据共用一条 NAT 映射;由于合法 ESP SPI 不能为零,四个零字节便可标记 IKE。
- 这个标记只决定下一步尝试哪套处理逻辑;SA 查找、抗重放、密码学校验、内部地址策略和应用结果仍各自需要证据,
0xFF保活甚至不能证明对端连接存活。
一个端口里不是一种状态
如果只看防火墙规则,UDP 4500 像是一项服务;如果看端点内部,它却连接着不同的控制面。IKE 建立和更新安全关联,ESP 携带受保护的数据,而 NAT 只关心自己是否还应保留外层地址与端口的映射。三者可以复用一条外部路径,却没有因此变成同一个状态机。
RFC 3948 明确说明了复用的收益:NAT 只需维护一个映射,扩展性更好;正常流量可减少额外的 IKE 保活;防火墙只需配置一个端口;实现也更直接。配套的 RFC 3947 规定了 NAT 穿越协商,以及检测到 NAT 后把后续 IKE 流量移到 4500 的办法。
但端口复用立即带来分类问题。报文到达后,接收方必须知道它属于 IKE 还是 ESP。RFC 3948 没有再申请一个端口,也没有增加复杂的新信封,而是利用了 ESP 里一个不能在网上合法出现的值。
把“不可能值”变成路标
ESP 头部的第一个 32 位字段是安全参数索引 SPI。接收方用它寻找处理该报文所需的安全关联。RFC 2406 把零保留给本地、实现相关用途,不允许它作为普通 ESP SPI 在线上传送。RFC 3948 进一步要求:UDP 封装的 ESP 报文不得使用零 SPI。
于是,IKE 在 UDP 头与 IKE 头之间加入四个全零字节,称为“非 ESP 标记”。它恰好占据 ESP 报文中 SPI 所在的位置。接收方先读一个 32 位字:全零就交给 IKE 处理;非零则可以按 ESP 的方向继续。
这条规则精巧之处,在于它没有创造新的全局名字,只借用了一个已经排除的值。它的局限也同样明确。四个零不是密钥、签名、MAC 或授权票据,不标识某个 IKE 安全关联,也不证明后续字节构成合法 IKE 消息。分流正确之后,IKE 自己仍可能因为格式、状态或认证失败而拒绝报文。
ESP 一侧也不能把“非零”写成“有效”。非零首字只提供一个候选 SPI。接收方还要找到对应的已安装 SA,核对序列号和抗重放窗口,执行完整性或认证解密检查,再判断流量选择器和内部策略。未知 SPI、重放、密码学失败或不允许的内部流量,都可能在正确分流之后终止处理。
0xFF 维护的是中间盒记忆
同一映射上还有第三种更短的报文:载荷只有一个字节 0xFF。RFC 3948 将其定义为 NAT 保活,要求它沿 ESP 封装所用的端口发送,并建议接收方忽略它。
规范留下了一条非常重要的否定性规则:不得因为收到 NAT 保活,就判断连接仍然存活。这个字节的唯一任务,是给 NAT 一个“这条 UDP 映射仍有流量”的输入。NAT 刷新计时器,不等于 IKE SA 仍可用,不等于 ESP SA 仍存在,也不等于受保护数据通过,更不等于应用完成了交换。
文档当时给出的默认值——需要保活且二十秒没有其他发送时发出,以及某个 SA 曾存在后可继续保留五分钟——都是本地可配置的历史参数,不是今天所有设备的统一承诺。更重要的是,几个时钟的主人不同:NAT 决定映射何时遗忘,端点决定何时发保活,IKE 与 ESP 管理自己的生命周期,应用另有健康标准。
分流完成后,困难的策略才开始
UDP 包装没有取代 ESP。发送方先执行普通 ESP 封装再加 UDP,接收方先去掉 UDP 再执行普通 ESP 解封装。地址被 NAT 改写之后,还需要额外决策。
在隧道模式中,实现可以检查内部源地址是否落在策略允许的范围,是否等于分配给对端的地址,或者在进入本地网络前再次转换。在传输模式中,外层地址变化可能使内部 TCP 或 UDP 校验和失效,接收方需要按照规范限定的方法利用 IKE 提供的原始地址进行增量修正、重新计算,或在严格条件下采用其他处理。四个零不替任何一项策略作主。
安全章节还揭示了地址复用的冲突。两个位于不同 NAT 后的笔记本可能都使用同一个私网地址,安全网关因而看到多个 SA 指向同一内部目的地。多个客户位于同一个公网地址之后时,也可能提出相互重叠的流量描述,使简单筛选无法决定出站报文该使用哪个 SA。实现必须分配本地唯一地址、再次转换、拒绝冲突,或提供其他明确方案。
这些问题延续了 RFC 3715 归纳的 IPsec 与 NAT 兼容性要求。RFC 3948 给出可部署的线上格式,却没有宣称外部地址和端口已经成为 NAT 后所有主体的唯一身份。
留下来的,是窄规则而不是大权力
RFC Editor 条目 记录 RFC 3948 于 2005 年 1 月以标准轨文档发布。已确认的勘误 只纠正引言里对 RFC 3715 案例编号的引用,不改变报文格式和四零分流。
后来 RFC 7296 在 IKEv2 中保留了相同边界:UDP 4500 上的 IKE 以四个零开头,ESP 则紧跟 UDP 头,以不可能合法为零的 SPI 开始。它还允许发起方即使尚未发现 NAT,也从一开始使用 4500。因此,看到端口本身并不能倒推出路径上一定发生了地址转换。
RFC 3948 的历史价值不在于“四字节保护了 IPsec”,而在于它拒绝这种夸大。端口负责把报文送到共同入口;首字负责选择候选解析器;IKE 或 ESP 负责各自的安全判断;内部策略负责准入;应用证据负责说明结果。最小规则之所以耐久,是因为它准确完成一件事,然后把其余权力留给真正承担责任的层。
来源
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
