一种高速安全虚拟网络代理的方法及其系统与流程

文档序号:25100712发布日期:2021-05-18 22:53阅读:238来源:国知局
一种高速安全虚拟网络代理的方法及其系统与流程

1.本发明属于网络代理技术领域,具体涉及高速安全虚拟网络代理的方法及其系统。


背景技术:

2.随着internet技术高速发展,5g、物联网时代的到来,企业不断被迫重构安全边界,软件定义边界(softwaredefined perimeter)是一个能够为osi七层协议栈提供安全防护的网络安全架构,sdp 可实现资产隐藏,并在允许连接到隐藏资产之前使用单个数据包通过单独的控制和数据平面建立信任连接,使用 sdp 实现的零信任网络使组织能够防御旧攻击方法的新变种,这些新变种攻击方法不断出现在现有的以网络和基础设施边界为中心的网络模型中;sdp架构体系中,网关承担着接入(access)、认证(authority)、审计(audit)等重要功能,保证客户端与网关之间网络传输的安全性与高效性,是研发与实施sdp标准的重要课题;现有的加密传输技术主要分两种,一是以openvpn为代表的基于ssl/tls的虚拟网隧道传输技术,二是以ipsec为代表的互联网安全协议传输技术;openvpn是一个开源的加密隧道构建工具,基于openssl的ssl/tls协议,可以在互联网中实现点对点的vpn安全连接;openvpn提供两种类型的虚拟网络接口,分别用于建立ip隧道及以太网桥接;除了对传输与控制数据的加密使用了openssl库支持的所有算法,openvpn还提供了多种身份验证方式,用于确认参与连接双方的身份,包括:预享私钥、基于pki的第三方证书,及用户名/密码组合;ipsec协议工作在osi模型的第三层,使其在单独使用时适于保护基于tcp或udp的协议;这就意味着,与传输层或更高层的协议相比,ipsec协议必须处理可靠性和分片的问题,这同时也增加了它的复杂性和处理开销;相对而言,ssl/tls依靠更高层的tcp(osi的第四层)来管理可靠性和分片;ipsec协议提供了完整的安全协议,包括ah(authentication header)、esp(encapsulated security payload),有效防止了非法入侵,确保了通信不被篡改。密钥管理协议(isakmp)提供共享安全信息,包括密钥及密钥有效期、转码方式、密钥交换等;类似openvpn这种基于ssl/tls的虚拟网技术是通过虚拟网络接口将操作系统协议栈中传输的数据传递至用户层,进行ssl/tls加密,且外层用tcp或udp封装后,再次投递入操作系统协议栈进行传输的技术;这种技术存在4个缺点,一是协议封装的过程会造成性能损失较大,协议有效载荷占比降低;二是虚拟网络接口技术的应用造成频繁用户态与内核态的切换与内存拷贝,在服务端的影响尤甚,极大影响数据吞吐量;三是数据报文的加密和解密占用了大量处理能力,造成处理时延增大;四是协议封装处理逻辑需随业务传输协议调整,tcp报文需以udp协议封装,udp报文需以tcp协议封装,否则会造成数据重传风暴或数据丢失,这种不统一会在实际部署应用时增加复杂度;
ipsec工作在网络层,任何基于ip的协议都能够通过它进行传输,ipsec中与应用程序无关的设计也是它的弱点,虽然它提供了认证、授权和加密,同时还基本上把公司网络拓展到任何远程用户,但是它没有能在一定粒度级别上限制对资源的访问;一旦隧道建立,远程用户通常可以访问公司的任何资源,就像他们是直接连接到公司网络一样,另外,ipsec也需要更多的维护,除了需要建立终止通道的设备,还需要额外的配置和维护来支持远程用户群,在公司使用网络地址解析(nat)的情况下,还需要特殊的配置确保ipsec与nat设置充分协调;目前主流vpn代理软件基本是基于两种技术,一是基于openvpn这种x协议封装y协议的方式,另一种是基于ipsec的方式,现有技术存在的主要问题是效率不高,由于必须将三、四层协议封装造成大量的协议转换、校验和计算,还可能造成多余的数据包重传,另外openvpn必须借助到虚拟网络接口的直接读写二层网络数据能力,在大数据量并发的情况下虚拟网络接口设备效率不佳,成为系统性能瓶颈。


技术实现要素:

