摘要
- NAT 可以在网络边界节省全球唯一的 IPv4 地址,但依赖地址值的应用不能只靠改写 IP 首部来适配。
- RFC 2993 的历史提醒在于,额外工作落到了哪里:应用层网关、终端协同更新、本地名称管理和技术支持,而不只是路由路径上的一台设备。
地址转换器可以完全按规则工作,应用却仍然连不上。问题未必在转换表。它可能始于同一个地址在私网里指向一个端点、到公网后代表另一个值,而应用消息正文中还留着第三份地址。
这种张力在 1994 年的提案里已经出现。RFC 1631 把网络地址转换(NAT)作为应对 IPv4 地址压力的一种渐进办法:末端网络复用内部地址,边界设备只转换进入全球地址空间的那部分通信。文件也承认代价:IP 地址的端到端意义被削弱,网络状态随之增加。若站点有多个出口,各个转换设备还必须对映射保持一致认识。这是一个可逐步部署的过渡方案,并非零成本的架构。
到了 2000 年 11 月,Tony Hain 在 RFC 2993 中回看了六年来 NAT 兴趣与部署的增长。关键问题不再只是路由器能否把一个地址换成另一个,而是当地址出现在转换器不会检查的位置时,服务还能否工作。
答案取决于应用。两个端点之间只经过一个 NAT 的简单通信,可能比较容易处理;但有些协议会在负载中携带 IP 地址,另一些则要求首部在校验和、认证或安全处理中保持一致。只改首部的转换器无法修补这些假设。应用层网关(ALG)和代理可以提供帮助,但每一种都必须理解自己要修补的协议。更早在同一年,RFC 2775 也指出,出现新的地址依赖型应用时,ALG 或代理必须随之更新。
于是,“透明”成了一项有条件的承诺。如果应用既不暴露也不依赖被转换的地址,边界功能或许可以不被察觉;否则,就得在运行该应用的各处协调变通方案。RFC 2993 对比了相对简单的双端通信,与冗余 NAT 路径和文档协作一类的多点应用。文件称,协调复杂度会随端点数量“几何式”增长;它没有给出方程或测量过的成本曲线,这描述的是架构的扩展难题,而不是实验结果。
冗余路径又带来另一种状态依赖。位于不同路径上的两个转换器,必须对某台设备的映射有一致认识。如果连接状态留在一条路径,而流量切换到另一条,新路径就可能生成不同的映射。即使后来恢复旧路由,也不一定能恢复原来的会话。因此,数据包里的地址并不是全部状态;映射本身以及它所在的路径同样重要。
成本还可能从一家机构转给另一家。RFC 2993 提到,互联网服务提供商管理的 NAT 或许能简化其一部分支持工作,同时增加本地的地址和名称管理。这是文件描述的负担转移,不是证明所有运营者总成本都上升了。企业合并后,本地管理员可能要处理重复使用的私网地址、安排内外不同的 DNS 响应,或协调过去对服务商不可见的应用修补。
安全问题让“转换”和“策略”的区别更重要。RFC 2993 警告,NAT(尤其是端口转换)可能营造出安全屏障的印象,却没有防火墙那种明确的访问控制意图。它也讨论了 IPsec、DNS 行为以及 SNMPv3 认证的兼容问题。这些机制取决于协议和配置,不能据此断言任何 NAT 都会破坏任何安全协议。转换器改变的是依赖地址的证据;它本身并不决定哪些流量应当获准通过。
后来的文件让这项工作更明确,却不能证明问题已消失。RFC 3022 于 2001 年取代 RFC 1631,描述传统 NAT;RFC 3235 于 2002 年为应用设计者提供 NAT 友好指南。这些文件不能证明 RFC 2993 导致了某项具体部署,也不能证明所有软件都遵循了指南;它们说明,边界转换技术催生了应用设计层面的文献。
RFC 2993 的历史价值并非裁定 NAT 总会失败,而是把边界上的地址节省与上层必须承担的兼容工作分开。转换器可以只部署在一个网关上;修复服务却可能要求在许多终端更新应用、在多条路径间维持映射状态,并让本地团队接管名称管理。网络没有让这项工作消失,只是改变了谁必须发现并协调它。
来源
- RFC Editor 信息页:RFC 1631
- RFC 1631 — The IP Network Address Translator (1994)
- RFC Editor 信息页:RFC 2663
- RFC 2663 — IP Network Address Translator Terminology and Considerations (1999)
- RFC Editor 信息页:RFC 2775
- RFC 2775 — Internet Transparency (2000)
- RFC Editor 信息页:RFC 2993
- RFC 2993 — Architectural Implications of NAT (2000)
- RFC 2401 — Security Architecture for the Internet Protocol (1998)
- RFC 2694 — DNS Extensions to Network Address Translators (1999)
- RFC 3022 — Traditional IP Network Address Translator (2001)
- RFC Editor 信息页:RFC 3235
- RFC 3235 — NAT-Friendly Application Design Guidelines (2002)
- RFC 3935 — A Mission Statement for the IETF
- Lu Heng — Running-Code Primacy: The Patch Needed to Preserve the Internet’s Original Design(编辑分析视角,不是 RFC 2993 作者身份或部署证据)
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
