了解 NPTv6 翻译

了解 NPTv6 翻译

26897
Created On 09/25/18 19:21 PM - Last Modified 06/06/23 08:07 AM


Resolution


本文解释了 NPTv6 如何翻译 IPv6 地址前缀及其在后台的工作。

 

本文不侧重于配置和限制相关信息。

有关 NPTv6 的配置和支持相关信息, 请单击此处

 

 

关于网络前缀转换 (不扩散条约)

《不扩散条约》代表网络前缀翻译.

 

IPv6-to-IPv6 网络前缀转换 (NPTv6) 对另一个 IPv6 前缀执行一个 IPv6 前缀的无状态的静态转换, 从而允许私有唯一本地地址 (ULA) 能够访问 Internet, 将其转换为全局路由地址


NPTv6 不执行端口转换, 因此, 传入和传出数据包的端口保持不变。

 

 

详细

传输层协议 (如 TCP 或 UDP) 使用 IP 伪标头计算传输层标头中的校验和。

 

由于 NPTv6 不执行任何端口转换, 并且不具有校验和中立性, 因此无需重写传输层标头.

 

非校验和中立意味着转换将导致 IP 标头生成与转换前相同的 IPv6 伪标头校验和.


因此, 在翻译 IPv6 前缀时所做的任何更改都将通过对 IPv6 地址的其他部分 (如子网 ID 或接口标识符 (IID)) 的更改来抵消。保持 IPv6 伪标头校验和相同。

 

IPv6 地址的前48位是路由前缀, 接下来的16位是子网 id, 其余64位是接口 id (IID)。

 

示例

-假设我们有一个内部 ULA 地址作为fd00:192:168:1::100/128
-能够访问互联网, 这个内部前缀需要翻译为外部前缀2620: c4: d000: b531::/64

 

注:翻译后的 IPv6 地址不为 2620: c4: d000: b531:: 100/64 翻译 IPv6 地址必须做校验和中立.

 

以下是计算与校验和无关的翻译 IPv6 地址的过程:

 

-需要翻译的地址将是64前缀
-因此, 我们从内部 ULA 地址64位前缀, 这是, fd00:192:168:1
-我们计算1 的补充校验和这个64位前缀出来是0x0004
-现在, 我们计算外部地址的64位前缀的1的补间校验和, 即2620: c4: d000: b531
-这是, 0x53e9-现在减去0x0004 的 0x53e9, 这是
0x53e5
-现在,检查第一 non-0xFFFF 16 位字从位 64.. 79, 80. 95 等等
-在我们的例子中, 这是 0x0000,是位 64.. 79
-添加0x00000x53e5 , 这将是我们的新 64... 79 位在翻译的 IP地址, 使其校验和中立
-因此,校验和中性翻译 IPv6 地址2620: c4: d000: b531:53e5:: 100/128

 

因此, 在本示例中, 在翻译 IPv6 地址时, 前缀中的更改被地址的 IID 部分的更改抵消, 以使其与校验和无关

 

 

可以使用防火墙上的 CLI 命令进行验证, 如下所示:

 

屏幕截图2016-11-22 在 11.01.07. png

 

有关各种方案的详细信息, 并计算与校验和无关的 IP, 请参阅RFC 6296 -第3节



Actions
  • Print
  • Copy Link

    https://knowledgebase.paloaltonetworks.com/KCSArticleDetail?id=kA10g000000ClWHCA0&lang=zh_CN&refURL=http%3A%2F%2Fknowledgebase.paloaltonetworks.com%2FKCSArticleDetail

Choose Language