3.本发明的目的在于提供一种高速安全虚拟网络代理的方法及其系统,以解决大数据量并发的情况下虚拟网络接口设备效率不佳的问题。
4.为实现上述目的,本发明提供如下技术方案:本发明的一种高速安全虚拟网络代理的方法,包括虚拟网卡、对流经虚拟网卡数据处理的客户端虚拟网卡处理模块;包括以下步骤:s10、客户端将流经虚拟网卡的请求数据转换、封装发送至网关;s20、所述网关接受到步骤s10中的数据包,并把此数据包解封后由代理连接发至应用系统;s30、所述应用系统将步骤s20中的数据包由代理连接返回网关;s40、所述网关将步骤s30中的数据包封装,返回客户端。
5.本发明能够高效率地解决数据报文封装和转发问题,对于tcp和udp协议的应用,摈弃效率低下的虚拟网络接口方式,传输效率得以得到极大提升;协议头精简,封装与解封效率高;底层传输采用tcp,无需像openvpn那样需要根据传输数据调整底层传输协议;网关无需虚拟网络接口,避免虚拟网络接口设备并发效率不足及大量内核态与用户态转换造成的效率瓶颈,与ipsec相比,本发明是纯软件实现的安全隧道传输技术,无需额外配置或专用网络设备投资。
6.上述数据转换包括以下步骤:s11、所述客户端预先绑定虚拟网卡ip,并把应用系统ip添加到路由信息中,在指定端口启动监听;s12、应用发起请求,所述客户端从虚拟网卡读取到数据包;s13、所述客户端虚拟网卡处理模块将数据包中的源ip与目的ip交换,并将目的ip的端口修改为指定端口,写回虚拟网卡;s14、写回所述虚拟网卡的数据包被监听端口接收,创建新socket连接;并使用所述新socket连接接收数据。
7.步骤s12中,发起请求的数据包中包含源ip、源端口、目的ip、目的端口。
8.步骤s14中,数据包为三层数据包,包括ip头、tcp头以及payload。
9.步骤s14中,数据包通过gt协议封装,所述gt协议中携带发起请求的源端口,并发送至网关。
10.步骤s40中,具体包括以下步骤:s41、所述网关返回gt协议封装的数据包;s42、根据步骤s41数据包中的源端口匹配客户端监听创建的连接会话socket,剥离gt协议头,将数据写回会话socket。
11.步骤s40中,还包括以下步骤:s43、根据步骤s11中预先添加的路由信息,所述步骤s42中的数据包流经虚拟网卡;s44、所述客户端虚拟网卡处理模块读取到步骤s43中的数据包;并将此数据包中的源ip与目的ip交换,写回虚拟网卡;s45、所述步骤s44中的数据包通过操作系统协议栈返回应用程序。
12.上述gt协议格式包括:gt协议头定长64bit,其中:package_type、package_length、control_type/proxy_id、data_length各占用16bit;package_type枚举值:control、ip、tcp、udp,package_type=control时,control_type/proxy_id填充control_type,control_type枚举值:keepalive、prepare、confirm、netconf、proxyopen、proxyclose、proxyready、sessionclose、passthrouth。
13.上述package_type!=control时,客户端操作系统分配给应用程序的随机端口号的唯一映射号;若data在package_type为control时,data以json格式字串表示控制请求;在package_type为非control时,data保存二进制的数据段。
14.本发明的一种高速安全虚拟网络代理系统,包括网络接口、存储器和处理器;所述网络接口,用于在与其他外部网元之间进行收发信息过程中,信号的接收和发送;所述存储器,用于存储能够在所述处理器上运行的计算机程序;所述处理器,用于在运行所述计算机程序时,执行高速安全虚拟网络代理的方法的步骤。
15.本发明有如下优点:1、代理连接的打开,由客户端向目标主机发送的第一个syn包触发,网关通过判断客户端权限规则确定是否与目标主机建立代理连接,网关建立好代理连接后,数据交互不再进行权限判断,大幅提升数据交互效率;2、客户端转换与封装过程的创新之处是,将虚拟网卡的读写与端口监听结合起来,将数据封装于gt协议中,代理连接id置为客户端应用程序唯一映射号,完成数据转发过程;由于采用该代理转发机制,使得服务端在传输tcp和udp数据时无需配置虚拟网络接口设备,避免了由于虚拟网络接口设备的频繁读写造成的性能损失;3、gt协议头的创新之处在于对于本代理转发场景,协议头只有8个字节,复用了第3个字节,可以实现控制消息请求功能和ip、tcp或udp数据转发,效率高于openvpn等软件。
附图说明
16.图1为本发明的流程图;图2为本发明客户端转换与封装流程图;图3为本发明tcp/udp收包流程图;图4为本发明网关转发流程图。
具体实施方式
17.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
18.本发明提供了如图1中所示的一种高速安全虚拟网络代理的方法,包括以下流程步骤:(1) 客户端向网关发起连接;(2) 连接成功后客户端向网关发起代理打开请求;(3) 网关接收代理打开请求,向应用系统发起连接;(4) 连接成功,则网关向客户端返回代理打开成功通知;(5) 客户端接收到代理打开成功通知,向网关传输以gt协议封装后的数据;(6) 网关接收到客户端的数据,解封gt协议头,将此数据转发至应用系统;(7) 应用系统返回数据至网关;(8) 网关将此数据进行gt协议封装,转发客户端;(9) 数据传输完毕,网关关闭代理,并将代理关闭请求发至客户端;(10)客户端关闭本次代理连接;客户端转换与封装过程:本实施例中,客户端虚拟网卡绑定ip为172.16.0.5,应用系统ip为10.10.10.10,事先添加路由route add
ꢀ‑
host 10.10.10.10 gw 172.16.0.5 ,并在端口33333上启动监听,本实施例中,应用为浏览器,浏览器访问位于10.10.10.10的网页。
19.参见图2

