首页 > 编程知识 正文

NAT的作用,iptables配置nat

时间:2023-05-05 12:39:14 阅读:106800 作者:2681

1NAT ALG配置文件常规NAT实现UDP或TCP报头中的IP地址和端口翻译功能,但对APP应用层数据加载中的字段无能为力。 许多APP应用层协议,例如多媒体协议(H.323、SIP等)、FTP、SQLNET等,TCP/UDP负载包含地址或端口信息。 NATALG(applicationlevelgateway )技术对多通道协议进行APP应用层消息信息的分析和地址转换,以及负载中需要地址转换的IP地址和端口或特殊的

例如,FTP APP应用是通过数据连接和控制连接一起完成的,其中数据连接的建立是由控制连接的有效载荷字段信息动态决定的。 这样,为了确保正确地建立后续的数据连接,ALG需要完成有效载荷字段信息的变换。

2NAT ALG的特点NAT ALG为内部网络和外部网络之间的通信提供了基于APP应用的访问控制,具有以下优点:

(1) ALG统一解析处理各APP应用层协议的消息,避免其他模块对同一类型消息APP协议的重复解析,可以有效提高消息传输效率。

2 )多种APP应用层协议,例如FTP、H.225 (包括ras、H.225、H.245 )、SIP、DNS、ILS、MSN/QQ、NBT、RTSP、SQLNET、TFTP等

3NAT ALG技术的实现首先介绍与ALG相关的两个概念:

会话记录传输层消息之间的交互信息,包括源IP地址、源端口、目标IP地址、目标端口、协议类型以及源/目标IP地址所属的VPN实例。 交换相同消息的消息属于一个流,通常每个会话对应于两个流:方向和方向。

动态信道:如果APP应用层协议消息包含地址信息,则这些地址信息用于建立动态信道,然后与该地址信息匹配的连接使用已经建立的动态信道传输数据。

下面,使用NAT组网环境下的多信道APP协议FTP的ALG应用,具体说明消息载荷的转换过程。

3358 www.Sina.com/http://www.Sina.com/FTP的两种不同的操作模式:主动模式和被动模式)。

FTP需要两个连接。 控制连接、数据连接、控制连接专用于FTP控制命令和命令执行信息传输。 数据连接专用于数据传输(上传/下载)。

如图1所示,在内部网络中的客户端以PORT方式接入外部网络的FTP服务器,经由中间的设备进行NAT变换

图1FTP PORT方式消息加载的ALG处理图

图1的私有网侧的主机访问公共网的FTP服务器。 NAT设备配置有从专用网络地址192.168.1.2到公用网络地址8.8.8.11的映射在网络中,如果没有ALG对信息负荷的处理,从互联LAN主机发送的PORT信息到达服务器一侧后,服务器就无法根据互联LAN地址进行地址指定,从而连接正确的数据整个通信过程包括以下四个阶段。

)1)成功建立了互联局域网主机和公共局域网FTP服务器之间的TCP握手控制连接。

)控制连接建立后,互联LAN主机向FTP服务器发送PORT消息,互联LAN主机在消息中携带指定的数据连接目标的地址和端口,通知服务器使用该地址和端口与自己进行数据连接

)3)通过支持ALG特性的NAT设备时,端口消息将消息加载中的专用网络地址和端口转换为相应的公共网络地址和端口。 换句话说,设备将接收到的端口消息负载中的私有网络地址192.168.1.2转换为公共网络地址8.8.8.11,并将端口1084转换为12487。

4 )公用网的FTP服务器,接收到PORT消息后,解析其内容,开始向专用网主机连接数据。 此数据连接的目标地址为8.8.8.11,目标端口为12487 (注意:通常此消息源端口为20,但由于FTP协议没有严格的规定,有些服务器的随机端口大于1024

器,采用的源端口为3004)。由于该目的地址是一个公网地址,因此后续的数据连接就能够成功建立,从而实现私网主机对公网服务器的访问。

