《计算机网络安全》学习
网络地址转换
- 网络地址转换简介
网络地址转换(Network Address Translation,NAT)是一个IETF(Internet Engineering Task Force,Internet工程任务组)标准,允许一个整体机构以一个公用IP地址出现在Internet上。顾名思义,它是一种把内部私有网络地址翻译成合法网络IP地址的技术。NAT最主要的两个目的,一个是解决IP地址空间不足问题,另一个是向外界隐藏内部网结构。NAT的三种模式如下
- M-1:多个内部网地址翻译到1个IP地址。
- 1-1:简单的地址翻译。
- M-N:多个内部网地址翻译到N个IP地址池。
- NAT分类
NAT有三种类型:静态NAT(Static NAT)、动态地址NAT(Pooled NAT)、网络地址端口转换NAPT(Network Address Port Translation)。
其中,网络地址端口转换NAPT是把内部地址映射到外部网络的一个IP地址的不同端口上。它可以将中小型的网络隐藏在一个合法的IP地址后面。NAPT与动态地址NAT不同,它将内部连接映射到外部网络中的一个单独的IP地址上,同时在该地址上加上一个由NAT设备选定的端口号。
NAPT是使用最普遍的一种转换方式。它又包含两种转换方式:源NAT和目的NAT。
(1)源NAT(SNAT:Source NAT):修改数据包的源地址。源NAT改变第一个数据包的来源地址,它永远会在数据包发送到网络之前完成。数据包伪装就是一个源NAT的例子。
(2)目的NAT(DNAT:Destination NAT):修改数据包的目的地址。目的NAT刚好与源NAT相反,它是改变第一个数据包的目的地址。平衡负载、端口转发和透明代理就属于目的NAT。
网络地址转换NAT分类
- NAT原理
(1)地址转换。NAT的基本工作原理是,当私有网主机和公共网主机通信的IP包经过带有NAT功能的防火墙时,将IP包中的源IP或目的IP在私有IP和NAT的公共IP之间进行转换。
例如:
NAT示意图
带有NAT功能的防火墙有2个网络端口,其中公共网络端口的IP地址是统一分配的公共IP,为202.20.65.5;私有网络端口的IP地址是保留地址,为192.168.1.1。私有网中的主机192.168.1.2向公共网中的主机202.20.65.4发送了1个IP包(Dst=202.20.65.4,Src=192.168.1.2)。
当IP包经过带有NAT功能的防火墙时,防火墙会将IP包的源IP转换为防火墙的公共IP并转发到公共网,此时IP包(Dst=202.20.65.4,Src=202.20.65.5)中已经不含任何私有网IP的信息。由于IP包的源IP已经被转换成NAT网关的公共IP,Web Server发出的响应IP包(Dst=202.20.65.5,Src=202.20.65.4)将被发送到防火墙。
这时,带有NAT功能的防火墙会将IP包的目的IP转换成私有网中主机的IP,然后将IP包(Dst=192.168.1.2,Src=202.20.65.4)转发到私有网。对于通信双方而言,这种地址的转换过程是完全透明的。
NAT地址转换示意图
如果内网主机发出的请求包未经过NAT,那么当Web Server收到请求包,回复的响应包中的目的地址就是私有网IP地址,在Internet上无法正确送达,导致连接失败。
(2)连接跟踪。在上述过程中,带有NAT功能的防火墙在收到响应包后,就需要判断将数据包转发给谁。此时如果子网内仅有少量客户机,可以用静态NAT手工指定;但如果内网有多台客户机,并且各自访问不同网站,这时候就需要连接跟踪(connection track),如图
在带有NAT功能的防火墙收到客户机发来的请求包后,做源地址转换,并且将该连接记录保存下来,当防火墙收到服务器发来的响应包后,查找轨迹表(Track Table),确定转发目标,做目的地址转换,转发给客户机。
(3)端口转换。以上述客户机访问服务器为例,当仅有一台客户机访问服务器时,带有NAT功能的防火墙只需更改数据包的源IP或目的IP即可正常通信。但是如果Client A和Client B同时访问Web Server,那么当防火墙收到响应包的时候,就无法判断应该将数据包转发给哪台客户机,如图
此时,带有NAT功能的防火墙会在连接轨迹(Connection Track)中加入端口信息加以区分。如果两客户机访问同一服务器的源端口不同,那么在轨迹表里加入端口信息即可区分;如果源端口正好相同,那么在执行SNAT和DNAT的同时对源端口也要做相应的转换,如图
- NAT协议的应用
NAT主要可以实现以下几个功能:数据包伪装、平衡负载、端口转发和透明代理。
(1)数据伪装:可以将内网数据包中的地址信息更改成统一的对外地址信息,不让内网主机直接暴露在因特网上,保证内网主机的安全。同时,该功能也常用来实现共享上网。
(2)端口转发:当内网主机对外提供服务时,由于使用的是内部私有IP地址,外网无法直接访问。因此,需要在网关上进行端口转发,将特定服务的数据包转发给内网主机。
(3)负载均衡:目的地址转换NAT可以重定向一些服务器的连接到其他随机选定的服务器,从而实现负载均衡。
(4)失效终结:目的地址转换NAT可以用来提供高可靠性的服务。如果一个系统有一台通过路由器访问的关键服务器,一旦路由器检测到该服务器停机,它可以使用目的地址转换NAT透明地把连接转移到一个备份服务器上。
(5)透明代理:NAT可以把连接到因特网的HTTP连接重定向到一个指定的HTTP代理服务器以缓存数据和过滤请求。一些因特网服务提供商就使用这种技术来减少带宽的使用而不用让客户配置他们的浏览器支持代理连接。