报文处理方法、服务器及存储介质与流程

文档序号:25992251发布日期:2021-07-23 21:04阅读:172来源:国知局
报文处理方法、服务器及存储介质与流程

本发明实施例涉及通信技术领域,特别涉及一种报文处理方法、服务器及存储介质。



背景技术:

随着互联网协议第6版(internetprotocolversion6,ipv6)网络的发展,由ipv6与互联网协议第4版(internetprotocolversion4,ipv4)的不兼容性所带来的网络互访问题也日益明显。nat64作为一种解决方案被提出,它实现了ipv6与ipv4之间的网络地址与协议转换技术,解决了不同网络间互访问题。nat64是一种有状态的ipv6和ipv4网络地址与协议转换方案,通过该方案使得具备ipv6网络ipv4地址的服务器可快速面向ipv6客户端提供访问服务,避免为兼容ipv6而改造网站带来的周期过长、代价太大等问题。

目前基于云平台的ipv6转换方案通常是将nat64部署在专有网络(virtualprivatecloud,vpc)代理服务器上,针对内部子网的云服务器实例提供ipv6转换ipv4的服务,实现面向外网提供服务。由于用户态网络协议栈相比linux内核具有更高的性能,所以在代理端运行用户态网络协议栈程序成为主流方式。然而现有的用户态网络协议栈只能支持单独的nat64转换服务或单独的目的地址转换(destinationnetworkaddresstranslation,dnat)服务,这就带来以下问题:

当代理端使用网络隔离技术时,内网服务器运行于不同网络隔离空间中,可能出现使用相同ip地址的情况,此时若仍直接使用nat64转换服务,就会出现报文发送到错误服务器的问题,从而导致访问失败。类似的问题在ipv4环境中是通过dnat网络地址转换将服务器内网地址重新映射为ipv6网络地址解决的,然而现有方案不支持在nat64服务中嵌入dnat地址映射,最终无法正常提供服务。

nat64在将ipv6地址转换为ipv4地址时,按照约定ipv6网络ip必须使用嵌入ipv4地址的ipv6地址(即ipv6网络ipv6地址的低4字节必须与ipv4服务器地址相同),而通过转换前的ipv6地址很容易解析得到转换后的ipv4地址,导致内网机器ip地址完全对外暴露,给内网环境带来了安全问题。



技术实现要素:

本发明实施方式的目的在于提供一种报文处理方法、服务器及存储介质,能够有效解决用户态网络协议栈在使用nat64转换服务时不支持网络隔离技术所依赖的dnat地址映射功能,以及无法隐藏内部网络结构的问题。

为解决上述技术问题,本发明的实施方式提供了一种报文处理方法,适用于专有网络中的代理服务器,所述代理服务器采用用户态网络协议栈运行程序,所述专有网络采用ipv4网络构建,其特征在于,所述方法包括:

接收来自ipv6网络中客户端的ipv6请求报文;

采用nat64转换对所述ipv6请求报文进行转换处理形成第一ipv4报文,所述第一ipv4报文的目的地址为所述专有网络中服务器的虚拟ip地址;

采用dnat转换对所述第一ipv4报文进行转换处理形成第二ipv4报文,所述第二ipv4报文的目的地址为所述专有网络中服务器的真实ip地址;

将所述第二ipv4报文转发至所述专有网络中相应的服务器。

本发明的实施方式还提供了一种服务器,包括:

至少一个处理器;以及,

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上所述的报文处理方法。

本发明的实施方式还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的报文处理方法。

本发明实施方式相对于现有技术而言,通过在以ipv4网络构建专有网络中设置代理服务器,该代理服务器上采用用户态网络协议栈运行程序,当代理服务器接收到来自ipv6网络中客户端的ipv6请求报文时,先采用nat64转换对ipv6请求报文进行转换处理形成第一ipv4报文,所述第一ipv4报文的目的地址为专有网络中服务器的虚拟ip地址;然后采用dnat转换对第一ipv4报文进行转换形成第二ipv4报文,所述第二ipv4报文的目的地址为专有网络中服务器的真实ip地址;将第二ipv4报文转发至专有网络中相应的服务器,通过将nat64转换处理的ipv4报文再次进行dnat转换实现内网服务器地址的重映射,解决了ipv6转换服务中无法支持网络隔离技术依赖的dnat地址映射问题,并且通过在nat64转换后进行dnat转换,实现了对外隐藏内部网络结构的目的,解决了内网安全性问题。