在HOST(FTP客户端)抓包如图2所示:

图2PORT模式FTP客户端抓包

在FTP服务器端抓包如图3所示:

图3PORT模式FTP服务器端抓包

由上抓包可知:主动模式(PORT)的连接过程是:客户端程序首先会为自己随机分配一个TCP端口,它使用这个端口向服务器的FTP端口(默认为21)发出连接请求,服务器接受请求之后会建立一条控制链路,然后客户程序向服务器发出PORT命令(通常格式为PORT A1,A2,A3,A4,P1,P2,其中A1,A2,A3,A4为客户端IP地址,P1,P2为随机的一个数据连接端口号,端口号等于P1*256+P2),告诉服务器它的数据通道的端口打开了。当需要传送数据时,服务器向客户端提供的随机端口发送连接请求,请求被接受之后便开始传输数据,主动模式下,需要做ALG处理的是客户端发出的PORT报文,如FTP客户端上抓包中的第13个报文,其中有一个包含地址和端口的字段为Request arg,如图4所示:

图4ALG转换前的PORT报文

FTP客户端发出的PORT报文经过NAT设备后对应FTP服务器端上抓的第13个报文,私网地址192.168.1.2转换成公网地址8.8.8.11,端口1084转换成12487,如图5所示:

图5ALG转换后的PORT报文

3.1.2被动模式(PASV)的连接过程

如图6所示,位于外部网络的FTP客户端以PASV方式访问内部网络的FTP服务器,经过中间的设备进行NAT转换,该设备上使能了ALG特性。

图6FTPPASV方式报文载荷的ALG处理图

图2中的NAT设备上配置了私网地址192.168.1.1到公网地址8.8.8.2的映射,实现地址的NAT转换。整个通信过程包括如下四个阶段:

(1)建立控制通道

客户端向服务器发送TCP连接请求。TCP连接建立成功后,服务器和客户端进入用户认证阶段。若TCP连接失败,服务器会断开与客户端的连接。

(2)用户认证

客户端向服务器发送认证请求,报文中包含FTP命令(USER、PASSWORD)及命令所对应的内容。客户端发送的认证请求报文在通过配置了ALG的设备时,报文载荷中携带的命令字将会被解析出来,用于进行状态机转换过程是否正确的检查。若状态机转换发生错误,则丢弃报文。这样可防止客户端发送状态机错误的报文攻击服务器或者非法登陆服务器,起到保护服务器的作用。客户端的认证请求报文通过ALG处理之后,到达服务器端,服务器将对其进行响应。

(3)创建数据通道

认证状态正确且用户是服务器已经授权的客户端,才能和服务器建立数据连接,进行数据的交互。如图6所示,当客户端发送“PASV”命令发起连接时,服务器会在发送给客户端的PASV响应报文中携带自己的私网地址和端口号(IP1,Port1),响应报文经过ALG设备时被解析,其中携带的服务器的私网地址和端口号被转换成其对应的公网地址和端口号(IP2,Port2),之后在该地址和端口与客户端的地址和端口之间将建立起数据通道。

(4)数据交互

客户端和服务器之间的数据交互可以直接通过数据通道来进行。

在FTP服务器端抓包如图7所示:

图7PASV模式FTP服务器端抓包

由上抓包可知:被动模式(PASV)的连接过程是客户端程序首先为自己随机分配一个TCP端口,使用这个端口向服务器的FTP端口发出连接请求,服务器接受请求之后会建立一条控制链路,然后客户端程序发出PASV命令,要求服务器采用PASV模式建立数据连接,服务器便为自己随机分配一个数据通道端口,并将这个端口号告诉客户端程序(通常格式为:Entering Passive Mode (A1,A2,A3,A4,P1,P2),其中A1,A2,A3,A4为服务器IP地址,P1,P2为随机端口号)。当需要传送数据时,客户端程序采用另一个随机端口向服务器提供的数据通道端口发送连接请求,请求被接受之后便开始传输数据,数据链路通道打开,被动模式下,需要做ALG处理的是服务器发出的Pasv response报文,如上抓包中的第14个包,其中有一个包含地址和端口的字段为Response arg,如图8所示:

图8需要做ALG的Pasv response报文

3.2ALG与H323/SIP的应用 3.2.1ALG与H323的应用

H.323协议用于发起会话,它能控制多个参与者参加的多媒体会话的建立和终结,并能动态调整和修改会话属性,如会话带宽要求、传输的媒体类型(语音、视频等)、媒体的编解码格式、广播的支持等。

H.323协议采用Client/Server模型,如在图9所示的语音组网中,主要通过网关(Gateway)与网守(Gatekeeper)之间的通信来完成用户呼叫的建立过程。

网关(Gateway):用于连接H323电话终端;

网守(Gatekeeper):注册/位置/代理服务器,管理各gateway

图9H.323语音应用组网图

H323协议栈如图10所示:

图10H.323协议栈

由协议栈可知,H323是一个协议族,由众多协议来完成地址定位,注册,媒体协商等一系列工作。其中TCP/UDP载荷中带有地址或者端口信息,若在网关进行了NAT处理后,则需要进行ALG处理的有H.225、H.245、RAS等信令协议报文,具体为:

(1)UDP RAS报文:gatekeeper、registar、admission的request和confirm报文

(2)TCP H.225报文:setup、alerting、connect报文

(3)TCP H.245报文:open logical chanel、open logical chanel ACK报文

H323通信中会建立4种连接:

RAS连接:网关与网守之间的UDP连接,源目的端口均是1719。

H.225连接:routed模式建立在网关与网守之间,redirect模式建立在网关与网关之间的TCP连接。源端口一般是发起方随机分配的,目的端口是1720。

H.245连接:routed模式建立在网关与网守之间,redirect模式建立在网关与网关之间的TCP连接。源端口一般是发起方随机分配的,目的端口通过H.225的connect报文协商。

RTP/RTCP连接:建立在网关与网关之间的UDP连接。源和目的通过H.245连接里的open logical chanel及其ACK报文协商。

3.2.2ALG与SIP的应用

SIP(Session Initiation Protocol,会话初始协议)是一个用于建立、更改和终止多媒体会话的应用层控制协议,其中的会话可以是IP电话、多媒体会话或多媒体会议。SIP是通过各种头域里的信息的交互来管理会话的。而头域里与呼叫建立相关的包含IP地址和端口信息的字段需要被ALG处理,否则无法正确进行呼叫。SIP UA直接呼叫组网如图11所示(两台路语音由器作为SIP UA,能够互相直接呼叫):

图11SIP UA直接呼叫组网图

SIP消息采用文本方式编码,包括请求消息与响应消息两类。SIP请求消息包括如下六种。

(1)INVITE:用于邀请用户加入一个呼叫。

(2)ACK:用于对请求消息的响应消息进行确认。

(3)OPTIONS:用于请求协商能力信息。

(4)BYE:用于释放已建立的呼叫。

(5)CANCEL:用于释放尚未建立的呼叫。

(6)REGISTER:用于向SIP注册服务器登记用户位置等信息。

SIP响应消息用于对请求消息进行响应,指示呼叫或注册的成功或失败状态。在请求与响应报文中需要进行ALG处理的地址字段类型主要有:Via、Record_Route、Contact、SDP。

ALG处理流程为如下三个步骤:

首先,ALG根据会话标识的协议类型对报文进行解码,若解码发现报文为不需要做ALG或解码发现为错误字段时退出,解码发现需进行字段转换时进一步处理;

其次,ALG查找接口上的NAT配置,根据NAT配置转换报文中的IP地址、端口、call-id等信息并建立关联表,关联表记录了载荷地址的转换关系;

最后,ALG调整报文载荷中的长度字段,如sip message header的content-length字段标识message body的长度,ALG对message body中的地址转换后,message body长度可能变化,content-length字段值需要置为变化后的值。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。