NAT64
NAT64是一种通过网络地址转换(NAT)的形式促成IPv6与IPv4主机间通信的IPv6过渡机制。NAT64网关是IPv4与IPv6协议间的转换器,[1]它需要至少一个IPv4地址和一个包含32位地址空间的IPv6网段。为该服务保留的“知名前缀”是64:ff9b::/96。
IPv6客户端将希望与之通信的IPv4地址嵌入在IPv6网段的主机部分,构成一个嵌入IPv4的IPv6地址(IPv6网段中的32位地址空间),并将数据包发往生成的地址。NAT64网关则创建IPv6与IPv4地址间的映射,这可以是手动配置的,也可以是自动确定的。[2]
工作原理
简单的NAT64安装可能只需要一个网关,它的两个接口分别连接到IPv4网络与IPv6网络。IPv6网络的流量经由网关路由,网关对两个网络之间传输的数据包进行所有必要的转换。但是,这种转换并不是对称的,[3]因为IPv6地址空间比IPv4地址空间大得多,因此就不可能进行一对一的地址映射。网关维护IPv6到IPv4的地址映射,而该映射可以在来自IPv6网络的第一个数据包到达NAT64网关时依据手动配置创建(有状态映射),也可使用自动算法创建(无状态映射)。
如果NAT64转换器是用在仅有IPv4的服务器之前,使其能被远端仅有IPv6的客户端访问,则比较适合使用无状态转换;而有状态转换则适合部署在客户端或服务提供端,使得仅有IPv6的客户端主机能联系到远端仅有IPv4的节点。
通常来说,NAT64被设计为在IPv6主机发起通信时使用。但也存在一些机制允许反向场景,例如静态地址映射。
不是每种类型的资源都能用NAT64访问。嵌入IPv4文字地址的协议(例如SIP和SDP、FTP、WebSocket、Skype、MSN等)和嵌入任何其他包括IPv4文字内容的协议都不被支持,但双栈网页代理允许仅有IPv6的客户端访问URL中包括IPv4文字的网页。不过,使用NAT64的464XLAT(见 RFC 6877)允许在仅有IPv6的连接上使用此类协议。对于SIP和FTP来说,使用應用層閘道(ALG)或者支持 RFC 7225 定义的PREFIX64扩展的端口控制协议也可以解决这个问题。
实现
- Ecdysis(页面存档备份,存于),NAT64网关,包含DNS64
- TAYGA(页面存档备份,存于),无状态NAT64实现,面向Linux
- Jool(页面存档备份,存于),有状态NAT64实现,面向Linux,NIC Mexico与蒙特雷科技大学开发
- OpenBSD 5.1带来一个NAT64能力的PF防火墙过滤器[4]
- Microsoft Forefront统一接入网关,一个实现DNS64和NAT64的反向代理和VPN解决方案
- 无状态网络地址转换64(页面存档备份,存于)于Cisco ASR 1000
- Stateful NAT64 feature(页面存档备份,存于)在Juniper MX系列3D通用边缘路由器
- Cisco(页面存档备份,存于) ASA版本9.0带来了NAT64和DNS64 [5]
- Dual stack architecture that recognizes both IPv4 and IPv6 traffic(页面存档备份,存于)在Fortinet FortiGate®多威胁安全设备
参考资料
- RFC 6052, IPv6 Addressing of IPv4/IPv6 Translators, IETF Standards Track, C.Bao et al.
- RFC 6146 Stateful NAT64: Network Address and Protocol Translation from IPv6 Clients to IPv4 Servers
- Mavrin, Alex. . Blog article. [6 January 2014]. (原始内容存档于2014-01-08).
- . Viagenie.ca. [2014-01-31]. (原始内容存档于2013-05-27).
- Worldwide. . Cisco.com. [2014-01-31]. (原始内容存档于2014-01-12).