NAT Network Address Translation

来源:互联网 发布:org.apache.ivy 编辑:程序博客网 时间:2024/03/29 21:08

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 或注册中心申请而在公司或企业内部自由使用。)

NAT最初的设计目的是用于实现私有网络访问公共网络的功能,后扩展到实现任意两个网络间进行访问时的地址转换应用, 本文中将这两个网络分别称为内部网络 (内网)和外部网络(外网),通常私网为内部网络,公网为外部网络。

 

 
 


1)  内网用户主机 (192.168.1.3) 向外网服务器 (1.1.1.2) 发送的 IP报文通过NAT设备。
 
(2) NAT设备查看报头内容,发现该报文是发往外网的,将其源 IP地址字段的私网地址 192.168.1.3 转换成一个可在 Internet 上选路的公网地址 20.1.1.1,并
 
将该报文发送给外网服务器,同时在 NAT 设备的网络地址转换表中记录这一
 
映射。

(3)  外网服务器给内网用户发送的应答报文(其初始目的 IP 地址为 20.1.1.1)到达 NAT设备后,NAT设备再次查看报头内容,然后查找当前网络地址转换表 的记录,用内网私有地址 192.168.1.3替换初始的目的 IP地址。
 
上述的 NAT过程对终端(如图中的 Host和 Server)来说是透明的。对外网服务器而言,它认为内网用户主机的 IP地址就是 20.1.1.1,并不知道有 192.168.1.3这个地址。因此,NAT“隐藏”了企业的私有网络。

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

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

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

在实际应用中,我们可能希望某些内部网络的主机可以访问外部网络,而某些主机不允许访问,即当 NAT设备查看 IP数据报文的报头内容时,如果发现源 IP地址属于禁止访问外部网络的内部主机,它将不进行地址转换。另外,也希望只有指定的公网地址才可用于地址转换。

设备可以利用 ACL(Access Control Limit,访问控制列表)和地址池来对地址转换进行控制。

 
 
l        访问控制列表可以有效地控制地址转换的使用范围, 只有满足访问控制列表规则的数据报文才可以进行地址转换。

l          地址池是用于地址转换的一些连续的公网 IP 地址的集合,它可以有效地控制公网地址的使用。用户可根据自己拥有的合法 IP 地址数目、内部网络主机数目以及实际应用情况,定义合适的地址池。在地址转换的过程中,NAT设备将会从地址池中挑选一个 IP地址做为数据报文转换后的源 IP地址。

NAT实现

基本地址转换

从地址转换过程可见,当内部网络访问外部网络时,地址转换将会选择一个合适
 
的外部地址,来替代内部网络数据报文的源地址。在 图 1中是选择NAT设备出接口的IP地址(公网IP地址)。这样所有内部网络的主机访问外部网络时,只能拥有一个外部网络的IP地址,因此,这种情况同时只允许最多有一台内部网络主机访问外部网络。

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

 
 
说明:

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

 
 
NAPT

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

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

 
 
                      图2 NAPT基本原理示意图
 


 
 
如 图 2所示,三个带有内部地址的数据报文到达NAT设备,其中报文 1和报文 2来自同一个内部地址但有不同的源端口号,报文 1和报文 3来自不同的内部地址但具有相同的源端口号。通过NAPT映射,四个数据报的源IP地址都被转换到同一个外部地址,但每个数据报都被赋予了不同的源端口号,因而仍保留了报文之间的区别。当各报文的回应报文到达时,NAT设备仍能够根据回应报文的目的IP地址和目的端口号来区别该报文应转发到的内部主机。
 
 
 
采用 NAPT可以更加充分地利用 IP地址资源, 实现更多内部网络主机对外部网络的同时访问。

目前,NAPT支持两种不同的地址转换模式:

l         Endpoint-Independent Mapping(不关心对端地址和端口转换模式) 该模式下,NAT设备通过建立三元组(源地址、源端口号、协议类型)表项来进行
 
地址分配和报文过滤。即,只要是来自相同源地址和源端口号的报文,不论其目的地址是否相同,通过 NAPT映射后,其源地址和源端口号都被转换为同一个外部地址和端口号, 并且 NAT设备允许外部网络的主机通过该转换后的地址和端口来访问这些内部网络的主机。 这种模式可以很好得支持位于不同 NAT设备之后的主机间进行互访。

l         Address and Port-Dependent Mapping(关心对端地址和端口转换模式)

该模式下,NAT设备通过建立五元组(源地址、源端口号、协议类型、目的地址、目的端口号)表项为依据进行地址分配和报文过滤。即,对于来自相同源地址和源端口号的报文,若其目的地址和目的端口号不同,通过 NAPT映射后,相同的源地址和源端口号将被转换为不同的外部地址和端口号, 并且 NAT设备只允许这些目的地址对应的外部网络的主机才可以通过该转换后的地址和端口来访问这些内部网络的主机。 这种模式安全性好, 但是不便于位于不同 NAT设备之后的主机间进行互访
 
 
 
Note:
 
目前使用的路由器可能属于这种类型
 
 
 
内部服务器

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

Note:
 
加一条PortMapping 规则可以解决.
 
NAT设备提供的内部服务器功能, 就是通过静态配置 “公网 IP地址+端口号” 与 “私网 IP地址+端口号”间的映射关系,实现公网 IP地址到私网 IP地址的“反向”转换。例如,可以将 20.1.1.1:8080配置为内网某 Web服务器的外部网络地址和端口号供外部网络访问。

 
 
如 图 3所示,外部网络用户访问内部网络服务器的数据报文经过NAT设备时,NAT设备根据报文的目的地址查找地址转换表项,将访问内部服务器的请求报文的目的IP地址和端口号转换成内部服务器的私有IP地址和端口号。当内部服务器回应该报文时,NAT设备再根据已有的地址映射关系将回应报文的源IP地址和端口号转换成公网IP地址和端口号。 
 
 
 


 
 
测试方法:
 
 
 
1当禁止掉此功能后,所有LAN 端机器都不能访问Internet.
 
2 抓包分析
 
3 通过 iperf  LAN---WAN 跑一条数据流,查看NAT Table 是否将这条规则插入到


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/gl1987807/archive/2011/03/05/6225971.aspx