图3,转换与封装过程如下:tcp/udp发包:(1) 浏览器发起http请求,数据包源ip:port是172.16.0.5:54321,目的ip:port是10.10.10.10:80;(2) 客户端从虚拟网卡读取数据包;(3) 客户端将源ip与目的ip交换,且将目的ip的port修改为33333,写回虚拟网卡;(4) 写回虚拟网卡的数据包会被监听端口accept,创建socket连接;(5) 数据由该socket接收;(6) 客户连接网关服务以gt协议封装该数据包,gt协议中携带发起请求的源端口54321的唯一映射号,发送至网关;tcp/udp收包:
(1) 网关返回gt协议封装的数据包,gt协议package_type为tcp或udp,proxy_id为54321的唯一映射号;(2) 根据proxy_id=54321的唯一映射号找到客户端监听创建的连接会话socket,剥离gt协议头,将数据写回该会话socket;(3)根据预先添加的路由信息,该数据包流经虚拟网卡,此时数据包的源地址为172.16.0.5:54321,目的地址为172.16.0.5:33333;(4) 步骤3的数据包被客户端虚拟网卡处理模块读取;(5) 客户端虚拟网卡处理模块改写源地址为10.10.10.10:80,目的地址为172.16.0.5:54321,写回虚拟网卡;(6) 数据包通过操作系统协议栈返回浏览器;参见图4,网关转发过程:(1)客户端将gt协议封装的数据报文发至网关;(2)网关接收数据包,解封后经由代理连接发至应用系统;(3)应用系统将数据包经由代理连接返回网关;(4)网关将数据包以gt协议封装,返回客户端;(5 )gt协议格式:gt协议头定长64bit,其中:package_type、package_length、control_type/proxy_id、data_length各占用16bit;package_type枚举值:control、ip、tcp、udp,package_type=control时,control_type/proxy_id填充control_type,control_type枚举值:keepalive、prepare、confirm、netconf、proxyopen、proxyclose、proxyready、sessionclose、passthrouth。
20.描述如下:keepalive:保活流程prepare:预处理流程confirm:确认流程netconf:客户端网络配置proxyopen:代理打开proxyclose:代理关闭proxyready:代理准备完成sessionclose:会话关闭passthrouth:透传流程package_type!=control时,control_type/proxy_id填充proxy_id,即客户端操作系统分配给应用的随机端口号的唯一映射号。
21.data在package_type为control时,data以json格式字串表示控制请求;在package_type为非control时,data保存二进制的数据段,用于数据转发。
22.一种高速安全虚拟网络代理的装置,所述装置包括:虚拟网卡模块;客户端虚拟网卡处理模块:用于对流经虚拟网卡模块的数据转换、封装、解析。
23.最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1