另外,在形成第一ipv4报文之后,还包括:将用户态网络协议栈中已存的ipv6请求报文的报文结构体参数修改为第一ipv4报文的报文结构体参数;相应地,采用dnat转换对第一ipv4报文进行转换处理形成第二ipv4报文,包括:基于从用户态网络协议栈中读取的第一ipv4报文的报文结构体参数,采用dnat转换对第一ipv4报文的目的地址进行转换处理形成第二ipv4报文。通过修改用户态网络协议栈中已存的ipv6请求报文的报文结构体参数为第一ipv4报文的报文结构体参数,以加速实现将第一ipv4报文转换为第二ipv4报文。

另外,将第二ipv4报文转发至专有网络中相应的服务器,包括:将用户态网络协议栈中第一ipv4报文的报文结构体参数还原为ipv6请求报文的报文结构体参数;将第二ipv4报文转发给执行nat64转换的处理模块,以通过该处理模块将第二ipv4报文转发至所述专有网络中相应的服务器。通过还原用户态网络协议栈中ipv6请求报文的报文结构体参数,即还原之前伪装成第一ipv4报文的修改,以适配后续nat64转发报文的处理流程,将所属nat64的ipv4流量传回执行nat64的处理模块以执行后续的发包操作,可避免重新进入协议栈发包,缩短调用路径,减少性能损失。

另外,上述报文处理方法还包括:接收来自专有网络中服务器的ipv4报文;通过跟踪dnat转换所对应的转换状态表,对接收的ipv4报文进行转换处理形成第三ipv4报文,所述第三ipv4报文的源地址为所述虚拟ip地址;判断接收的ipv4报文是否为所述ipv6请求报文对应的ipv4响应报文;如果是,则通过跟踪nat64所对应的转换状态表,对第三ipv4报文进行转换处理形成ipv6报文,该ipv6报文为ipv6请求报文对应的ipv6响应报文;将该ipv6报文转发至ipv6网络中相应的客户端;如果接收的ipv4报文不是ipv6请求报文对应的ipv4响应报文,则将第三ipv4报文转发至ipv4网络中相应的客户端。通过跟踪dnat转换所对应的转换状态表,将来自专有网络中的服务器的ipv4报文转换为源地址为上述虚拟ip地址的ipv4报文,若服务器发送的ipv4报文为响应ipv6网络中客户端的ipv6请求报文的ipv4响应报文时,则将转换后的ipv4报文再次经过nat64转换得到ipv6响应报文后发送给ipv6网络中相应的客户端,否则直接将转换后的ipv4报文发给专有网络中的相应客户端,从而实现对nat64流量的dnat服务和ipv4流量的dnat服务进行区分。

另外,在形成第一ipv4报文之后,还包括:将用户态网络协议栈中已存的ipv6请求报文的报文结构体参数修改为第一ipv4报文的报文结构体参数;在第一ipv4报文的报文结构体参数中,添加用于标记第一ipv4报文为经nat64转换处理后的报文的关联标识;将关联标识存储到本次dnat转换所对应的转换状态表的转换状态信息中;相应地,判断接收的ipv4报文是否为ipv6请求报文对应的ipv4响应报文,包括:通过跟踪dnat转换所对应的转换状态表,确定与接收的ipv4报文关联的转换状态信息中是否包含关联标识;如果是,则确定接收的ipv4报文为ipv6请求报文对应的ipv4响应报文;如果否,则确定接收的ipv4报文不是ipv6请求报文对应的ipv4响应报文。通过在第一ipv4报文的报文结构体参数中添加用于标记第一ipv4报文为经nat64模块处理后的报文的关联标识,并将该关联标识引用至dnat转换所对应的转换状态表,以标记后续通过该表项的上下行报文均属于nat64转换的数据流。在此基础上,通过查询dnat转换所对应的转换状态表,判断与当前接收的ipv4报文关联的转换状态信息中是否包含关联标识,可快速将非所属nat64的ipv4流量和经由nat64转换后的ipv4流量区分开,确保不影响非nat64的ipv4流量的dnat功能,同时由于所属nat64的ipv4上下行流量均通过nat64,从而不影响流量统计功能。

附图说明

一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。

图1是根据本发明第一实施方式的报文处理方法的具体流程图;

图2是现有用户态网络协议栈程序中nat64的处理流程图;

图3是根据本发明第一实施方式的用户态网络协议栈程序中nat64的处理流程图;

图4是根据本发明第二实施方式的报文处理方法的具体流程图;

