在 RFC6146 中声明:
任何保护 IP 报头的协议都与 NAT64 不兼容。这意味着当使用身份验证标头 (AH)(传输模式和隧道模式)以及在传输模式下使用 ESP 时,端到端 IPsec 验证将失败。
为什么传输模式 ESP 不能在 NAT64 中使用,即使 ESP 传输和隧道模式都没有签署新的IP 标头?
在 RFC6146 中声明:
任何保护 IP 报头的协议都与 NAT64 不兼容。这意味着当使用身份验证标头 (AH)(传输模式和隧道模式)以及在传输模式下使用 ESP 时,端到端 IPsec 验证将失败。
为什么传输模式 ESP 不能在 NAT64 中使用,即使 ESP 传输和隧道模式都没有签署新的IP 标头?
传输模式以加密方式验证 IP 地址。NAT 必须操纵 IP 地址以提供连接。这就是他们不兼容的原因。
隧道模式通过 NAT 工作。运输方式没有。
当您使用涉及 NAT64 的连接时,您的拓扑如下所示:
+-----+ +-------+ +-----+
| IP6 |===| NAT64 |---| IP4 |
+-----+ +-------+ +-----+
一个对等点使用 IPv6 地址,一个对等点使用 IPv4 地址,NAT64 网关在这些地址之间进行转换。
现在让我们看一下 TCP 连接。RFC793 在3.1 中说。标头 TCP 标头中校验和字段的格式如下:
The checksum also covers a 96 bit pseudo header conceptually
prefixed to the TCP header. This pseudo header contains the Source
Address, the Destination Address, the Protocol, and TCP length.
This gives the TCP protection against misrouted segments. This
information is carried in the Internet Protocol and is transferred
across the TCP/Network interface in the arguments or results of
calls by the TCP on the IP.
使用正常的 TCP 流,NAT64 网关能够重新计算校验和并在任一方向发送有效的 TCP 数据报。
但是在 ESP 数据报中,TCP 标头是加密的,因此无法重新计算。因此,解密后的 TCP 数据报在解密后变得无效,因为每个对等方的地址不同。
UDP 也是如此。虽然对于 IPv4 UDP 校验和不是强制性的,但如果不使用它必须设置为 0,而对于 IPv6 则需要它,因此在 UDP 数据报上会有校验和。
编辑:根据 Ron Maupins 的评论更改了关于 UDP 的文本。