NAT 简介

    NAT( Network Address Translation,网络地址转换)是将 IP 数据报报头中的 IP 地址转换为另一个 IP 地址的过程。在实际应用中, NAT 主要用于实现私有网络访问公共网络的功能。这种通过使用少量的公有 IP 地址代表较多的私有 IP 地址的方式,将有助于减缓可用 IP 地址空间的枯竭。


    说明:私有 IP 地址是指内部网络或主机的 IP 地址,公有 IP 地址是指在因特网上全球唯一的 IP 地址。

    RFC 1918 为私有网络预留出了三个 IP 地址块,如下:

   ·A 类: 10.0.0.0~ 10.255.255.255

   ·B 类: 172.16.0.0~ 172.31.255.255

   ·C 类: 192.168.0.0~ 192.168.255.255

    上述三个范围内的地址不会在因特网上被分配,因此可以不必向 ISP 或注册中心申请而在公司或企

业内部自由使用。


图 1-1 描述了一个基本的NAT应用。

NAT 概述_NAT

    NAT 网关处于私有网络和公有网络的连接处。

   ·当内部主机( 192.168.1.3)向外部服务器( 10.1.1.2)发送一个数据报 1 时,数据报将通过NAT 网关。

   ·NAT 网关查看报头内容,发现该数据报是发往外网的,那么它将数据报 1 的源地址字段的私有地址 192.168.1.3 换成一个可在 Internet 上选路的公有地址 20.1.1.1 ,并将该数据报发送到外部服务器,同时在 NAT 网关的网络地址转换表中记录这一映射。

   ·外部服务器给内部主机发送的应答报文 2(其初始目的地址为 20.1.1.1 )到达 NAT 网关后,NAT 网关再次查看报头内容,然后查找当前网络地址转换表的记录,用内部主机的私有地址192.168.1.3 替换初始的目的地址。

    上述的 NAT 过程对终端(如图中的主机和服务器)来说是透明的。对外部服务器而言,它认为内部主机的 IP 地址就是 20.1.1.1 ,并不知道有 192.168.1.3 这个地址。因此, NAT“隐藏”了企业的私有网络。

    地址转换的优点在于,在为内部主机提供了“隐私”保护的前提下,实现了内部网络的主机通过该功能访问外部网络的资源。但它也有一些缺点:

   ·由于需要对数据报文进行 IP 地址的转换,涉及 IP 地址的数据报的报头不能被加密。在应用协议中,如果报文中有地址或端口需要转换,则报文不能被加密。例如,不能使用加密的 FTP连接,否则 FTP 的 port 命令不能被正确转换。

   ·网络调试变得更加困难。比如,某一台内部网络的主机试图攻击其它网络,则很难指出究竟哪一台机器是恶意的,因为主机的 IP 地址被屏蔽了。


NAT 实现的功能

    1. 多对多地址转换及地址转换的控制

    从 图 1-1 的地址转换过程可见,当内部网络访问外部网络时,地址转换将会选择一个合适的外部地址,来替代内部网络数据报文的源地址。在 图 1-1 中是选择NAT网关出接口的IP地址(公有地址)。这样所有内部网络的主机访问外部网络时,只能拥有一个外部的IP地址,因此,这种情况同时只允许最多有一台内部主机访问外部网络,这称为“一对一地址转换”。当内部网络的多台主机并发的要求访问外部网络时,“一对一地址转换”仅能够实现其中一台主机的访问请求。

    NAT 也可实现对并发性请求的响应,允许 NAT 网关拥有多个公有 IP 地址。当第一个内部主机访问外网时, NAT 选择一个公有地址 IP1 ,在地址转换表中添加记录并发送数据报;当另一内部主机访问外网时, NAT 选择另一个公有地址 IP2,以此类推,从而满足了多台内部主机访问外网的请求。这称为“多对多地址转换”。

    说明:NAT 网关拥有的公有 IP 地址数目要远少于内部网络的主机数目,因为所有内部主机并不会同时访问外网。公有 IP 地址的数目,应根据网络高峰期可能访问外网的内部主机数目的统计值来确定。

    在实际应用中,我们可能希望某些内部的主机可以访问外部网络,而某些主机不允许访问,即当NAT 网关查看数据报报头内容时,如果发现源 IP 地址属于禁止访问外部网络的内部主机,它将不进行 NAT 转换。这就是对地址转换进行控制的问题。

    设备可以通过定义地址池来实现多对多地址转换,同时可以利用 ACL( Access Control List,访问控制列表)来对地址转换进行控制。

   ·利用 ACL 限制地址转换:可以有效地控制地址转换的使用范围,只有满足 ACL 条件的数据报文才可以进行地址转换。

   ·地址池:用于地址转换的一些连续的公有 IP 地址的集合。用户应根据自己拥有的合法 IP 地址数目、内部网络主机数目以及实际应用情况,配置恰当的地址池。地址转换的过程中, NAT网关将会从地址池中挑选一个地址做为转换后的源地址。

    2. NAPT

    NAPT( Network Address Port Translation,网络地址端口转换)是 NAT 的一种变形,它允许多个内部地址映射到同一个公有地址上,也可称之为“多对一地址转换”或“地址复用”。

    NAPT 同时映射 IP 地址和端口号:来自不同内部地址的数据报的目的地址可以映射到同一外部地址,但它们的端口号被转换为该地址的不同端口号,因而仍然能够共享同一地址,也就是“私有地址+端口”与“公有地址+端口”之间的转换。

    图 1-2 描述了NAPT的基本原理。