图5是根据本发明第三实施方式的报文处理方法的具体流程图;

图6是本发明提供的另一种报文处理方法的具体流程图;

图7是根据本发明第四实施方式的报文处理方法的具体流程图;

图8是本发明提供的再一种报文处理方法的具体流程图;

图9是根据本发明第五实施方式的服务器的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。

本发明的第一实施方式涉及一种报文处理方法,适用于专有网络中的代理服务器,该代理服务器采用用户态网络协议栈运行程序,专有网络采用ipv4网络构建。

如图1所示,在现有用户态网络协议栈程序中,输入报文(input)先经过防火墙(ipfw)进行规则匹配,当匹配结果为适合dnat转换时,ipfw将输入报文传递至dnat模块进行dnat转换形成输出报文(output),在执行完dnat转换后报文不再进入防火墙模块;同理,当匹配结果为适合nat64转换时,ipfw将输入报文传递至nat64模块进行nat64转换形成输出报文(output),在执行完nat64转换后报文也会直接走发送流程,而不再进入防火墙处理。其中,经nat64转换的报文路径为:

1)上行路径:ipv6客户端(1)->防火墙模块(3)->nat64模块(5)->ipv4服务端;

2)下行路径:ipv4服务端(1)->防火墙模块(3)->nat64模块(5)->ipv6客户端。

申请人发现图1所示的处理方案中,由于原用户态网络协议栈不支持nat64和dnat组合使用,为解决本发明所要解决的技术问题,申请人对图1中的处理流程进行改造,即:在dnat转换后重入防火墙模块匹配nat64规则处理,而在nat64转换后重入防火墙模块匹配dnat规则处理。

改造后流程如图2所示。其中,经nat64转换的报文路径为:

1)上行路径:ipv6客户端(1)->防火墙模块(3)->nat64模块(7)->防火墙模块(2)->dnat模块(8)->nat64模块(5)->ipv4服务端;

2)下行路径:ipv4服务端(1)->防火墙模块(2)->dnat模块(6)->防火墙模块(3)->nat64模块(5)->ipv6客户端。

基于上述改造,本实施方式的核心在于,通过在以ipv4网络构建专有网络中设置代理服务器,该代理服务器上采用用户态网络协议栈运行程序,当代理服务器接收到来自ipv6网络中客户端的ipv6请求报文时,先采用nat64转换对ipv6请求报文进行转换处理形成第一ipv4报文,所述第一ipv4报文的目的地址为专有网络中服务器的虚拟ip地址;然后采用dnat转换对第一ipv4报文进行转换形成第二ipv4报文,所述第二ipv4报文的目的地址为专有网络中服务器的真实ip地址;将第二ipv4报文转发至专有网络中相应的服务器,通过将nat64转换处理的ipv4报文再次进行dnat转换实现内网服务器地址的重映射,解决了ipv6转换服务中无法支持网络隔离技术依赖的dnat地址映射问题,并且通过在nat64转换后进行dnat转换,实现了对外隐藏内部网络结构的目的,解决了内网安全性问题。

如图3所示,该报文处理方法具体包括:

步骤301:接收来自ipv6网络中客户端的ipv6请求报文。

目前,基于云平台的ipv6转换方案是将nat64部署在专有网络(vpc)的代理服务器上,针对内部子网的服务器实现提供ipv6转换ipv4的服务,实现面向外网提供服务。当代理端使用网络隔离技术时,云平台的内网服务器运行于不同网络隔离空间中,可能出现使用相同ip地址(真实ip地址)的情况,此时若仍直接使用nat64转换服务,即以各云平台内网中服务器的真实ip地址作为nat64转换后报文的目的地址,就会出现报文发送到错误服务器的问题,从而导致访问失败。

为解决该冲突问题,本实施例中针对每个网络隔离空间单独设置相应的代理服务器,该代理服务器上部署有nat64和dnat两种转换方案。每个网络隔离空间中的服务器对外暴露为一个ipv4的虚拟ip地址,不同网络隔离空间对应的ipv4的虚拟ip地址不同。本实施例中所述的专有网络指任一网络隔离空间所对应的网络,该网络可以采用ipv4网络构建实现。

具体地,ipv6网络中的客户端(简称“ipv6客户端”)可基于专有网络的ipv4虚拟ip地址所形成的ipv6ip地址向本实施例中的代理服务器发送ipv6请求报文,该ipv6请求报文的目的地址的低四字节即为该ipv4虚拟ip地址,以使ipv6网络中的客户端通过发送ipv6请求报文访问相应专有网络中的服务器(简称“ipv4服务器”)所提供的服务。代理服务器可基于其上设置的外网端口接收该ipv6请求报文。

