本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严禁用于任何商业用途。
msn: [email]yfydz_no1@hotmail.com[/email]
来源: [url]http://yfydz.cublog.cn[/url]
 
 
NAT(Network Address Translation)是在IPv4地址日渐枯竭的情况下出现的一种技术,在RFC3022中定义,可将整个组织的内部IP都映射到一个合法IP上来进行Internet的访问,也可将外部对某IP的访问映射到内部的服务器上。与NAT相关的术语有IP伪装(IP Masquerade)、端口映射(Port Mapping)、端口地址转换(Port Address Translation)、透明代理(Transparent Proxy)等,它们都是NAT的某种表现形式。目前NAT功能基本上属于防火墙、路由器的标配功能之一。
 
NAT分为源NAT和目的NAT两种,源NAT是指转换前源IP地址和转换后源IP地址不同,数据进入防火墙后,防火墙将其源地址进行了转换后再将其发出,使外部看不到数据包原来的源地址,对于TCP/UDP协议的数据包,防火墙不仅修改地址,还通过修改源端口来区分不同内部地址的连接,因此NAT环境下一个合法IP最多可以有65535条TCP连接;目的NAT是指转换前目的IP地址和转换后目的IP地址不同(对于TCP/UDP协议,也可以改变端口号),数据进入防火墙后,防火墙将其目的地址进行了转换后再将其发出,使看不到数据包原来的目的地址。
 
在进行NAT时,如果是一个地址到一个地址的转换,称为一对一模式;如果是一个网段地址到一个地址的转换,称为多对一的转换;如果是一个网段地址到一个网段地址的转换,称为多对多的转换。上面说的IP伪装就属于源NAT,而端口映射和透明代理等属于目的NAT。
NAT从另一个角度也可分为静态和动态两种,静态方式是明确指定了转换前后的地址和端口的情况,可以有一对一、一对多、多对一等方式,如果实际地址发生变化,NAT规则必须相应改变;而动态方式也就是IP伪装方式,是一种多到一的源NAT转换模式,一般只需指定转换前的地址,转换后地址则是防火墙的IP地址,此地址是可以动态改变的,而NAT规则可以不变。静态NAT一般用在防火墙IP地址都是固定的情况,而动态NAT用于防火墙IP地址不固定的场合,如ADSL拨号。动态情况下也可以进行目的NAT,但NAT规则是在获取了地址后才起作用。
 
一般来说,源NAT多用于从内部网络到外部网络的访问,内部网络地址可以是保留IP地址;目的NAT多用于外部网络到内部服务器的访问,内部服务器可使用保留IP地址。当使用透明代理模式时,由内到外的访问实际上是一种目的NAT,是将访问的目的IP和目的端口转换为代理服务器的IP和代理端口。
 
使用目的NAT功能时可实现负载均衡(Load Balance,LB)功能,假设防火墙外网卡上有一个合法IP,内部有多个服务器同时提供服务,当将访问防火墙外网卡IP的访问请求转换为这一组内部服务器的IP地址时,访问请求就可以在这一组服务器进行均衡。
 
一般情况下的NAT或者修改源地址部分,或者修改目的地址部分,两者不同时修改。但在某些特殊情况下,有同时需要修改源和目的的需求,一种情况是同网段×××的实现,同一个包在本地网关处修改源地址,在对方网关处修改目的地址;第二种情况是服务器和内部机器在相同的内部地址网段,但要求用服务器的外部合法地址访问服务器,即要将内部机器对防火墙外部地址的访问转为防火墙内部地址对服务器内部地址的访问,这种情况需要在防火墙上同时修改数据包的源和目的地址部分。