当前位置:首页 > USG配置nat - server
在本例中,由于源地址为ANY,即不限制,这样任意用户都可以主动向40.0.0.10的4967端口发起连接,以实现未知用户向内网的QQ/MSN用户发起对话的情况。
配置NAT Server或SLB时生成的静态Server-map
在使用NAT Server功能时,外网的用户向内部服务器主动发起访问请求,该用户的IP地址和端口号都是不确定的,唯一可以确定的是内部服务器的IP地址和所提供服务的端口号。 所以在配置NAT Server成功后,设备会自动生成Server-map表项,用于存放Globle地址与Inside地址的映射关系。设备根据这种映射关系对报文的地址进行转换,并转发。
每个生效的NAT Server都会生成正反方向两个静态的Server-map。用户删除NAT Server时,Server-map也同步被删除。
NAT Server生成的Server-map表项实例如下所示。
Nat Server, ANY -> 202.169.10.2:21[10.1.1.2:21], Zone:--- Protocol: tcp(Appro: ftp), Left-Time:---, AddrPool: --- Vpn: public -> public
Nat Server Reverse, 10.1.1.2[202.169.10.2] -> ANY, Zone:--- Protocol: ANY(Appro: ---), Left-Time:---, AddrPool: --- Vpn: public -> public ? ? ? ? ?
Nat Server表示正向(即外网客户端主动访问内网服务器方向)的Server-map表项。 Nat Server Reverse表示反向(即内网服务器主动访问外网客户端方向)Server-map表项。 Protocol表示配置Nat Server时指定的协议类型。
202.169.10.2表示Nat Server的Globle地址,即对外公布的公网IP地址。 10.1.1.2表示Nat Server的Inside地址,即转换前的私网IP地址。
在SLB功能中,由于需要将内网的多个服务器以同一个IP地址对外发布,所以也会建立与NAT Server类似的Server-map表项,只不过根据内网服务器的个数N,需要建立1个正向表项和N个反向表项。
配置NAT No-PAT时生成的动态Server-map
在使用NAT功能时,如果配置了No-PAT参数,那么设备会对内网IP和公网IP进行一对一的映射,而不进行端口转换。此时,内网IP的所有端口号都可以被映射为公网地址的对应端口,外网用户也就可以向内网用户的任意端口主动发起连接。
所以配置NAT No-PAT后,设备会为有实际流量的数据流建立Server-map表,用于存放私网IP地址与公网IP地址的映射关系。设备根据这种映射关系对报文的地址进行转换,然后进行转发。 NAT No-PAT生成的Server-map表项实例如下所示。 No-Pat: 10.1.1.2[202.169.10.2] -> ANY, Zone: untrust
Protocol: ANY(Appro: ---), Left-Time: 00:00:03, Addr-Pool: 61 Vpn: public -> public
No-Pat Reverse, ANY -> 202.169.10.2[10.1.1.2], Zone: untrust Protocol: ANY(Appro: ---), Left-Time: 00:00:03, Addr-Pool: --- Vpn: public -> public ? ?
No-Pat表示正向Server-map,即指从私网IP发起的连接。
No-Pat Reverse表示反向Server-map,即指外网设备通过分配的公网IP来访问私网IP对应设备所发起的连接。 ? ?
10.1.1.2表示映射前的私网IP地址。 202.169.10.2表示映射后的公网IP地址。
Server-map表在转发流程中的位置
Server-map表在转发流程中的位置请参考图1。
当一个没有会话表项的报文在通过系统的安全性检查之后,系统准备为其查找路由之前,系统会查询Server-map表。此时查找Server-map表主要是为了两个目的: ?
对该报文所属连接的状态再次检查和确认
由于该报文没有会话表项,所以它有可能是属于需要建立Server-map的特殊业务的报文。通过查询Server-map可以确认这个报文是否属于一个已经存在的连接。如果这个报文既没有会话表项,又不属于一个已经存在的特殊业务,那么在严格包过滤情况下,这个报文就会被丢弃。 ?
根据Server-map表对报文中一些元素进行转换
Server-map表项除了会记录报文的关键元素,还会记录系统对该报文的一些处理措施。对于一个和Serve-map表项匹配的报文,系统在查询Server-map表后,会根据表项中的记录对报文进行转换。例如在NAT Server应用中,系统会将一个访问内部服务器的报文的目的地址从公网地址转换为私网地址。
由于Server-map中并不会记录报文的下一跳等信息,所以Server-map通常只是用检查第一个报文。在这个报文通过检查之后,系统会生成一条会话表用于后续报文的转发。即Server-map只是用于新通道的建立,通道建立后的报文还是根据会话表来转发。
以FTP的Port模式为例。主机A的IP地址是192.168.1.1,使用20000端口向服务器B发起FTP连接。服务器B的IP地址是1.1.1.1,提供服务的端口号是21。系统已经通过配置包过滤允许了192.168.1.1向1.1.1.1的21号端口发起连接。
1. 在发起连接的报文通过后,系统中创建了一条会话表项,通信双方的控制通道也就建立起
来了。
类型 源IP地址 源端口 目会话表 192.168.1.1 20000 1.1.12. 经过控制通道的协商,A随机选择一个数据通道端口号2165,并通过控制通道将该端口号
发送给FTP服务器。系统在获取到这个报文后为其建立Server-map表项。
类型 源IP地址 目的IP地址 Server-map表 1.1.1.1 192.168.1.1 3. B在收到A的协商报文之后,使用20端口主动向192.168.1.1的2165端口发起连接。这
个连接在会话表中没有对应的表项,如果域间缺省包过滤策略为禁止,则可能会被丢弃。所以此时,系统就会查询Server-map,以确定该报文是否属于特殊业务。
由于这个报文的源IP地址、目的IP地址、目的端口和协议都与Server-map表项符合,系统允许这个报文通过。而且此时这个新的数据通道的五元组都已经确定,所以系统同时创建一条会话表,通信双方的数据通道也就建立起来了。
类型 源IP地址 源端口 目会话表 1.1.1.1 20 192.14. 后续数据通道上传输的数据报文都可以匹配这条会话表项并得到转发,不再需要重新匹配
Server-map表项。Server-map表项由于一直没有报文匹配,经过老化时间后就会被删除。这种机制保证了Server-map表项这种较为宽松的检测条件能够及时被删除,保证了网络的安全性。
ASPF的实现以及ASPF与Server-map表的关系
在上述举例中,A随机选择一个数据通道端口号2165,并通过控制通道将该端口号发送给FTP服务器。“2165”这个端口信息是包含在协商报文的应用层载荷中的。系统在收到这个报文之后,能够将其解析出来,正是因为开启了ASPF功能。
ASPF的主要作用就是对报文的应用层数据进行解析,识别出包含在IP报文数据载荷中的各种协商信息,以供设备自动为其创建相应的访问规则。
由于各种协议的报文结构和协商方式各不相同,所以USG目前只能支持特定种类的协议的识别。 ASPF识别完成之后,系统通常会生成一条Server-map表项来记录识别结果。之所以不直接生成会话表项,是因为识别完成时,通常通信双方都只是在协商阶段,新通道上还没有实际的数据传输,或者新通道的五元组信息还没有完全确定,所以还不能建立会话表。
通过ASPF识别,建立Server-map表项后,当系统收到新通道上的第一个报文,就会生成相应的会话表项。后续该通道上的报文就都可以根据会话表进行转发了。
端口映射
端口映射是指将发往非知名端口的报文识别为知名协议的功能。
目的
应用层协议一般使用知名端口号进行通信。当用户使用非知名端口提供知名服务时的业务时,可以使用端口映射功能对这些业务进行识别。
前提条件
由于端口映射功能通过ACL来匹配流量,所以在配置端口映射之前,需要首先创建用来匹配流量的ACL,且端口映射功能只能使用基本ACL进行匹配。
由于端口映射的主要目的是将发往内网服务器非知名端口的报文识别为知名服务,ACL主要定义的就是内网服务器的IP地址和它所提供的端口。所以在定义的ACL的规则时,应将内网服务器的IP地址作为source-address。在设备实现时,会检测发往source-address的报文。
背景信息
应用层协议一般使用知名端口号进行通信,例如FTP使用20和21端口,Web服务通常使用80端口。但是在某些情况下,内网服务器需要通过其他自定义端口对外提供知名服务时,可以通过端口映射功能来完成相应的转换。
端口映射的原理是,创建一个协议与映射端口的关联表,当收到发往映射端口的报文时,会将其识别为对应的知名服务的报文,并进行相应的应用层识别等功能。
例如,内网服务器A希望使用21000端口对外提供FTP服务。如果不使用端口映射功能,设备将认为发往A的21000端口的报文为普通报文。这时如果组网场景需要使用ASPF功能,即使用户在域间配置了detect ftp命令,还是不能正常提供FTP服务,因为设备并不认为发往21000端口的报文是FTP报文,也就不会进行相应的检测和分析。
所以此时需要通过端口映射功能将21000端口映射为FTP服务。这个映射并不是指设备会将发往21000端口的报文转发给21端口,而是指设备会将发往21000端口的报文认为是FTP协议报文。
操作步骤
1. 执行命令system-view,进入系统视图。
2. 执行命令port-mapping protocol-name port port-number acl acl-number,配置端口映射。
执行该命令后,就会将ACL匹配的流量中,发往port-number端口的报文认为是
protocol-name协议。
配置端口映射时: ?
一个协议可以配置多个映射端口。
共分享92篇相关文档