网络地址转换(NAT)是用于将一个地址域(如专用Intranet)映射到另一个地址域(如Internet)的标准方法。NAT允许一个机构专用Intranet中的主机透明地连接到公共域中的主机,无需内部主机拥有注册的(以及越来越缺乏的)Internet地址。
Internet工程任务组意识到目前的地址空间(即所谓的IPv4)即将会耗尽已经有近十年时间了。尽管即将出现的IPv6被视作为解决Internet不断发展的长期解决方案,但是在过去几年中还提出了其它一些短期解决方案。
1994年公布的RFC 1631“IP地址转换器”,就描述了这样一种解决办法。在Internet发展早期,不管人们当时是否打算连接到Internet上,业界恳切请求他们申请全球唯一网络地址。这种想法是为了在专用网络连接到公共Internet时避免出现问题。
但是,随着Internet不断以指数级速度增长,将珍贵的网络地址分配给专用网络终于被视作是一种对宝贵的虚拟房地产的浪费。按照网络地址转换(NAT)标准,某些IP地址留出来供专用网络重复使用。正如RFC 1597 “专用网络地址分配”规定的那样,任何人都可以使用下列范围的地址:从10.0.0.0到10.255.255.255、从172.16.0.0到172.31.255.255以及从192.168.0.0到192.168.255.255。根据约定,路由器不在Internet上向这些地址转发任何数据包。
最简单的NAT设备有两条网络连接:一条连接到Internet,一条连接到专用网络。专用网络中使用私有IP地址(有时也被称做Network 10地址,地址使用留做专用的从10.0.0.0开始的地址)的主机,通过直接向NAT设备发送数据包连接到Internet上。与普通路由器不同NAT设备实际上对包头进行修改,将专用网络的源地址变为NAT设备自己的Internet地址,而普通路由器仅在将数据包转发到目的地前读取源地址和目的地址。
NAT的缺陷
在使用NAT时,Internet上的主机表面上看起来直接与NAT设备通信,而非与专用网络中实际的主机通信。输入的数据包被发送到NAT设备的IP地址上,并且NAT设备将目的包头地址由自己的Internet地址变为真正的目的主机的专用网络地址。
其结果是,理论上一个全球唯一IP地址后面可以连接几百台、几千台乃至几百万台拥有专用地址的主机。但是,这实际上存在着缺陷。例如,许多Internet协议和应用依赖于真正的端到端网络,在这种网络上,数据包完全不加修改地从源地址发送到目的地址。比如,IP安全架构不能跨NAT设备使用,因为包含原始IP 源地址的原始包头采用了数字签名。如果改变源地址的话,数字签名将不再有效。
NAT还向我们提出了管理上的挑战。尽管NAT 对于一个缺少足够的全球唯一Internet地址的组织、分支机构或者部门来说是一种不错的解决方案,但是当重组、 合并或收购需要对两个或更多的专用网络进行整合时,它就变成了一种严重的问题。甚至在组织结构稳定的情况下,NAT系统不能多层嵌套,从而造成路由噩梦。
NAT设备之外
尽管专用网络内的主机通常可以方便地连接到外部网络上的服务器,但是Internet上的主机并不总能方便地连接到专用网络内部的服务器上。就外部主机而言,它们直接与一台主机(即NAT设备本身)通信。专用网络实际上对于外部世界是不可见的,外部世界认为来自专用网络的所有数据流实际上是起始于和终止于NAT设备的数据流。
网络地址端口转换(NAPT)通过不仅对IP地址进行转换而且还对传输层端口进行转换来帮助缓解这一问题。因此,NAPT设备上的一个地址对应于端口80(通常用于HTTP包)的输入包可被转换并传送到专用网络的Web服务器。如果没有端口转换,NAT设备就无法知道将数据包传送给专用网络中的哪台主机。
NAT常常被当做是一种安全解决方案。不管怎么说,专用网络似乎从人们的视线中隐藏了起来。不过,如果攻击者可以获得对NAT设备的控制的话,整个网络就将十分脆弱。尽管实现NAT功能的简单设备对于保护小型办公室和家庭办公室网络会很有用,但是NAT不应被当作是替换防火墙的方案。
虽然NAT的支持者宣布它是解决IPv4地址短缺的长期解决方案,但是,它仍是一种权宜之计。即使不考虑架构和部署问题,IPv4地址空间本身仍是有限的,如果所有的网络都隐藏在NAT设备之后,IPv4地址空间不久仍将会耗尽。