NAT64

允许IPv6主机与IPv4服务器通信的机制

NAT64是一种通过网络地址转换(NAT)的形式促成IPv6IPv4主机间通信的IPv6过渡机制。NAT64网关是IPv4与IPv6协议间的转换器[1]它需要至少一个IPv4地址和一个包含32位地址空间的IPv6网段。为该服务保留的“知名前缀”是64:ff9b::/96

IPv6客户端将希望与之通信的IPv4地址嵌入在IPv6网段的主机部分,构成一个嵌入IPv4的IPv6地址(IPv6网段中的32位地址空间),并将数据包发往生成的地址。NAT64网关则创建IPv6与IPv4地址间的映射,这可以是手动配置的,也可以是自动确定的。[2]

工作原理

 
NAT64和DNS64

简单的NAT64安装可能只需要一个网关,它的两个接口分别连接到IPv4网络与IPv6网络。IPv6网络的流量经由网关路由,网关对两个网络之间传输的数据包进行所有必要的转换。但是,这种转换并不是对称的,[3]因为IPv6地址空间比IPv4地址空间大得多,因此就不可能进行一对一的地址映射。网关维护IPv6到IPv4的地址映射,而该映射可以在来自IPv6网络的第一个数据包到达NAT64网关时依据手动配置创建(有状态映射),也可使用自动算法创建(无状态映射)。

如果NAT64转换器是用在仅有IPv4的伺服器之前,使其能被远端仅有IPv6的客户端访问,则比较适合使用无状态转换;而有状态转换则适合部署在客户端或服务提供端,使得仅有IPv6的客户端主机能联络到远端仅有IPv4的节点。

通常来说,NAT64被设计为在IPv6主机发起通信时使用。但也存在一些机制允许反向场景,例如静态地址映射。[来源请求]

不是每种类型的资源都能用NAT64访问。嵌入IPv4文字地址的协议(例如SIPSDPFTPWebSocketSkype、MSN等)和嵌入任何其他包括IPv4文字内容的协议都不被支持,但双栈网页代理允许仅有IPv6的客户端访问URL中包括IPv4文字的网页。不过,使用NAT64的464XLAT(见 RFC 6877)允许在仅有IPv6的连接上使用此类协议。对于SIP和FTP来说,使用应用层网关(ALG)或者支持 RFC 7225 定义的PREFIX64扩展的端口控制协议英语Port Control Protocol也可以解决这个问题。

实现

参考资料

  1. ^ RFC 6052, IPv6 Addressing of IPv4/IPv6 Translators, IETF Standards Track, C.Bao et al.
  2. ^ RFC 6146 Stateful NAT64: Network Address and Protocol Translation from IPv6 Clients to IPv4 Servers
  3. ^ Mavrin, Alex. NAT64 power and limitations. Blog article. [6 January 2014]. (原始内容存档于2014-01-08). 
  4. ^ [Ecdysis-discuss] NAT64 in OpenBSD. Viagenie.ca. [2014-01-31]. (原始内容存档于2013-05-27). 
  5. ^ Worldwide. Release Notes for the Cisco ASA Series, 9.0(x) [Cisco ASA 5500-X Series Next-Generation Firewalls] - Cisco Systems. Cisco.com. [2014-01-31]. (原始内容存档于2014-01-12).