文章目录
出现原因
由于互联网快速发展,以及IPv4地址规划不合理的问题,导致了IPv4地址短缺。为了解决由于IPv4地址短缺问题,有以下几种解决方法:
- VLSM:可变长子网掩码
- NAT:网络地址转换技术
- IPv6(根本解决方法)
但是由于从IPv4到IPv6技术的迁移,需要非常多的时间,以及IPv6技术相对于IPv4不成熟等问题,目前IPv6并没有得到广泛的应用。所以NAT这种临时解决方案显得尤为重要。
基本概念
NAT:
Network Address Translation,网络地址转换技术。是将私网地址与公网地址进行转换,实现私网用户能在公网上通信。
优点:
- 实现IP地址复用,节约宝贵的地址资源(私网地址对公网地址可以实现多对一)
- 对于内外网络用户,感觉不到IP地址转换的过程,整个过程对于用户来说是透明的
- 对内网用户提供隐私保护,外网用户不能直接获得内网用户的IP地址、服务等信息,具有一定的安全性。
- 通过配置多个相同的内部服务器的方式可以减小单个服务器在大流量时承担的压力,实现服务器负载均衡。
缺点:
-
限制某些具体应用
由于需要对数据报文进行IP地址的转换,涉及IP地址的数据报文的报头不能被加密。在应用协议中,如果报文中有地址或端口需要转换,则报文不能被加密。例如,不能使用加密的FTP连接,否则FTP的port命令不能被正确转换。 -
网络监控难度大
网络监管变得更加困难。例如,如果一个黑客从内网攻击公网上的一台服务器,那么要想追踪这个攻击者很难。因为在报文经过NAT转换设备的时候,地址经过了转换,不能确定哪台才是黑客的主机。
NAT一般配置在网络路由器或防火墙上。
NAT技术基本原理
源NAT技术
静态NAT
静态NAT实现了私有地址和公有地址的一对一映射。如果希望一台主机优先使用某个关联地址,或者想要外部网络使用一个指定的公网地址访问内部服务器时,可以使用静态NAT。但是在大型网络中,这种一对一的IP地址映射无法缓解公用地址短缺的问题。、
如上图,源地址为192.168.1.1的报文需要发往公网地址100.1.1.1。在网关RTA上配置了一个私网地址192.168.1.1到公网地址200.10.10.1的映射。当网关收到主机A发送的数据包后,会先将报文中的源地址192.168.1.1转换为200.10.10.1,然后转发报文到目的设备。目的设备回复的报文目的地址是200.10.10.1。当网关收到回复报文后,也会执行静态地址转换,将200.10.10.1转换成192.168.1.1,然后转发报文到主机A。和主机A在同一个网络中其他主机,如主机B,访问公网的过程也需要网关RTA做静态NAT转换。
注意:
- 静态NAT实现了私有地址和共有地址一对一的映射(一个私有地址对应一个共有地址),并没有做到缓解地址短缺的问题,只是做到了地址转换。
- 一个公网地址只会分配给唯一且固定的内网地址(相当于上图主机A绑定了两个地址)
动态NAT
动态NAT通过使用地址池来实现。
如上图,当内部主机A和主机B需要与公网中的目的主机通信时,网关RTA会从配置的公网地址池中选择一个未使用的公网地址与之做映射。每台主机都会分配到地址池中的一个唯一地址。当不需要此连接时,对应的地址映射将会被删除,公网地址也会被恢复到地址池中待用。当网关收到回复报文后,会根据之前的映射再次进行转换之后转发给对应主机。
注意:
- 动态NAT实际上实现的还是私有地址和公有地址一对一的关系,但是共有地址不再绑定给特定的内网地址。实现了一定程度的缓解地址短缺问题。
- 动态NAT地址池中的地址用尽以后,只能等待被占用的公用IP被释放后,其他主机才能使用它来访问公网。
NAPT
NAPT:Network Address Port Translation 网络端口地址转换技术
如上图,RTA收到一个私网主机发送的报文,源IP地址是192.168.1.1,源端口号是1025,目的IP地址是100.1.1.1,目的端口是80。RTA会从配置的公网地址池中选择一个空闲的公网IP地址和端口号,并建立相应的NAPT表项。这些NAPT表项指定了报文的私网IP地址和端口号与公网IP地址和端口号的映射关系。之后,RTA将报文的源IP地址和端口号转换成公网地址200.10.10.1和端口号2843,并转发报文到公网。当网关RTA收到回复报文后,会根据之前的映射表再次进行转换之后转发给主机A。主机B同理。
注意:
- NAPT技术允许多个内部地址映射到同一个公有地址的不同端口。
- NAPT实现了私有地址对共有地址多对一
Easy IP
- Easy IP本质上是NAPT(所以原理与NAPT大致相似)
- 由于网关设备出接口IP地址为公网地址,所以可以利用该出接口地址来作为地址转换的公有地址。
Easy IP适用于小规模局域网中的主机访问Internet的场景。小规模局域网通常部署在小型的网吧或者办公室中,这些地方内部主机不多,出接口可以通过拨号方式获取一个临时公网IP地址。Easy IP可以实现内部主机使用这个临时公网IP地址访问Internet。
NAT ALG
NAT ALG(Application Level Gateway,应用级网关)是特定的应用协议的转换代理,可以完成应用层数据中携带的地址及端口号信息的转换。
在以太网数据帧结构中,IP首部包含32位的源IP地址和32位的目的IP地址,TCP首部包含16位的源端口号和16位的目的端口号。但是很多协议会通过IP报文的数据载荷进行新端口甚至新IP地址的协商。协商完成之后,通信双方会根据协商结果建立新的连接进行后续报文的传输。而这些协商出来的端口和IP地址往往是随机的,管理员并不能为其提前配置好相应的NAT规则,这些协议在NAT转换过程中就会出现问题。
普通NAT实现了对UDP或TCP报文头中的的IP地址及端口转换功能,但对应用层数据载荷中的字段无能为力,在许多应用层协议中,比如多媒体协议(H.323、SIP等)、FTP、SQLNET等,TCP/UDP载荷中带有地址或者端口信息,这些内容不能被NAT进行有效的转换,就可能导致问题。而NAT ALG(Application Level Gateway,应用层网关)技术能对多通道协议进行应用层报文信息的解析和地址转换,将载荷中需要进行地址转换的IP地址和端口或者需特殊处理的字段进行相应的转换和处理,从而保证应用层通信的正确性。
例如,FTP应用就由数据连接和控制连接共同完成,而且数据连接的建立动态地由控制连接中的载荷字段信息决定,这就需要ALG来完成载荷字段信息的转换,以保证后续数据连接的正确建立。
为了实现应用层协议的转发策略而提出了ASPF功能。ASPF功能的主要目的是通过对应用层协议的报文分析,为其开放相应的包过滤规则,而NAT ALG的主要目的,是为其开放相应的NAT规则。由于两者通常都是结合使用的,所以使用同一条命令就可以将两者同时开启。
图中私网侧的主机要访问公网的FTP服务器。NAT设备上配置了私网地址192.168.1.2到公网地址8.8.8.11的映射,实现地址的NAT转换,以支持私网主机对公网的访问。组网中,若没有ALG对报文载荷的处理,私网主机发送的PORT报文到达服务器端后,服务器无法根据私网地址进行寻址,也就无法建立正确的数据连接。整个通信过程包括如下四个阶段:
- 私网主机和公网FTP服务器之间通过TCP三次握手成功建立控制连接。
- 控制连接建立后,私网主机向FTP服务器发送PORT报文,报文中携带私网主机指定的数据连接的目的地址和端口,用于通知服务器使用该地址和端口和自己进行数据连接。
- PORT报文在经过支持ALG特性的NAT设备时,报文载荷中的私网地址和端口会被转换成对应的公网地址和端口。即设备将收到的PORT报文载荷中的私网地址192.168.1.2转换成公网地址8.8.8.11,端口1084转换成12487。
- 公网的FTP服务器收到PORT报文后,解析其内容,并向私网主机发起数据连接,该数据连接的目的地址为8.8.8.11,目的端口为12487(注意:一般情况下,该报文源端口为20,但由于FTP协议没有严格规定,有的服务器发出的数据连接源端口为大于1024的随机端口,如本例采用的是wftpd服务器,采用的源端口为3004)。由于该目的地址是一个公网地址,因此后续的数据连接就能够成功建立,从而实现私网主机对公网服务器的访问。
l
NAT服务器
使外网用户能够访问私网服务器
一般采用静态映射(NAT Server):公网地址和私网地址一对一进行映射。外网用户想要访问内网用户只需要目的IP地址为设置好的公网地址。
为什么?:因为外网用户访问私网服务器,若不指定一个公网地址,则外网用户不能访问私网服务器;若不做静态映射,没有固定的公网地址,那么公网用户访问时需要每次都输入不同的地址。
双向NAT技术
双向NAT应用场景的通信双方访问对方的时候目的地址都不是真实的地址,而是NAT转换后的地址。
一般来说,内网属于高优先级区域,外网属于低优先级区域。当低优先级安全区域的外网用户访问内部服务器的公网地址时,会将报文的目的地址转换为内部服务器的私网地址,但内部服务器需要配置到该公网地址的路由。
l如果要避免配置到公网地址的路由,则可以配置从低优先级安全区域到高优先级安全区域方向的NAT。同一个安全区域内的访问需要作NAT,则需要配置域内NAT功能。
域间双向NAT(NAT Server+源NAT)
当配置NAT Server时,服务器需要配置到公网地址的路由才可正常发送回应报文。如果要简化配置,避免配置到公网地址的路由,则可以对外网用户的源IP地址也进行转换,转换后的源IP地址与服务器的私网地址在同一网段。这样内部服务器会缺省将回应报文发给网关,即设备本身,由设备来转发回应报文。
域内双向NAT
若需要地址转换的双方都在同一个安全域内,那么就涉及到了域内NAT的情况。当FTP服务器和用户均在Trust区域,用户访问FTP服务器的对外的公网IP地址,这样用户与FTP服务器之间所有的交互报文都要经过防火墙。这时需要同时配置内部服务器和域内NAT。
域内NAT是指当内网用户和服务器部署在同一安全区域的情况下,仍然希望内网用户只能通过访问服务器的公网地址的场景。在实现域内NAT过程中,既要将访问内部服务器的报文的目的地址由公网地址转换为私网地址,又需要将源地址由私网地址转换为公网地址。