news 2026/4/16 10:44:16

IPSec NAT穿越场景原理分析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
IPSec NAT穿越场景原理分析

作者:chen-true@qq.com

仅供学习交流,如有错误恳请指出!

===========================================

先说结论:

·AH协议不支持NAT穿越,无论是传输模式还是隧道模式,无论有无开启NAT-T功能;

·在未开启NAT-T功能前提下,ESP隧道模式和传输模式均支持穿越NAT设备,但是会有很多限制,导致使用起来不方便或产生问题;

·在开启NAT-T功能前提下,ESP隧道模式和传输模式均可以正常稳定的穿越NAT。

===========================================

IPSec(IP Security)是一组在IP网络层提供安全通信能力的协议族,主要依靠两种数据保护子协议(AH与ESP),对IP报文实施完整性校验、身份认证、加密以及抗重放等安全保护。

·认证头(Authentication Header,AH):IP协议号51。提供数据源认证与消息完整性保护,并支持抗重放;但是不提供加密,因此不具备保密性。

·封装安全载荷(Encapsulating Security Payload,ESP):IP协议号50。提供数据加密以实现保密性,并且可选提供数据源认证与消息完整性保护,同时支持抗重放。在实际工程中,ESP通常同时启用加密与完整性保护,应用也最为广泛。

AH与ESP均支持两种工作模式(Mode),用于决定对IP报文的保护范围:

·传输模式(Transport Mode):保留原始IP头,仅对上层负载(如 TCP/UDP/ICMP等数据)进行保护,常用于主机到主机的端到端安全通信。

·隧道模式(Tunnel Mode):将整个原始IP包封装为“内层报文”,再添加新的外层IP头并对内层整包进行保护,常用于网关到网关的站点互联以及远程接入VPN场景。

一、AH协议的保护范围

① AH传输模式的保护范围(即认证数据ICV的覆盖范围):

·上层数据:即TCP/UDP/ICMP头 + 数据;

·AH头(除ICV字段外):计算ICV时,将ICV字段本身置零参与计算;

·原始IP头中“不可变/端到端应保持一致”的字段:典型包括源/目 IP、协议号等这类不应在中途改动的字段。

而对于TTL、IP头校验和、DSCP、以及其它一些可能被中间设备改写的字段,计算ICV时,将它们置零(忽略)参与计算。

② AH隧道模式的保护范围(即认证数据ICV的覆盖范围):

·内层原始IP包整体:包括内层IP头部 + 上层数据(TCP/UDP/ICMP头 + 数据);

·AH头(除ICV字段外):计算ICV时,将ICV字段本身置零参与计算;

·外层IP头中“不可变/端到端应保持一致”的字段:典型包括源/目 IP、协议号等这类不应在中途改动的字段。

而对于TTL、IP头校验和、以及其它一些可能被中间设备改写的字段,计算ICV时,将它们置零(忽略)参与计算。

图 AH协议保护范围

二、ESP协议的保护范围

① ESP传输模式的保护范围(加密和认证范围):

1、加密范围

·上层数据:即TCP/UDP/ICMP头 + 数据;

·ESP尾(ESP Trailer):Padding + PadLen + NextHeader。

2、认证范围(若启用)

·ESP头(SPI + Sequence Number);

·全部加密区的密文;

② ESP隧道模式的保护范围(加密和认证范围):

1、加密范围

·内层原始IP包整体:包括内层IP头部 + 上层数据(TCP/UDP/ICMP头 + 数据);

·ESP尾(ESP Trailer):Padding + PadLen + NextHeader。

2、认证范围(若启用)

·ESP头(SPI + Sequence Number);

·全部加密区的密文;

图 ESP协议保护范围

三、AH协议不支持NAT穿越

如下图所示,主机A与主机B之间建立了基于IPSec AH的安全通信(可为传输模式或隧道模式),且路径中经过NAT网关。

图 AH传输模式穿越NAT失败举例

AH提供了消息完整性保护,其核心机制是:发送端在计算AH头部中的认证数据时,会把报文中需要被保护的内容纳入哈希计算,其中包括IP头部中那些按规范应保持端到端一致的字段(典型如源/目的IP等),并将计算得到的认证数据随AH报文一起发送给接收端。接收端收到AH报文后,会按同样规则对报文重新计算认证数据,并与报文携带的认证数据进行比对;若不一致,则认为报文被篡改或伪造,进而丢弃报文。

当AH报文经过NAT网关时,NAT会对报文进行地址转换(SNAT/DNAT),从而修改IP头部中的源/目IP等字段。由于这些字段属于AH认证计算所覆盖的范围,NAT的改写会导致接收端基于“被改写后的IP头”重新计算出的认证数据与报文中携带的认证数据不一致,最终触发AH完整性校验失败并造成丢包。因此,AH与NAT天生不兼容。

这一结论对两种模式均成立:

·AH传输模式下,AH直接保护原始IP头中的相关字段,NAT改地址必然破坏校验;

·AH隧道模式下,AH同样会认证外层IP头中应保持不变的字段,而NAT改写外层地址同样会导致校验失败。