需要说明的是,本实施例中涉及的ipv6请求报文、ipv6响应报文、ipv4响应报文等,均为泛指的相同类型报文,而非特指某个具体请求响应过程中严格对应的报文。例如:ipv6请求报文泛指由ipv6网络中客户端发送请求报文,ipv6响应报文泛指用于响应ipv6网络中客户端所发送的请求报文对应的响应报文。

步骤302:采用nat64转换对ipv6请求报文进行转换处理形成第一ipv4报文,第一ipv4报文的目的地址为专有网络中服务器的虚拟ip地址。

本步骤中关于nat64转换的具体过程可参考现有相关技术,在此不做赘述。由于本实施例中ipv6请求报文的目的地址的低四字节预先被设置为上述专有网络中服务器的虚拟ip地址,因此经nat64转换得到的第一ipv4报文的目的地址即为该专有网络中服务器的虚拟ip地址相。

在一具体实施例中,可将ipv6请求报文输入至防火墙模块进行规则匹配,在匹配结果为适用nat64转换时,调用nat64模块对ipv6请求报文进行网络地址和协议转换形成第一ipv4报文。

具体地,在本实施例的代理服务器上设置有防火墙模块、nat64模块和dnat模块,其中防火墙模块中预置了多种匹配规则,用于将输入进来的报文按设定要求引流到nat64模块或者dnat模块进行相应的地址和协议转换,本实施例中对匹配规则不做具体限定,主要满足设定引流要求即可。本步骤中,则是通过将ipv6请求报文输入至防火墙模块进行规则匹配,并在按预置要求匹配到适用nat64转换时,调用nat64模块对ipv6请求报文进行网络地址和协议转换从而形成第一ipv4报文。其中,第一ipv4报文的目的地址为ipv6客户端所要访问的专有网络中服务器的虚拟ip地址;第一ipv4报文的源地址为nat64模块从可分配的地址池中选择的一个ipv4的ip地址。利用预置在防火墙中的匹配规则,可将ipv6请求报文引流至nat64模块以实现ipv6到ipv4的报文转换。

步骤303:采用dnat转换对第一ipv4报文进行转换处理形成第二ipv4报文,第二ipv4报文的目的地址为专有网络中服务器的真实ip地址。

本步骤中关于dnat转换的具体过程可参考现有相关技术,在此不做赘述。

在一具体实施例中,可将第一ipv4报文输入至防火墙模块进行规则匹配,在匹配结果为适用dnat转换时,调用dnat模块对第一ipv4报文的目的地址进行转换形成第二ipv4报文。

具体地,在nat64模块将ipv6请求报文转换为第一ipv4报文后,可将第一ipv4报文重新输入至上述防火墙进行规则匹配,并在按预置要求匹配到适用dnat转换时,调用dnat模块对第一ipv4报文进行目的地址转换,即将第一ipv4报文的目的地址由原来的专有网络中服务器的虚拟ip地址转换为专有网络中服务器的真实ip地址。利用预置在防火墙中的匹配规则,可将第一ipv4报文引流至dnat模块以实现第一ipv4报文的目的地址的转换。

步骤304:将第二ipv4报文转发至专有网络中相应的服务器。

具体地,代理服务器可基于其上设置的内网端口发送该第二ipv4报文至内网中的相应服务器。

与现有技术相比,本发明实施方式通过在以ipv4网络构建专有网络中设置代理服务器,该代理服务器上采用用户态网络协议栈运行程序,当代理服务器接收到来自ipv6网络中客户端的ipv6请求报文时,先采用nat64转换对ipv6请求报文进行转换处理形成第一ipv4报文,所述第一ipv4报文的目的地址为专有网络中服务器的虚拟ip地址;然后采用dnat转换对第一ipv4报文进行转换形成第二ipv4报文,所述第二ipv4报文的目的地址为专有网络中服务器的真实ip地址;将第二ipv4报文转发至专有网络中相应的服务器,通过将nat64转换处理的ipv4报文再次进行dnat转换实现内网服务器地址的重映射,解决了ipv6转换服务中无法支持网络隔离技术依赖的dnat地址映射问题,并且通过在nat64转换后进行dnat转换,实现了对外隐藏内部网络结构的目的,解决了内网安全性问题。

本发明的第二实施方式涉及一种报文处理方法。第二实施方式是在第一实施方式基础上做的改进,其改进之处在于:

在形成第一ipv4报文之后,还包括:将用户态网络协议栈中已存的ipv6请求报文的报文结构体参数修改为第一ipv4报文的报文结构体参数;相应地,采用dnat转换对第一ipv4报文进行转换处理形成第二ipv4报文,包括:基于从用户态网络协议栈中读取的第一ipv4报文的报文结构体参数,采用dnat转换对第一ipv4报文进行转换处理形成第二ipv4报文。通过修改用户态网络协议栈中已存的ipv6请求报文的报文结构体参数为第一ipv4报文的报文结构体参数,以加速实现将第一ipv4报文转换为第二ipv4报文。

如图4所示,该报文处理方法具体包括:

步骤401:接收来自ipv6网络中客户端的ipv6请求报文。

步骤402:采用nat64转换对ipv6请求报文进行转换处理形成第一ipv4报文,第一ipv4报文的目的地址为专有网络中服务器的虚拟ip地址。

其中,步骤401~402与步骤301~302对应相同,在此不做赘述。

步骤403:将用户态网络协议栈中已存的ipv6请求报文的报文结构体参数修改为第一ipv4报文的报文结构体参数。

现有技术在执行nat64转换后,通常是对转换后得到的ipv4报文直接走发包流程,不需要再对ipv4报文进行处理,因此用户态网络协议栈中存储的仍是ipv6请求报文所对应的报文结构体参数。

本实施例中为了适配后续对第一ipv4报文进行dnat转换的处理流程,在执行dnat转换前,具体地可以是将第一ipv4报文重新输入至防火墙进行规则匹配前,可将用户态网络协议栈中存储的ipv6请求报文所对应的报文结构体参数修改为第一ipv4报文的报文结构体参数,具体包括报文长度、报文类型(包括ipv4报文、ipv6报文)的修改。这样,代理服务器(具体为dnat模块)在执行对第一ipv4报文的dnat转换操作时,就可以直接从用户态网络协议栈中读取该第一ipv4报文的报文结构体参数,而无需通过对第一ipv4报文进行抓包的方式来获得第一ipv4报文的报文结构体参数,加速了第一ipv4报文的转换速率。

步骤404:基于从用户态网络协议栈中读取的第一ipv4报文的报文结构体参数,采用dnat转换对第一ipv4报文的目的地址进行转换处理形成第二ipv4报文。

具体地,代理服务器(具体为dnat模块)可从用户态网络协议栈中直接读取第一ipv4报文的报文结构体参数,然后基于该报文结构体参数执行对第一ipv4报文的dnat转换形成第二ipv4报文。

步骤405:将第二ipv4报文转发至专有网络中相应的服务器。

与现有技术相比,本发明实施方式通过修改用户态网络协议栈中已存的ipv6请求报文的报文结构体参数为第一ipv4报文的报文结构体参数,以加速实现将第一ipv4报文转换为第二ipv4报文。

本发明的第三实施方式涉及一种报文处理方法。第三实施方式是在第二实施方式基础上做的改进,其改进之处在于:

将第二ipv4报文转发至专有网络中相应的服务器,包括:将用户态网络协议栈中第一ipv4报文的报文结构体参数还原为ipv6请求报文的报文结构体参数;将第二ipv4报文转发给执行nat64转换的处理模块,以通过该处理模块将第二ipv4报文转发至专有网络中相应的服务器。通过还原用户态网络协议栈中ipv6请求报文的报文结构体参数,即还原之前伪装成第一ipv4报文的修改,以适配后续nat64转发报文的处理流程,将所属nat64的ipv4流量传回执行nat64的处理模块以执行后续的发包操作,可避免重新进入协议栈发包,缩短调用路径,减少性能损失。

如图5所示,该报文处理方法具体包括:

步骤501:接收来自ipv6网络中客户端的ipv6请求报文。

步骤502:采用nat64转换对ipv6请求报文进行转换处理形成第一ipv4报文,第一ipv4报文的目的地址为专有网络中服务器的虚拟ip地址。

步骤503:将用户态网络协议栈中已存的ipv6请求报文的报文结构体参数修改为第一ipv4报文的报文结构体参数。

步骤504:基于从用户态网络协议栈中读取的第一ipv4报文的报文结构体参数,采用dnat转换对第一ipv4报文的目的地址进行转换处理形成第二ipv4报文。

