大型 NAT64
由于 IPv4 地址即将耗尽,互联网服务提供商已开始向 IPv6 基础架构过渡。但是在过渡期间,互联网服务提供商必须继续支持 IPv4 和 IPv6,因为大多数公共互联网仍在使用 IPv4。大规模 NAT64 是一种 IPv6 过渡解决方案,适用于拥有 IPv6 基础设施的互联网服务提供商,用于将其纯 IPv6 的用户连接到 IPv4 互联网。DNS64 是一种允许纯 IPv6 的客户端发现纯 IPv4 的域的解决方案。DNS64 与大规模 NAT64 一起使用,以实现纯 IPv6 的客户端和纯 IPv4 的服务器之间的无缝通信。
NetScaler 设备可实现大规模的 NAT64 和 DNS64,符合 RFC 6145、6146、6147、6052、3022、2373、2765 和 2464。
体系结构
使用 NetScaler 设备的 ISP 的 NAT64 架构由 IPv6 订阅者通过部署在互联网服务提供商核心网络中的 NetScaler 设备访问 IPv4 互联网组成。IPv6 订阅者通过 ISP 的纯 IPv6 接入网络连接到 ISP 的核心网络。
NetScaler 设备的大规模 NAT64 功能允许通过 IPv6 到 IPv4 数据包转换在 IPv6 客户端和 IPv4 服务器之间进行通信,反之亦然,同时维护 NetScaler 设备上的会话信息。NetScaler DNS64 功能通过合成纯 IPv4 域的 DNS AAAA 记录并将其发送给订阅者,向 IPv6 订阅者提供仅限 IPv4 的域。
大规模 NAT64 有两个主要组件:NAT64 前缀和 NAT IPv4 池。DNS64 有一个主要组件,即 DNS64 前缀,其值与 NAT64 前缀相同。
在收到仅限 IPv6 的订阅者发出的托管在互联网上仅限 IPv4 的 Web 服务器上的域名的 AAAA 请求后,NetScaler DNS64 功能会合成该域名的 AAAA 记录并将其发送给订阅者。AAAA 记录是通过将 DNS64 前缀(设置为 NAT64 前缀)和域名的实际 IPv4 地址连接起来合成的。
订阅者现在拥有与所需域名相对应的 IPv6 目标地址。订阅者将请求发送到合成的 IPv6 地址。收到 IPv6 请求后,大规模 NetScaler NAT64 功能将 IPv6 请求包转换为 IPv4 请求数据包。大规模 NAT64 将 IPv4 请求的目标地址设置为 IPv4 地址,该地址是通过从 IPv6 地址中去除 NAT64 前缀从 IPv6 请求的目标地址中提取的。IPv6 请求中保留了目标端口。Large Scale NAT64 还将源 IP 地址:IPv4 数据包的源端口设置为从配置的 NAT 池中选择的 NAT IP 地址:NAT 端口。
设备会保留使用大规模 NAT64 功能的所有活动会话的记录。这些会话被称为大规模 NAT64 会话。该设备还维护每个大规模 NAT64 会话的用户 IPv6 地址和端口与 NAT IPv4 地址和端口之间的映射。这些映射被称为大规模 NAT64 映射。从大规模 NAT64 会话条目和大规模 NAT64 映射条目中,NetScaler 设备将响应数据包(从互联网接收)识别为属于特定的 NAT64 会话。
当设备收到属于特定 NAT64 会话的 IPv4 响应数据包时,它会使用存储在 NAT64 会话中的信息将 IPv4 数据包转换为 IPv6 数据包,然后将 IPv6 响应数据包发送给订阅者。
示例:NAT64 和 DNS64 部署的流量流
举一个由互联网服务提供商核心网络中的 NetScaler 设备 NS-1 和两台本地 DNS 服务器 DNS-1 和 DNS-2 以及 IPv6 订阅者 SUB-1 组成的大规模部署 NAT64 和 DNS64 的示例。SUB-1 通过 ISP 的 IPv6 接入网络连接到 NS-1。 NS-1 包括大规模 NAT64 和 DNS64 配置,用于支持 IPv6 用户 SUB-1 和 IPv4 主机(内部和外部)之间的通信。
大规模 NAT64 配置包括 NAT64 前缀 (2001:DB8:300::/96) 和 NAT IPv4 池,用于将 IPv6 请求转换为 IPv4 请求和对 IPv6 响应的 IPv4 响应。
DNS64 配置包括 DNS 负载平衡虚拟服务器 LBVS-DNS64-1 (2001:DB8:9999::99)) 和 DNS64 前缀 (2001:DB8:300::/96)。对于 ISP 的订阅者,LBVS-DNS64-1 代表本地 DNS 服务器 DNS-1 和 DNS-2。DNS64 前缀与 NAT64 前缀的值相同,用于从从 DNS 服务器 DNS-1 和 DNS-2 收到的 DNS A 记录中合成 DNS AAAA 记录。NS-1 使用合成的 AAAA 记录响应 SUB-1,请求解析 IPv4 主机的 DNS 请求。
DNS64 交通流量
IPv6 订阅者 SUB-1 与位于互联网上仅限 IPv4 的 Web 服务器上的站点 www.example.com
之间的流量流量如下所示:
- IPv6 订阅者 SUB-1
www.example.com
向其指定的 DNS 服务器发送 DNS AAAA 请求 (2001:DB8:9999::99)。 - NetScaler 设备 NS1 上的 DNS 负载平衡虚拟服务器 LBVS-DNS64-1 (2001:DB8:9999::99)) 收到了 AAAA 请求。LBVS-DNS64-1 的负载平衡算法选择 DNS 服务器 DNS-1 并将 AAAA 请求转发给该服务器。
- DNS-1 返回空记录或错误消息,因为没有 AAAA 记录可用。
www.example.com
- 由于在 LBVS-DNS64-1 上启用了 DNS64 选项并且来自 CL1 的 AAAA 请求与 dns64-Policy-1 中指定的条件相匹配,因此 NS1 向 DNS-1 发送 DNS A 请求,要求获取 IPv4 地址。
www.example.com
- DNS-1 以 192.0.2.60 的 A 记录作出回应。
www.example.com
- NS1 上的 DNS64 模块
www.example.com
通过连接与 LBVS-DNS64-1 相关的 DNS64 前缀 (2001:DB8:300::/96) 和www.example.com
的 IPv4 地址 (192.0.2.60) 2001:DB8:300::192.0.2.60 来合成 AAAA 记录 。 - NS1 将合成的 AAAA 记录发送到 IPv6 客户端 CL1。NS1 还将 A 记录缓存到其内存中。NS1 使用缓存的 A 记录合成 AAAA 记录,用于后续的 AAAA 请求。
NAT64 交通流量
-
IPv6 订阅者 SUB-1 向 2001:DB8:5001:30
www.example.com
发送请求。IPv6 数据包有:- 源 IP 地址 = 2001: DB 8:5001:30
- 源端口 = 2552
- 目标 IP 地址 = 2001:DB8:300::192.0.2.60
- 目标端口 = 80
-
IPv6 订阅者 SUB-1 向 2001:DB8:5001:30
www.example.com
发送请求。IPv6 数据包有:- 源 IP 地址 = 2001: DB 8:5001:30
- 源端口 = 2552
- 目标 IP 地址 = 2001:DB8:300::192.0.2.60
- 目标端口 = 80
-
当 NS-1 收到 IPv6 数据包时,大规模 NAT64 模块会使用以下内容创建转换后的 IPv4 请求数据包:
- 源 IP 地址 = 配置的 NAT 池中可用的 IPv4 地址之一 (203.0.113.61)
- 源端口 = 分配的 NAT IPv4 地址的可用端口之一 (3002)
- 目标 IP 地址 = 从 IPv6 地址 (192.0.2.60) 中去除 NAT64 前缀 (2001:DB8:300::/96) 从 IPv6 请求的目标地址中提取的 IPv4 地址
- 目标端口 = IPv6 请求的目标端口 (80)
-
大规模 NAT64 模块还为这个大规模 NAT64 流创建映射和会话条目。会话和映射条目包括以下信息:
- IPv6 数据包的源 IP 地址 = 2001: DB 8:5001:30
- IPv6 数据包的源端口 = 2552
- NAT IP 地址 = 203.0.113.61
- NAT 端口 = 3002
- NS-1 将生成的 IPv4 数据包发送到其在互联网上的目的地。
-
收到请求数据包后,服务器会
www.example.com
处理该数据包并将响应数据包发送到 NS-1。IPv4 响应数据包有:- 源 IP 地址 = 192.0.2.60
- 源端口 = 80
- 目标 IP 地址 = 203.0.113.61
- 目标端口 = 3002
-
收到 IPv4 响应数据包后,NS-1 会检查大规模 NAT64 映射和会话条目,发现 IPv4 响应数据包属于大规模 NAT64 会话。大规模 NAT64 模块创建了转换后的 IPv6 响应数据包:
- 源 IP 地址 = 2001:DB8:300::192.0.2.60
- 源端口 = 80
- 目标 IP 地址 = 2001: DB 8:5001:30
- 目标端口 = 2552
-
NS-1 将转换后的 IPv6 响应发送给客户端 SUB-1。
NetScaler 设备支持大规模 NAT64 功能
NetScaler 设备上的大规模 NAT64 支持标准 LSN 功能集。有关这些 LSN 功能的更多信息,请参阅 LSN 架构。
以下是 NetScaler 设备支持的一些大规模 NAT64 功能:
- ALG。支持 SIP、RTSP、FTP、ICMP 和 TFTP 协议的应用程序层网关 (ALG)。
- 确定性/固定 NAT。支持向订阅者预先分配端口块,以最大限度地减少日志记录。
- 映射。支持与端点无关的映射 (EIM)、地址相关映射 (ADM) 和地址端口相关映射 (APDM)。
- 过滤。支持与端点无关的过滤 (EIF)、地址相关过滤 (ADF) 和地址端口相关过滤 (APDF)。
- 配额。端口数、每个用户的会话数和每个 LSN 组的会话数可配置限制。
- 静态映射。支持手动定义大规模 NAT64 映射。
- Hairpin Flo 支持订阅者或内部主机之间使用 NAT IP 地址进行通信。
- 464XLAT 连接。支持 IPv6 订阅主机上的纯 IPv4 应用程序与互联网上的 IPv4 主机之间通过 IPv6 网络进行通信。
- 可变长度的 NAT64 和 DNS64 前缀。NetScaler 设备支持定义长度为 32、40、48、56、64 和 96 的 NAT64 和 DNS64 前缀。
- 多个 NAT64 和 DNS64 前缀。NetScaler 设备支持多个 NAT64 和 DNS64 前缀。
- LSN 客户端。支持使用 IPv6 前缀和扩展 ACL6 规则指定或识别大规模 NAT64 的订阅者。
- 日志记录。支持记录 NAT64 会话以供执法部门使用。此外,还支持以下日志记录。
- 可靠的 SYSLOG。支持通过 TCP 向外部日志服务器发送 SYSLOG 消息,以实现更可靠的传输机制。
- 日志服务器的负载平衡。支持外部日志服务器的负载平衡,以防止存储冗余日志消息。
- 最少的日志记录。具有端口块的确定性 LSN 配置或动态 LSN 配置可显著减少大规模的 NAT64 日志量。
- 记录 MSISDN 信息。支持将订阅者的 MSISDN 信息包含在大规模 NAT64 日志中,以识别和跟踪互联网上的订阅者活动。