配置server-map表
Server-map表是一个通过少量关键元素来记录部分特殊服务连接状态的特殊表项。
ASPF(Application Specific Packet Filter)是指系统为了转发一些多通道协议报文,通过解析报文数据载荷,识别多通道协议自动协商出来的端口号,并自动生成相应的Server-map表项的功能。
目的
在严格包过滤的情况下,设备通常只允许内网用户单方向主动访问外网。但是在使用NAT或ASPF功能的情况下,可能存在外网用户通过随机端口主动访问内网服务器的情况。由于会话表的五元组限制过于严格,会导致这些特殊服务不能正常运行。引入Server-map表是为了解决这一问题。 ASPF是为了解决多通道协议这种特殊服务的转发而引入的。这些协议会在通信过程中自动协商一些随机端口,在严格包过滤的情况下,这些随机端口发出的报文同样不能得到正常转发。通过ASPF功能可以对这些协议的应用层数据进行解析,识别这些协议协商出来的端口号,从而自动为其开放相应的访问规则,解决这些协议不能正常转发的问题。
原理描述
Server-map表的引入
通常情况下,如果在设备上配置严格包过滤,那么设备将只允许内网用户单方向主动访问外网。但在实际应用中,例如使用FTP协议的port方式传输文件时,既需要客户端主动向服务器端发起控制连接,又需要服务器端主动向客户端发起服务器数据连接,如果设备上配置的包过滤为允许单方向上报文主动通过,则FTP文件传输不能成功。
为了解决这一类问题,USG设备引入了Server-map表,Server-map用于存放一种映射关系,这种映射关系可以是控制数据协商出来的数据连接关系,也可以是配置NAT中的地址映射关系,使得外部网络能透过设备主动访问内部网络。
生成Server-map表之后,如果一个数据连接匹配了Server-map表项,那么就能够被设备正常转发,而不需要去查会话表,这样就保证了某些特殊应用的正常转发。
USG设备上生成Server-map表项目前总共有四种情况: ? ? ? ?
配置ASPF后,转发FTP、RTSP等多通道协议时生成的Server-map表项。
配置ASPF后,转发QQ/MSN、TFTP等STUN类型协议时生成的三元组Server-map表项。 配置NAT Server或SLB时生成的静态Server-map。 配置NAT No-PAT时生成的动态Server-map。
下面分别对这四种Server-map表进行介绍。 端口映射
转发多通道协议时生成的Server-map表项
转发FTP、RTSP等多通道协议的数据会生成Server-map表项。
多通道协议会由客户端和服务器之间的控制通道动态协商出数据通道,即通信双方的端口号是不固定的。而在配置ASPF功能后,设备检测到控制通道的协商,根据关键报文载荷中的地址信息动态创建server-map表项,用于数据通道发起连接时进行查找。这个server-map表项包含了多通道协议报文中协商的数据通道的信息。
例如在FTP的port模式中,在FTP客户端随机选择一个数据通道端口号(本例中的2165),并通过控制通道将该端口号发送给FTP服务器后,FTP服务器会直接向该端口发起连接。如果此时配置了ASPF功能,会生成如下Server-map表项: ASPF: 40.0.0.5 -> 40.0.0.10:2165 , Zone: ---
Protocol: tcp(Appro: ftp-data), Left-Time: 00:00:05, Addr-Pool: --- Vpn: public -> public
其中,tcp(Appro: ftp-data)表示该条Server-map表项用于FTP协议的数据通道的转发。40.0.0.5为源IP地址,即发起连接的FTP服务器的IP地址,40.0.0.10为目的IP地址,即FTP客户端的IP地址。
在采用严格包过滤情况下,由于事先没有配置对2165端口允许的包过滤策略,所以如果没有Server-map表项,会导致该连接被阻断。ASPF自动生成Server-map表项后,由于只需要匹配四元组信息,所以就可以实现正常的数据传输了。
转发STUN类型协议时生成的三元组Server-map表项
转发QQ/MSN等STUN(Simple Traversal of UDP over NATs,NAT的UDP简单穿越)类型会生成的三元组Server-map表项。
QQ/MSN等协议中,当用户登录之后,用户的IP地址和端口就固定下来了,可是会向该用户发起对话的另一方的IP地址和端口号是不固定的。通过配置STUN类型的ASPF,当QQ或者MSN等用户连接服务器时,设备会记录下用户的IP地址和端口信息,并动态生成STUN类型的Server-map。这个server-map表项中仅包含三元组信息,即通信一方的IP地址,端口号和协议号。这样其他用户可以直接通过该IP和端口与该用户进行通信。只要有相关的流量存在,STUN动态的server-map就将一直存在。在所有相关流量结束后,server-map表开始老化。 例如:
STUN : ANY -> 40.0.0.10:4967, Zone: ---
Protocol: udp(Appro: qq-derived), Left-Time: 00:00:05,Addr-Pool: --- Vpn: public -> public
在本例中,由于源地址为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地址 类型 源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表项后,当系统收到新通道上的第一个报文,就会生成相应的会话表项。后续该通道上的报文就都可以根据会话表进行转发了。
端口映射
端口映射是指将发往非知名端口的报文识别为知名协议的功能。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库USG配置nat server在线全文阅读。
相关推荐: