NAT模块培训1.NAT技术实现:NAT(NetworkAddressTranslation,网络地址翻译)是一种将一个IP地址域映射到另一个IP地址域技术,目前广泛用于私有地址域与公用地址域的转换以解决IP地址匮乏问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。当访问Internet的报文经过NAT网关时,NAT网关会用一个合法的公网地址替换原报文中的源IP地址,并对这种转换进行记录;之后,当报文从Internet侧返回时,NAT网关查找原有的记录,将报文的目的地址再替换回原来的私网地址,并送回发出请求的主机。这样,在私网侧或公网侧设备看来,这个过程与普通的网络访问并没有任何的区别。NAT可以分为SNAT(SourceNAT,源网络地址翻译)和DNAT(DestinationNAT,目的网络地址翻译)两种类型,分别完成对向外的源地址和向内的目的地址的翻译,但是NAT的转化只是限于将IP数据报头中的IP地址转换为另一个IP地址的过程。NAT的基本原理是仅在私网主机需要访问Internet时才会分配到合法的公网地址,而在内部互联时则使用私网地址。2.1NAT实现方式2.1.1BasicNAT方式BasicNAT方式属于一对一的地址转换,在这种方式下只转换IP地址,而对TCP/UDP协议的端口号不处理,一个公网IP地址不能同时被多个用户使用。图1BasicNAT方式原理图如图1所示,BasicNAT方式的处理过程如下:(1)NAT设备收到私网侧主机发送的访问公网侧服务器的报文。(2)NAT设备从地址池中选取一个空闲的公网IP地址,建立与私网侧报文源IP地址间的NAT转换表项(正反向),并依据查找正向NAT表项的结果将报文转换后向公网侧发送。(3)NAT设备收到公网侧的回应报文后,根据其目的IP地址查找反向NAT表项,并依据查表结果将报文转换后向私网侧发送。说明:由于BasicNAT这种一对一的转换方式并未实现公网地址的复用,不能有效解决IP地址短缺的问题,因此在实际应用中并不常用。2.1.2NAPT方式由于BasicNAT方式并未实现地址复用,因此并不能解决公网地址短缺的问题,而NAPT方式则可以解决这个问题。NAPT方式属于多对一的地址转换,它通过使用“IP地址+端口号”的形式进行转换,使多个私网用户可共用一个公网IP地址访问外网,因此是地址转换实现的主要形式。图2NAPT方式原理图如图2所示,NAPT方式的处理过程如下:(1)NAT设备收到私网侧主机发送的访问公网侧服务器的报文。(2)NAT设备从地址池中选取一对空闲的“公网IP地址+端口号”,建立与私网侧报文“源IP地址+源端口号”间的NAPT转换表项(正反向),并依据查找正向NAPT表项的结果将报文转换后向公网侧发送。(3)NAT设备收到公网侧的回应报文后,根据其“目的IP地址+目的端口号”查找反向NAPT表项,并依据查表结果将报文转换后向私网侧发送。2.1.3NATServer方式出于安全考虑,大部分私网主机通常并不希望被公网用户访问。但在某些实际应用中,需要给公网用户提供一个访问私网服务器的机会。而在BasicNAT或NAPT方式下,由于由公网用户发起的访问无法动态建立NAT表项,因此公网用户无法访问私网主机。NATServer(NAT内部服务器)方式就可以解决这个问题——通过静态配置“公网IP地址+端口号”与“私网IP地址+端口号”间的映射关系,NAT设备可以将公网地址“反向”转换成私网地址。图3NATServer方式原理图如图3所示,NATServer方式的处理过程如下:(1)在NAT设备上手工配置静态NAT转换表项(正反向)。(2)NAT设备收到公网侧主机发送的访问私网侧服务器的报文。(3)NAT设备根据公网侧报文的“目的IP地址+目的端口号”查找反向静态NAT表项,并依据查表结果将报文转换后向私网侧发送。(4)NAT设备收到私网侧的回应报文后,根据其“源IP地址+源端口号”查找正向静态NAT表项,并依据查表结果将报文转换后向公网侧发送。NAT还可以分为静态NAT和动态NAT:-静态NAT,将内部网络中的每个主机都永久映射成外部网络中的某个合法的地址,多用于服务器。-动态NAT,则是在外部网络中定义了一个或多个合法地址,采用动态分配的方法映射到内部网络。2.2ALG机制2.2.1ALG机制简介通常情况下,NAT只改变IP报文头部地址信息,而不对报文载荷进行分析,这对于普通的应用层协议(如Telnet)来说,并不会影响其业务的开展;然而有一些应用层协议,其报文载荷中可能也携带有地址或端口信息,若这些信息不能被有效转换,就可能导致问题。譬如,某些应用层协议会在客户端与服务器之间协商端口号,然后服务器使用协商出的端口号向客户端发起连接。如果NAT设备对二者的协商过程一无所知,那么当服务器向客户端发起连接时,就会因为在NAT设备上找不到内部与外部的IP地址/端口号对应关系而造成连接失败。这个问题可以通过应用层网关(ALG)机制来解决。ALG是特定应用协议的转换代理,它通过对IP报文的载荷进行解析,改变封装在其中的地址和端口信息,并完成其它必要的工作以使应用协议可以穿越NAT。ALG机制可处理的应用层协议包括DNS、FTP、H.323、ILS、L2TP、IPsec和SIP等,在我们的测试过程中主要涉及到:FTP、H.323、VPN的L2TP与IPsec和SIP,下面把各个协议测试为例介绍ALG处理的过程。2.2.2FTP协议的ALG处理在FTP工作过程中,客户端与服务器之间将建立两条TCP连接:一条为控制连接,负责传输诸如用户指令和参数等控制信息,其中包括发起数据连接时要用到的端口信息;另一条为数据连接,负责在服务器与客户端之间建立数据通道以传送文件。FTP可分为主动和被动两种模式,根据所采用的模式以及服务器/客户端的位置来决定是否需要进行ALG处理:1.主动模式在主动模式下,在由客户端发起控制连接中,客户端将指定的端口通过PORT指令发送给服务器,然后由服务器向该端口发起数据连接,因此:当客户端位于公网而服务器位于私网时,由公网访问私网的服务器,由于客户端向服务器通告的是公网地址和端口,服务器可直接向其发起数据连接,因此无需在控制连接中进行ALG处理;当客户端位于私网而服务器位于公网时,由于客户端向服务器通告的是私网地址和端口,因此需在控制连接中通过ALG处理将其转换为公网地址和端口,以供服务器发起数据连接所用,其过程如图6所示。抓包见LAN测—PORT图6主动模式下的ALG处理(1)首先,由客户端向服务器发送PORT指令,以向服务器通知发起数据连接所应使用的地址和端口(IP1,Port1);(2)NAT设备收到该指令后,将其中所携带的私网地址和端口(IP1,Port1)替换为公网地址和端口(IP2,Port2),并据此创建相应的NAPT表项——此过程即为ALG处理;(3)服务器收到该指令后,主动向公网地址和端口(IP2,Port2)发起数据连接,并在通过NAT设备时被转化为私网地址和端口(IP1,Port1)。2.被动模式在被动模式下,在由客户端发起控制连接中,客户端向服务器发送PASV请求来通知服务器它将发起被动模式,服务器再将指定的端口通过PASV响应发送给客户端,然后由客户端向该端口发起数据连接,因此:当服务器位于公网而客户端位于私网时,由于服务器向客户端通告的是公网地址和端口,客户端可直接向其发起数据连接,因此无需在控制连接中进行ALG处理;当服务器位于私网而客户端位于公网时,由于服务器向客户端通告的是私网地址和端口,因此需在控制连接中通过ALG处理将其转换为公网地址和端口,以供客户端发起数据连接所用,其过程如图7所示。图7被动模式下的ALG处理(1)首先,由客户端向服务器发送PASV请求;(2)服务器收到该请求后,选择并打开服务器端数据通道的地址和端口(IP1,Port1),并通过PASV响应向客户端返回该地址和端口;(3)NAT设备收到该响应后,将其中所携带的私网地址和端口(IP1,Port1)替换为公网地址和端口(IP2,Port2),并据此创建相应的NAPT表项——此过程即为ALG处理;(4)客户端收到该响应后,向公网地址和端口(IP2,Port2)发起数据连接,并在通过NAT设备时被转换为私网地址和端口(IP1,Port1)。2.2.2H.323与SIP协议的ALG处理SIP和H.323协议主要用于IP语音、视频通信领域,。SIP是基于IP网络,在网络环境中,一个会话可以是各种不同类型的内容(如普通的文本数据、音视频数据、游戏数据等),应用具有巨大的灵活性。SIP采用Client/Server结构的消息机制,对呼叫的控制是将控制封装到消息的头域中,通过消息的传递来实现。因此SIP系统的终端就比较智能化,它不只提供数据,还提供呼叫控制。其他各种则用来进行定位、转发或接受消息。H.323的建立是为不同厂商的多媒体产品能互操作,而设备的兼容性是消费、商业、娱乐及专业市场上厂家和最终用户最为关心的问题之一。H.323解决了点对点及多点视讯会议中诸如呼叫与会话控制、多媒体与带宽管理等问题。目前广泛应用于基于IP的视讯会议系统中。ALG的SIP用你与我们测试的VOIP走的是两个不同的通道