其中,步骤501~504与步骤401~404对应相同,在此不做赘述。

步骤505:将用户态网络协议栈中第一ipv4报文的报文结构体参数还原为ipv6请求报文的报文结构体参数。

具体地,在形成第二ipv4报文后,代理服务器(具体为dnat模块)可以将用户态网络协议栈中原先修改得到的第一ipv4报文的报文结构体参数还原为ipv6请求报文的报文结构体参数,从而还原用户态网络协议栈为nat64模块刚刚转换生成第一ipv4报文的状态,以适配nat64模块发包的处理流程。

步骤506:将第二ipv4报文转发给执行nat64转换的处理模块,以通过该处理模块将第二ipv4报文转发至专有网络中相应的服务器。

具体地,在还原用户态网络协议栈为nat64模块刚刚转换生成第一ipv4报文的状态后,代理服务器(具体为dnat模块)可将第二ipv4报文转发给执行nat64转换的处理模块(具体为nat64模块),以避免第二ipv4报文从dnat模块出来后又重新走协议栈的标准发包流程(比nat64发包速度慢),从而加速发包和兼容nat64模块的发包处理流程。

与现有技术相比,本发明实施方式通过还原用户态网络协议栈中ipv6请求报文的报文结构体参数,即还原之前伪装成第一ipv4报文的修改,以适配后续nat64转发报文的处理流程,将所属nat64的ipv4流量传回执行nat64的处理模块以执行后续的发包操作,可避免重新进入协议栈发包,缩短调用路径,减少性能损失。

另外,本实施例还提供了一种报文处理方法,该报文处理方法为图4所示报文处理方法中的专有网络中服务器响应ipv6网络中客户端时,针对该服务器所发起的ipv4报文进行处理的方法。该报文处理方法的核心在于通过跟踪dnat转换所对应的转换状态表,将来自专有网络中的服务器的ipv4转换为源地址为上述虚拟ip地址的ipv4报文,若服务器发送的ipv4报文为响应ipv6网络中客户端的ipv6请求报文的ipv4响应报文时,则将转换后的ipv4报文再次经过nat64转换得到ipv6响应报文后发送给ipv6网络中相应的客户端,否则直接将转换后的ipv4报文发给专有网络中的相应客户端,从而实现对nat64流量的dnat服务和ipv4流量的dnat服务进行区分。

如图6所示,该报文处理方法包括:

步骤601:接收来自专有网络中服务器的ipv4报文。

具体地,代理服务器在接收到来自专有网络中服务器的ipv4报文时存在两种情形,即该ipv4报文可能为服务器响应ipv6客户端的ipv6请求报文的响应报文,也可能为服务器响应ipv4网络中客户端(简称“ipv4客户端”)的响应报文。代理服务器可基于其上设置的内网端口接收该ipv4报文。

步骤602:通过跟踪dnat转换所对应的转换状态表,对接收的ipv4报文进行转换处理形成第三ipv4报文,第三ipv4报文的源地址为所述虚拟ip地址。

具体地,在代理服务器接收客户端(包括ipv4客户端和ipv6客户端)发送的请求报文时,会将对报文进行nat64转换和dnat转换所对应的转换前后的状态信息记录在转换状态表(nat状态表)中。其中nat64转换所对应的转换状态表中记录了经nat64转换的报文的转换前后的状态信息,dnat转换所对应的转换状态表中记录了经dnat转换的报文的转换前后的状态信息。这些状态信息中至少包括报文转换前后的ip地址和协议的信息。通过跟踪转换状态表,代理服务器可对来自内网服务器发送给客户端的响应报文进行转换,以实现将转换后的报文发送至相应的客户端。

具体地,代理服务器可通过跟踪dnat转换所对应的转换状态表,对接收的ipv4报文进行转换处理形成第三ipv4报文,第三ipv4报文的源地址为专有网络中服务器的虚拟ip地址。

例如,可将ipv4报文输入至防火墙模块进行规则匹配,在匹配结果为适用dnat转换时,通过跟踪dnat转换所对应的转换状态表,确定与该ipv4报文关联的转换状态信息,进而根据找到的转换状态信息对ipv4报文进行逆向转换,形成第三ipv4报文,该第三ipv4报文的源地址即为专有网络中服务器的虚拟ip地址。

步骤603:判断接收的ipv4报文是否为ipv6请求报文对应的ipv4响应报文;如果是,则进入步骤604;如果否则进入步骤606。