NAT 概述_NAT_02

    如 图 1-2 所示,四个带有内部地址的数据报到达NAT网关,其中数据报 1 和 2 来自同一个内部地址但有不同的源端口号,数据报 3 和 4 来自不同的内部地址但具有相同的源端口号。通过NAPT映射,四个数据报的源IP地址都被转换到同一个外部地址,但每个数据报都被赋予了不同的源端口号,因而仍保留了报文之间的区别。当回应报文到达时, NAT网关仍能够根据回应报文的目的地址和端口号来区别该报文应转发到的内部主机。

    采用 NAPT 可以更加充分地利用 IP 地址资源,实现更多内部网络主机对外部网络的同时访问。

    3. Easy IP

    Easy IP 是指进行地址转换时,直接使用接口的公有 IP 地址作为转换后的源地址,能够最大程度的节省 IP 地址资源。它也可以利用 ACL 控制哪些内部地址可以进行地址转换。

    4. 内部服务器

    NAT 隐藏了内部网络的结构,具有“屏蔽”内部主机的作用,但是在实际应用中,可能需要给外部网络提供一个访问内部主机的机会,如给外部网络提供一台 WWW 服务器,或是一台 FTP 服务器。

    使用 NAT 可以灵活地添加内部服务器。例如,可以使用 20.1.1.10 作为 WWW 服务器的外部地址;使用 20.1.1.11 作为 FTP 服务器的外部地址; 甚至还可以使用 20.1.1.12:8080 这样的地址作为 Web服务器的外部地址。

    目前设备的 NAT 提供了内部服务器功能供外部网络访问。 外部网络的用户访问内部服务器时, NAT

将请求报文内的目的地址转换成内部服务器的私有地址。当内部服务器回应报文时, NAT 要将回应报文的源地址(私有 IP 地址)转换成公有 IP 地址。

    5. 支持特殊协议

    NAT 不仅实现了一般的地址转换功能,同时提高了完善的地址转换 ALG ( Application LayerGateway,应用级网关)机制,使其可以支持一些特殊的应用协议,而不需要对 NAT 平台进行任何的修改,具有良好的可扩充性。这些特殊协议的报文载荷里携带了地址或端口信息,该信息也可能需要进行地址转换。

可支持的特殊协议包括: FTP( File Transfer Protocol,文件传输协议)、 PPTP( Point-to-Point

Tunneling Protocol,点到点隧道协议)、 DNS( Domain Name System,域名系统)、 ILS( Internet

Locator Service, Internet 定位服务)、 H.323、 SIP( Session Initiation Protocol,会话发起协议)、NBT( NerBIOS over TCP/IP,基于 TCP/IP 的网络基本输入输出系统)等。

    6. 连接数限制

    内网用户访问外部网络时,如果某一用户在短时间内经过设备向外部网络发起大量连接,将会导致设备系统资源迅速消耗,其它用户无法正常使用网络资源。因此,为了保护内部网络资源以及合理分配设备系统资源,设备支持基于源 IP 地址对用户连接的数量进行统计和限制。


配置 NAT

    配置概述

    通过 NAT 网关设备上动态生成或静态建立的地址映射关系,实现内部网络与外部网络 IP 地址的转换。通常,我们按照地址映射关系的产生方式将地址转换分为动态地址转换和静态地址转换两类:

   ·动态地址转换:外部网络和内部网络之间的地址映射关系由报文动态决定。通过配置访问控制列表和地址池(或接口地址)的关联,由“具有某些特征的 IP 报文”挑选使用“地址池中地址(或接口地址)”,从而建立动态地址映射关系。适用于内部网络有大量用户需要访问外部网络的需求。这种情况下,关联中指定的地址池资源由内网报文按需从中选择使用,访问外网的会话结束之后该资源便释放给其它用户。

    ·静态地址转换:外部网络和内部网络之间的地址映射关系在配置中确定。适用于内部网络与外部网络之间的少量固定访问需求。