按 ESC 键关闭

快速了解NAT64基本原理概述,它有哪些局限性?

今天我们来了解下NAT64协议概述

NAT(NetworkAddress Translation,网络地址转换)是1994年提出的。当在专用网内部的一些主机本来已经分配到了本地IP地址,但现在又想和因特网上的主机通信时,可使用NAT方法。定义在RFC 1631中。NAT的最初目的与CIDR相似,也是为了减缓可用IP地址空间的耗尽速度,实现方式是用少量的公有IP地址来表示大量的私有IP地址。随着时间的推移,人们发现NAT对于网络迁移、网络融合、服务器负载共享等应用来说都非常有用。

IPv4最初创建于20世纪70年代,早于目前的Internet,早于万维网,早于时时在线无处不在的宽带服务,早于智能手机。创建之初,IPv4所拥有的43亿地址对于将要支持的微不足道的试验性TCP/IP网络来说极其富裕,但目前连接Internet的人数已经超过了32亿,而且还有大量其他设备连接在Internet上。

无论未来的IoT会发展到何种规模,目前的43亿地址都已经远远不能满足需求了。从容量角度来看,我们在20世纪90年代中期就已经耗尽了IPv4地址。我们只是通过很多手段将扩展的IPv4可用地址用于远远超出IPv4地址容量的物联网。

所以说IPv6不必可少,但是在过渡到IPv6网络之前还有许多困难。

1、Internet缺乏集中式管理,是大量独立管理的自治系统的联盟,因而没有办法强制或协调大家全部都从IPv4切换到IPv6。

2、网络完全支持IPv6需要大量财力、人力和技术。

3、IPv6与IPv4不后向兼容。IPv6最初诞生在20世纪90年代,当时的设计人员认为运营商肯定会积极部署IPv6,几乎没有人想到IPv6的部署会面临诸多阻力。

NAT64是一种有状态的网络地址与协议转换技术,一般只支持通过IPv6网络侧用户发起连接访问IPv4侧网络资源。但NAT64也支持通过手工配置静态映射关系,实现IPv4网络主动发起连接访问IPv6网络。

虽然现在的绝大多数设备都支持IPv6,但依然有很多仅支持IPv4的老设备。需要通过某种方式将这些设备通过IPv6网络互连起来。NAT64可实现TCP、UDP、ICMP协议下的IPv6与IPv4网络地址和协议转换。

而且由于IPv6不兼容IPv4,因此就得有必要的迁移机制,比如双栈、隧道和转换。

1、双栈接口:保持IPv4与IPv6共存的最简单方式就是给接口配置两种协议。使用何种版本的IP协议取决于从设备接收到的数据包版本或者查询设备地址时由DNS返回的地址类型。虽然双栈是从IPv4到IPv6的期望迁移手段,但前提是必须在IPv4地址耗尽之前完成迁移过程。

2、隧道:隧道解决的也是共存问题。隧道允许一种协议版本的设备或站点穿越另一种协议版本的网段(包括Internet),因而两个IPv4设备或站点之间可以通过IPv6网络交换IPv4数据包,两个IPv6设备或站点之间也可以通过IPv4网络交换IPv6数据包。

3、转换:转换技术是将一种协议版本的数据包报头更改为另一种协议版本的数据包报头,因而解决了IPv4设备与IPv6设备之间的互操作问题。

简单的NAT64设置可能是一个设备的两个接口分别连接到IPv4网络与IPv6网络的网关。IPv6网络的流量经由网关路由,其对两个网络之间传送的分组进行所有必要的翻译。但是,这种翻译并不是对称的,因为IPv6地址空间比IPv4地址空间大得多,因此就不可能进行一对一的地址映射。

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

不是每种类型的资源都能用NAT64访问。嵌入IPv4字面地址的协议(例如SIP和SDP、FTP、WebSocket、Skype、MSN等)都不能得到支持。对于SIP和FTP来说,使用应用层网关(ALG)技术可以解决问题,到现在为止,NAT64并不是一个很好的解决方案,目前确定的NAT64局限性如下:

1、在没有静态地址映射表项的情况下,不允许IPv4设备向IPv6设备发起会话请求;

2、软件对NAT64的支持程度有限;

3、与其他所有转换器一样,也不支持IP多播;

4、很多应用都不支持。