具体地,可以通过在用户态网络协议栈中设置额外标识来预先标记来自ipv6客户端的ipv6请求报文的转换状态信息,从而在接收到服务器发送的ipv4报文后,可以根据查询该ipv4报文相关的转换状态信息是否被标记,从而确定该接收的ipv4报文是否为响应ipv6客户端的ipv6请求报文的ipv4响应报文。

在具体实践中,也可以采用其他标记方法实现与上述标识等同的标识效果。

步骤604:通过跟踪nat64转换所对应的转换状态表,对第三ipv4报文进行转换处理形成ipv6报文,该ipv6报文为ipv6请求报文对应的ipv6响应报文。

例如,可将第三ipv4报文输入至防火墙模块进行规则匹配,在匹配结果为适用nat64转换时,调用nat64模块跟踪nat64转换所对应的转换状态表,对第三ipv4报文进行网络地址和协议转换形成ipv6报文。该ipv6报文即为ipv6客户端的ipv6请求报文对应的ipv6响应报文。

具体地,在dnat模块形成第三ipv4报文后,可通过修改结束标志位的方式,将第三ipv4报文重新输入至防火墙模块进行规则匹配,在匹配结果为适用nat64转换时,将第三ipv4报文引流至nat64模块,nat64模块通过跟踪nat64转换所对应的转换状态表,查询与第三ipv4报文关联的转换状态信息,并基于转换状态信息中记载的ip地址和协议转换信息对第三ipv4报文进行网络地址和协议转换形成ipv6报文。该ipv6报文即为ipv6客户端的ipv6请求报文对应的ipv6响应报文。

步骤605:将该ipv6报文转发至ipv6网络中相应的客户端。

步骤606:将第三ipv4报文转发至ipv4网络中相应的客户端。

与现有技术相比,本发明实施方式通过跟踪dnat转换所对应的转换状态表,将来自专有网络中的服务器的ipv4转换为源地址为上述虚拟ip地址的ipv4报文,若服务器发送的ipv4报文为响应ipv6网络中客户端的ipv6请求报文的ipv4响应报文时,则将转换后的ipv4报文再次经过nat64转换得到ipv6响应报文后发送给ipv6网络中相应的客户端,否则直接将转换后的ipv4报文发给专有网络中的相应客户端,从而实现对nat64流量的dnat服务和ipv4流量的dnat服务进行区分。

本发明的第四实施方式涉及一种报文处理方法。第四实施方式是在第三实施方式基础上做的改进,其改进之处在于:

在形成第一ipv4报文之后,还包括:将用户态网络协议栈中已存的ipv6请求报文的报文结构体参数修改为第一ipv4报文的报文结构体参数;在第一ipv4报文的报文结构体参数中,添加用于标记第一ipv4报文为经所述nat64转换处理后的报文的关联标识;将关联标识存储到本次dnat转换所对应的转换状态表的转换状态信息中。通过在第一ipv4报文的报文结构体参数中添加用于标记第一ipv4报文为经nat64模块处理后的报文的关联标识,并将该关联标识引用至dnat转换所对应的转换状态表,以标记后续通过该表项的上下行报文均属于nat64转换的数据流。

如图7所示,该报文处理方法包括:

步骤701:接收来自ipv6网络中客户端的ipv6请求报文。

步骤702:采用nat64转换对ipv6请求报文进行转换处理形成第一ipv4报文,第一ipv4报文的目的地址为专有网络中服务器的虚拟ip地址。

步骤703:将用户态网络协议栈中已存的ipv6请求报文的报文结构体参数修改为第一ipv4报文的报文结构体参数。

其中,步骤701~703与步骤501~503对应相同,在此不做赘述。

步骤704:在第一ipv4报文的报文结构体参数中,添加用于标记第一ipv4报文为经nat64转换处理后的报文的关联标识。

具体地,代理服务器(具体为nat64模块)在将用户态网络协议栈中已存的ipv6请求报文的报文结构体参数修改为第一ipv4报文的报文结构体参数第一ipv4报文后,可直接将用于标记第一ipv4报文为经nat64转换处理后的报文的关联标识(如n64)添加到该报文结构体参数中,以基于该报文结构体参数将关联标识引用至与第一ipv4报文相关联的位置,如nat64转换所对应的状态转换表。

步骤705:基于从用户态网络协议栈中读取的第一ipv4报文的报文结构体参数,采用dnat转换对第一ipv4报文的目的地址进行转换处理形成第二ipv4报文。

本步骤与步骤504对应相同,在此不做赘述。