综上,AH协议不支持穿越NAT,无论是传输模式还是隧道模式,只要路径中存在会修改IP头地址信息的NAT设备,都将导致AH认证失败。

四、ESP协议有限度的支持NAT穿越

以前示拓扑为例,若主机A与主机B之间建立IPSec ESP安全通信(可为传输模式或隧道模式),且路径中经过NAT网关。与AH不同,ESP的完整性校验(若启用)不覆盖外层IP头,而是覆盖ESP头 + ESP负载 + ESP尾(ESP Trailer),因此NAT对外层IP地址的改写不会直接导致ESP的认证数据校验失败。

1)ESP传输模式穿越NAT:认证不一定失败,但业务层面容易掉坑

在传输模式下,ESP会把上层协议头(TCP/UDP/ICMP等)也一起加密/认证。因此即便ESP本身不会因为NAT改外层IP头而导致认证数据校验失败,但仍然可能在以下方面出现问题:

·TCP/UDP校验和问题:NAT改写源/目的IP 后,按协议规则,TCP/UDP的校验和应随之更新;但传输模式下TCP/UDP头在ESP加密区内,NAT看不到也改不了,导致接收端解密后可能出现校验和不匹配,进而引发丢包、连接异常等现象。

注意:对于一些不依赖TCP/UDP校验和的IP流量(比如ICMP Ping),理论上ESP传输模式是可以穿越NAT的;但在真实网络里是否“真的能过”,强烈依赖NAT是否支持/放行ESP,以及是否存在多主机并发(PAT)等情况。

·ESP没有端口导致NAT/PAT复用困难:ESP是三层协议(IP协议号50),不像TCP/UDP有端口可用于NAT/PAT做多路复用。若多个内网主机共享一个公网地址并发建立ESP流量,许多NAT设备难以稳定区分和回送,常见现象包括“只能通一个”“并发冲突”“会话不稳定”等。

因此,ESP传输模式在密码学机制上不怕NAT改外层地址,但在承载TCP/UDP以及多对一PAT的场景下,经常因为校验和与复用问题而不够可靠。

2)ESP隧道模式穿越NAT:天然、稳定,但仍可能被“无端口复用”所限制

隧道模式的优势在于:

·内外层解耦,避免传输模式的TCP/UDP校验和问题:隧道模式把“原始内层IP包”整体加密/认证,内层TCP/UDP校验和依赖的是内层IP地址。NAT改写的是外层IP头,不会影响内层地址与内层校验和。

·ESP认证仍不覆盖外层IP头:NAT对外层地址的改写不会直接破坏ESP认证数据的校验(这一点与ESP传输模式一样)。

但隧道模式仍存在一个现实问题:

·纯ESP依旧没有端口,PAT多路复用依旧困难:当公网侧只有一个公网IP、且需要多台内网主机并发建立/维持ESP会话时,NAT设备仍可能因为“无端口”而复用能力受限,导致连接不稳定。

因此,ESP隧道模式更适合NAT环境,但如果不做额外处理,仍可能被NAT/PAT的会话复用能力卡住。

为解决“ESP无端口导致NAT/PAT难以复用”和“传输模式下TCP/UDP校验和难以更新”等问题,工程实践中通常启用NAT-T(NAT Traversal)功能。NAT-T的核心思想就是把ESP变成“看起来像普通UDP”的流量。并且,NAT-T功能只对ESP有效,对AH无效。

有关NAT-T功能原理,我会在后面单独详细描述。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 9:50:50

终极指南:如何高效使用CAD批量打印插件

终极指南:如何高效使用CAD批量打印插件 【免费下载链接】Batchplot_3.6.1批量打印插件-基于秋枫版修改 Batchplot_3.6.1是一款基于秋枫版优化的批量打印插件,专为提升打印效率而设计。经过精心修改,界面更加简洁易用,操作更加便捷…

作者头像 李华
网站建设 2026/4/15 12:24:17

网络请求性能优化实战指南:告别卡顿与超时

你的Python应用是否经常遇到这些困扰?🚨 批量请求时突然卡住不动,高并发场景下频繁报错,或者下载大文件时连接意外中断。这些看似随机的问题背后,往往隐藏着HTTP连接管理的深层秘密。本文将带你通过"问题诊断→解…

作者头像 李华
网站建设 2026/4/15 17:38:58

CAIE认证:一次关于AI认知与思维升级的个人记录

作为一名在出版行业工作多年的编辑,我曾长期认为人工智能是与我的日常工作相距甚远的技术领域。直到发现身边越来越多的工作场景开始融入智能化工具,我才感到有必要去系统理解其底层逻辑,而不仅仅是作为一个被动的使用者。带着这种想法&#…

作者头像 李华
网站建设 2026/4/11 4:31:21

常见API(补充)

常用API带条件爬取,贪婪爬取,和识别 正则的两个方法 捕获分组:后续还要使用本组的数据 正则内部使用 \\组号正则外部使用$组号 非捕获分组:分组之后不再需要本组数据,仅仅是把数据括起来(?…

作者头像 李华