欢迎来到天天文库
浏览记录
ID:6076671
大小:379.00 KB
页数:8页
时间:2018-01-02
《nat alg原理与应用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、NATALG原理与应用1NATALG简介普通NAT实现了对UDP或TCP报文头中的的IP地址及端口转换功能,但对应用层数据载荷中的字段无能为力,在许多应用层协议中,比如多媒体协议(H.323、SIP等)、FTP、SQLNET等,TCP/UDP载荷中带有地址或者端口信息,这些内容不能被NAT进行有效的转换,就可能导致问题。而NATALG(ApplicationLevelGateway,应用层网关)技术能对多通道协议进行应用层报文信息的解析和地址转换,将载荷中需要进行地址转换的IP地址和端口或者需特殊处理的字段进行相应的转换和
2、处理,从而保证应用层通信的正确性。例如,FTP应用就由数据连接和控制连接共同完成,而且数据连接的建立动态地由控制连接中的载荷字段信息决定,这就需要ALG来完成载荷字段信息的转换,以保证后续数据连接的正确建立。2NATALG特点NATALG为内部网络和外部网络之间的通信提供了基于应用的访问控制,具有以下优点:(1)ALG统一对各应用层协议报文进行解析处理,避免其它模块对同一类报文应用层协议的重复解析,可以有效提高报文转发效率。(2)可支持多种应用层协议:FTP、H.323(包括RAS、H.225、H.245)、SIP、DNS
3、、ILS、MSN/QQ、NBT、RTSP、SQLNET、TFTP等。3NATALG技术实现先介绍ALG涉及到的两个概念:会话:记录了传输层报文之间的交互信息,包括源IP地址、源端口、目的IP地址、目的端口,协议类型和源/目的IP地址所属的VPN实例。交互信息相同的报文属于一条流,通常情况下,每个会话对应出方向和入方向的两条流。动态通道:当应用层协议报文中携带地址信息时,这些地址信息会被用于建立动态通道,后续符合该地址信息的连接将使用已经建立的动态通道来传输数据。下面以多通道应用协议FTP在NAT组网环境中的ALG应用来具体
4、说明报文载荷的转换过程。3.1ALG与FTP的应用FTP的两种不同工作模式:PORT(主动模式)与PASV(被动模式)。FTP需要用到两个连接:控制连接与数据连接,控制连接专门用于FTP控制命令及命令执行信息传送;数据连接专门用于传输数据(上传/下载)。3.1.1主动模式(PORT)的连接过程如图1所示,位于内部网络的客户端以PORT方式访问外部网络的FTP服务器,经过中间的设备进行NAT转换,该设备上使能了ALG特性。图1FTPPORT方式报文载荷的ALG处理图图1中私网侧的主机要访问公网的FTP服务器。NAT设备上配置
5、了私网地址192.168.1.2到公网地址8.8.8.11的映射,实现地址的NAT转换,以支持私网主机对公网的访问。组网中,若没有ALG对报文载荷的处理,私网主机发送的PORT报文到达服务器端后,服务器无法根据私网地址进行寻址,也就无法建立正确的数据连接。整个通信过程包括如下四个阶段:(1)私网主机和公网FTP服务器之间通过TCP三次握手成功建立控制连接。(2)控制连接建立后,私网主机向FTP服务器发送PORT报文,报文中携带私网主机指定的数据连接的目的地址和端口,用于通知服务器使用该地址和端口和自己进行数据连接。(3)P
6、ORT报文在经过支持ALG特性的NAT设备时,报文载荷中的私网地址和端口会被转换成对应的公网地址和端口。即设备将收到的PORT报文载荷中的私网地址192.168.1.2转换成公网地址8.8.8.11,端口1084转换成12487。(4)公网的FTP服务器收到PORT报文后,解析其内容,并向私网主机发起数据连接,该数据连接的目的地址为8.8.8.11,目的端口为12487(注意:一般情况下,该报文源端口为20,但由于FTP协议没有严格规定,有的服务器发出的数据连接源端口为大于1024的随机端口,如本例采用的是wftpd服务器
7、,采用的源端口为3004)。由于该目的地址是一个公网地址,因此后续的数据连接就能够成功建立,从而实现私网主机对公网服务器的访问。在HOST(FTP客户端)抓包如图2所示:图2PORT模式FTP客户端抓包在FTP服务器端抓包如图3所示:图3PORT模式FTP服务器端抓包由上抓包可知:主动模式(PORT)的连接过程是:客户端程序首先会为自己随机分配一个TCP端口,它使用这个端口向服务器的FTP端口(默认为21)发出连接请求,服务器接受请求之后会建立一条控制链路,然后客户程序向服务器发出PORT命令(通常格式为PORTA1,A2
8、,A3,A4,P1,P2,其中A1,A2,A3,A4为客户端IP地址,P1,P2为随机的一个数据连接端口号,端口号等于P1*256+P2),告诉服务器它的数据通道的端口打开了。当需要传送数据时,服务器向客户端提供的随机端口发送连接请求,请求被接受之后便开始传输数据,主动模式下,需要做ALG处理的是客户端
此文档下载收益归作者所有