步骤706:将关联标识存储到本次dnat转换所对应的转换状态表的转换状态信息中。

具体地,通过在dnat转换所对应的转换状态表中添加该关联标识,可以辅助dnat模块实现对报文类型的识别。并且此改法可同时兼容其他的ipv4类型规则,并支持在dnat处理前扩展其他动作。

步骤707:将用户态网络协议栈中第一ipv4报文的报文结构体参数还原为ipv6请求报文的报文结构体参数。

步骤708:将第二ipv4报文转发给执行nat64转换的处理模块,以通过该处理模块将第二ipv4报文转发至专有网络中相应的服务器。

其中,步骤707~708与步骤505~506对应相同,在此不做赘述。

与现有技术相比,本发明实施方式通过在第一ipv4报文的报文结构体参数中添加用于标记第一ipv4报文为经nat64模块处理后的报文的关联标识,并将该关联标识引用至dnat转换所对应的转换状态表,以标记后续通过该表项的上下行报文均属于nat64转换的数据流。

另外,本实施例还提供了一种报文处理方法,该报文处理方法为图6所示报文处理方法的改进方法,该改进方法基于第四实施方式中的报文处理方法实现,其改进在于:

判断ipv4报文是否为ipv6请求报文对应的ipv4响应报文,包括:通过跟踪dnat转换所对应的转换状态表,确定与ipv4报文关联的转换状态信息中是否包含关联标识;如果是,则确定ipv4报文为ipv6请求报文对应的ipv4响应报文;如果否,则确定ipv4报文不是ipv6请求报文对应的ipv4响应报文。通过查询dnat转换所对应的转换状态表,判断与当前ipv4报文关联的转换状态信息中是否包含关联标识,可快速将非所属nat64的ipv4流量和经由nat64转换后的ipv4流量区分开,确保不影响非nat64的ipv4流量的dnat功能,同时由于所属nat64的ipv4上下行流量均通过nat64,从而不影响流量统计功能。

如图8所示,该报文处理方法包括:

步骤801:接收来自专有网络中服务器的ipv4报文。

步骤802:通过跟踪dnat转换所对应的转换状态表,对接收的ipv4报文进行转换处理形成第三ipv4报文,第三ipv4报文的源地址为所述虚拟ip地址。

其中,步骤801~802与步骤601~602对应相同,在此不做赘述。

步骤803:通过跟踪dnat转换所对应的转换状态表,确定与接收的ipv4报文关联的转换状态信息中是否包含关联标识;如果是,则进入步骤804;如果否则进入步骤806。

具体地,基于第四实施方式中的步骤704,可通过判断dnat转换所对应的转换状态表中,与ipv4报文关联的转换状态信息中是否包含关联标识来判断该ipv4报文是否为所属nat64转换的数据流,即判断ipv4报文是否为ipv6请求报文对应的ipv4响应报文。如果相应转换状态信息中包含该关联标识,则表征该ipv4报文是ipv6请求报文对应的ipv4响应报文,否则,表征该ipv4报文不是ipv6请求报文对应的ipv4响应报文,如为ipv4网络中的原生报文。

步骤804:通过跟踪nat64转换所对应的转换状态表,对第三ipv4报文进行转换处理形成ipv6报文,该ipv6报文为ipv6请求报文对应的ipv6响应报文。

步骤805:将该ipv6报文转发至ipv6网络中相应的客户端。

步骤806:将第三ipv4报文转发至ipv4网络中相应的客户端。

其中,步骤804~806与步骤604~606对应相同,在此不做赘述。

与现有技术相比,本发明实施方式通过查询dnat转换所对应的转换状态表,判断与当前ipv4报文关联的转换状态信息中是否包含关联标识,可快速将非所属nat64的ipv4流量和经由nat64转换后的ipv4流量区分开,确保不影响非nat64的ipv4流量的dnat功能,同时由于所属nat64的ipv4上下行流量均通过nat64,从而不影响流量统计功能。

本发明第五实施方式涉及一种切片服务器,如图9所示,包括至少一个处理器902;以及,与至少一个处理器902通信连接的存储器;其中,存储器901存储有可被至少一个处理器902执行的指令,指令被至少一个处理器902执行,以使至少一个处理器902能够执行上述任一方法实施例。

其中,存储器901和处理器902采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器902和存储器901的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器902处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器902。

处理器902负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器901可以被用于存储处理器902在执行操作时所使用的数据。

本发明第六实施方式涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述任一方法实施例。

即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1