一种数据分流方法及装置、计算机设备、存储介质与流程

文档序号:14574802发布日期:2018-06-02 01:25阅读:298来源:国知局
一种数据分流方法及装置、计算机设备、存储介质与流程
本发明涉及计算机通信
技术领域
,特别涉及一种数据分流方法及装置、计算机设备、存储介质。
背景技术
:互联网的发展已经日趋完善,但是仍然存在网络不通畅的问题,比如国外IP和企业内网访问过慢等问题。虽然一些针对网关和Linux设备的代理软件已经取得比较好的效果,然而在Windows平台上,尚未有完善的方案。也即,现有技术的不足在于,在全局代理时不能分流和部分代理时不能对不支持代理的程序进行代理,具体如,对于类似微软商城的软件无法代理,不能对国内国外流量进行分流等。技术实现要素:本发明提供了一种数据分流方法及装置、计算机设备、存储介质,用以解决全局代理时不能分流和部分代理时不能对不支持代理的程序进行代理的问题。本发明实施例中提供了一种数据分流方法,包括:在配置的虚拟网卡上,接收应用程序发往外部服务器的数据;读取虚拟网卡传输层及以上的数据;将不需要代理的数据经物理网卡转发到目的服务器,将需要代理的数据按协议处理后经物理网卡发送到代理服务器。较佳地,进一步包括:接收从物理网卡发来的数据;在根据套接字连接确定发来的数据是需要代理的数据时,在对该报文进行解密后经虚拟网卡发往相应的应用程序,在根据套接字连接确定发来的数据是不需要代理的数据时,经虚拟网卡发往相应的应用程序。较佳地,经虚拟网卡发往相应的应用程序,是在虚拟网卡收到数据后,按Windows系统协议栈要求将数据送达相应的应用程序。较佳地,读取虚拟网卡传输层及以上的数据时,进一步包括:丢弃传输层及以下的数据。较佳地,传输层及以上的层的数据包括基于TCP和UDP协议的所有的应用层协议传输的数据。较佳地,进行如下配置以使应用程序发往外部服务器的数据发送至虚拟网卡:配置虚拟网卡地址;在系统路由配置表中添加两条永久路由,其中,两条永久路由的目的IP段是固定不变的,且默认网关地址与虚拟网卡地址在同一网段。较佳地,在系统路由配置表中添加的两条永久路由,是在虚拟网卡启动后以覆盖默认路由的方式添加的。较佳地,所述虚拟网卡是通过调用Windows系统命令进行配置的。较佳地,进行如下配置用以判断数据是否需要代理:导入分流规则文件,其中,分流规则文件中包括:不需要代理的IP段和域名列表以及需要代理的IP段和域名列表。较佳地,在按分流规则文件对数据进行匹配时,优先匹配需要代理的数据。本发明实施例中提供了一种数据分流装置,包括:虚拟网卡,用于接收应用程序发往外部服务器的数据;全局代理软件,用于配置的虚拟网卡,读取虚拟网卡传输层及以上的数据,将不需要代理的数据经物理网卡转发到目的服务器,将需要代理的数据按协议处理后经物理网卡发送到代理服务器。较佳地,全局代理软件进一步用于接收从物理网卡发来的数据;在根据套接字连接确定发来的数据是需要代理的数据时,在对该报文进行解密后经虚拟网卡发往相应的应用程序,在根据套接字连接确定发来的数据是不需要代理的数据时,经虚拟网卡发往相应的应用程序。本发明实施例中提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法。本发明实施例中提供了一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述方法的计算机程序。本发明有益效果如下:在本发明实施例提供的技术方案中,由于使用配置的虚拟网卡,使得应用程序发往外部服务器的数据只能发往虚拟网卡,并能够按照需要的分流规则针对数据是否需要代理进行分流,从而可以按照用户需求进行自定义分流规则,能够支持对所有的应用软件进行代理,支持对国外网络和企业网络进行代理,不会出现不能对国内国外流量进行分流的情况;也由于分流的是虚拟网卡传输层及以上的数据,因此能够支持多种代理协议或隧道协议,不会出现无法代理的情况。附图说明此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:图1为本发明实施例中数据分流方法实施流程示意图;图2为本发明实施例中数据分流时网络功能结构示意图;图3为本发明实施例中数据分流装置结构示意图。具体实施方式发明人在发明过程中注意到:在Windows平台上,代理软件主要分为HTTP(HyperTextTransferProtocol,超文本传输协议)代理和VPN(VirtualPrivateNetwork,虚拟专用网络)代理。1、HTTP代理存在以下问题:只能对某些使用HTTP协议的软件进行代理,不支持FTP(FileTransferProtocol,文件传输协议),SMTP(SimpleMailTransferProtocol,简单邮件传输协议)等协议。HTTP代理对于类似微软商城的软件无法代理,因为该类软件采用沙盒模式运行,无法捕捉到其网络数据。2、VPN代理存在以下问题:PPTP(PointtoPointTunnelingProtocol,点对点隧道协议),L2TP(LayerTwoTunnelingProtocol,第二层通道协议)等协议由于流量统计特征明显,容易被防火墙拦截。由于没有完善的分流措施,因而一般是用路由表分流,把企业专网的IP段添加到路由表,用于访问企业内网资源。而路由表添加条目数量有限制,因此不能对国内国外流量进行分流。本发明实施例中提出了一种新的全局代理及分流方案,考虑传统VPN代理和HTTP代理的特点,并根据分流规则文件进行分流,解决访问所有网络资源的问题,从而可以有效的减少代理服务器的负担。下面结合附图对本发明的具体实施方式进行说明。图1为数据分流方法实施流程示意图,如图所示,可以包括:步骤101、在配置的虚拟网卡上,接收应用程序发往外部服务器的数据;步骤102、读取虚拟网卡传输层及以上的数据;步骤103、将不需要代理的数据经物理网卡转发到目的服务器,将需要代理的数据按协议处理后经物理网卡发送到代理服务器。上述是应用程序发出数据的分流处理,下面针对接收数据的实施,还可以进一步包括:接收从物理网卡发来的数据;在根据套接字连接确定发来的数据是需要代理的数据时,在对该报文进行解密后经虚拟网卡发往相应的应用程序,在根据套接字连接确定发来的数据是不需要代理的数据时,经虚拟网卡发往相应的应用程序。具体的,由于发出的数据与代理服务器或目的服务器之间有套接字连接,因此代理服务器或目的服务器返回的报文在通过物理网卡接收时,可以根据套接字进行判断,如果判断该报文是代理报文则对该报文进行解密,发送解密后的报文到虚拟网卡;如果是非代理报文则不解密,直接发送到虚拟网卡。实施中,经虚拟网卡发往相应的应用程序,可以是在虚拟网卡收到数据后,按Windows系统协议栈要求将数据送达相应的应用程序。也即,虚拟网卡收到报文后,Windows系统协议栈会将报文送达应用程序。步骤102实施中,在读取虚拟网卡传输层及以上的数据时,还可以进一步包括:丢弃传输层及以下的数据。实施中,传输层及以上的层的数据包括基于TCP和UDP协议的所有的应用层协议传输的数据。具体的,读取虚拟网卡的传输层及以上数据报文,包括基于TCP(TransmissionControlProtocol,传输控制协议)和UDP(UserDatagramProtocol,用户数据报协议)协议的所有的应用层协议,比如HTTP(HyperTextTransferProtocol,超文本传输协议)、FTP(FileTransferProtocol,文件传输协议)、SMTP(SimpleMailTransferProtocol,简单邮件传输协议)和DNS(DomainNameSystem,域名系统)等;将传输层以下协议,比如ICMP(InternetControlMessageProtocol,Internet控制报文协议)等数据报文丢弃。实施中,进行如下配置以使应用程序发往外部服务器的数据发送至虚拟网卡:配置虚拟网卡地址;在系统路由配置表中添加两条永久路由,其中,两条永久路由的目的IP段是固定不变的,且默认网关地址与虚拟网卡地址在同一网段。实施中,在系统路由配置表中添加的两条永久路由,是在虚拟网卡启动后以覆盖默认路由的方式添加的。实施中,所述虚拟网卡是通过调用Windows系统命令进行配置的。具体的,虚拟网卡,也可称虚拟网络适配器,即用软件模拟网络环境,模拟网络适配器,通常windows系统自带此软件,实施中,进入添加硬件向导,添加新硬件,检测过后选择添加新设备,再选择从列表中选取,选中网卡下一步,查找制造商Microsoft有一个设备MicrosoftLoopbackAdapter,选中它,安装完成后,查看硬件管理器,会多出一个新网卡,这就是虚拟网卡。实施中也可以使用其他方式,例如使用OpenVPN开源项目里的Tap-Windows创建虚拟网络适配器,也可以使用SofteherVPN开源项目提供的虚拟网卡安装程序等等。当然,也可以自己编写虚拟网卡驱动来创建虚拟网卡。实施中,进行如下配置用以判断数据是否需要代理:导入分流规则文件,其中,分流规则文件中包括:不需要代理的IP段和域名列表以及需要代理的IP段和域名列表。实施中,在按分流规则文件对数据进行匹配时,优先匹配需要代理的数据。下面用实例对上述方案的实施进行说明。实例中设计了一种基于Windows平台的全局代理及分流方案。方案中,为了便于理解,设计一软件实现分流方案,将其命名为:全局代理软件,该软件主要行使分流功能,则在实施中用户只需要启动全局代理软件,就能自动完成网络配置,通过全局代理软件访问网络。实例可以对所有传输层及以上的网络流量进行代理,而对应用软件本身而言是透明的。图2为数据分流时网络功能结构示意图,如图所示,应用软件与虚拟网卡相连,收发的数据对象是虚拟网卡,虚拟网卡与全局代理软件相连,全局代理软件与物理网卡相连,并按照分流规则文件进行分流,分流的数据经物理网卡与目的服务器2,以及需要代理服务器的目的服务器1交互。下面对全局代理软件下的数据分流具体流程进行详细说明。1、全局代理软件安装过程中自动安装虚拟网卡,也可以调用第三方软件或是Windows系统命令配置虚拟网卡。2、安装程序对虚拟网卡进行两项配置:(1)调用Windows系统命令给虚拟网卡重命名,例如RSpeedoVPN,在对虚拟网卡进行调用操作要使用此名称,比如IP配置,开启和关闭虚拟网卡等;(2)调用Windows系统命令给虚拟网卡配置私有IP地址和子网掩码,例如IP地址10.0.0.1和子网掩码255.255.255.0。3、路由配置表中的两条路由目的IP段是固定不变的,默认网关地址只要和虚拟网卡地址在同一网段即可。也即,进行如下配置以使应用程序发往外部服务器的数据发送至虚拟网卡:配置虚拟网卡地址;在系统路由配置表中添加两条永久路由,其中,两条永久路由的目的IP段是固定不变的,且默认网关地址与虚拟网卡地址在同一网段。具体可以如下表1所示:表1:路由配置表目的IP段默认网关0.0.0.0/1私有地址(需和虚拟网卡IP在同一网段,例如10.0.0.2)128.0.0.0/1私有地址(需和虚拟网卡IP在同一网段,例如10.0.0.2)安装程序仅添加路由配置表中的两条永久路由到系统路由,不添加或修改其他任何路由。虚拟网卡不启动时,上述两条路由不生效,虚拟网卡启动时,上述两条永久路由变成活动路由并自动生效。也即,在系统路由配置表中添加的两条永久路由,是在虚拟网卡启动后以覆盖默认路由的方式添加的。采用上述两条路由覆盖默认路由而不是直接修改默认路由的原因主要有:直接修改默认路由需要管理员权限,用户每次启动和关闭软件必须拥有管理员权限;直接修改默认路由导流会导致系统网络连接图标异常。4、用户启动全局代理软件后,自动从导入分流规则文件。也即,进行如下配置用以判断数据是否需要代理:导入分流规则文件,其中,分流规则文件中包括:不需要代理的IP段和域名列表以及需要代理的IP段和域名列表。具体分流规则可以如下所示:[proxy_all][bypass_list]1.0.1.0/24223.0.0.0/12(^|\.)youtube\.com[proxy_list]172.16.0.0/16(^|\.)twitter\.com(^|\.)goolge\.com如上,该文件分为两个部分,[bypass_list]是指获取或设置一个地址数组,这些地址不使用代理服务器,[proxy_list]是指获取或设置一个地址数组,这些地址使用代理服务器。[bypass_list]是不需要代理的IP段和域名列表,[proxy_list]是需要代理的IP段和域名列表。分流规则文件导入完成后,全局代理软件对文件解析内容,对IP段和域名进行分类和排序,方便在分流时,对IP和域名进行二分查找算法快速匹配。5、点击全局代理软件加速按钮,启动虚拟网卡。路由配置表中的两条路由自动生效,覆盖系统默认路由,因为0.0.0.0/1和128.0.0.0/1两个网段的组合后等同0.0.0.0/0,因此可完全覆盖默认路由。默认网关的地址是一个虚拟的不存在的地址,只要与虚拟网卡地址在同一网段即可。由此,应用程序流量都被导向虚拟网卡。这里所述的应用程序是指Windows平台上的所有应用程序。6、全局代理软件读取虚拟网卡的传输层及以上数据报文,包括基于TCP和UDP协议的所有的应用层协议,比如HTTP、FTP、SMTP和DNS等;将传输层以下协议,比如ICMP等数据报文丢弃。将需要分流的数据报文根据分流规则分流,以减轻代理服务器的压力。7、分流规则。优先匹配[proxy_list](需要代理),再匹配[bypass_list](不需要代理)。[proxy_list]和[bypass_list]中优先匹配IP地址,再匹配域名。IP采用精确匹配,需要在某个具体的IP段内;域名采用关键字模糊匹配,比如不进行代理的名单中有“goolge.com”,则“goolge.com.hk”和“google.com.jp”都会认为匹配成功。如果[proxy_list]和[bypass_list]都匹配失败,则默认代理。8、全局代理软件把不需要代理的流量,直接把数据转发到目的服务器,;对于需要代理的流量,把数据封装成SOCK5报文,或L2TP(LayerTwoTunnelingProtocol,第二层通道协议)、IPSec(InternetProtocolSecurity,Internet协议安全性)、PPTP(PointtoPointTunnelingProtocol,点对点隧道协议)等协议的报文,并进行加密,发送到代理服务器,代理服务器解密并解析报文头,转发到目的服务器,如图中的红色箭头所示。9、由于全局代理软件与代理服务器或目的服务器之间有套接字连接,因此代理服务器或目的服务器返回的报文会通过物理网卡被全局代理软件接收。全局代理软件如果判断该报文是代理报文则对该报文进行解密,发送解密后的报文到虚拟网卡;如果是非代理报文则不解密,直接发送到虚拟网卡。10、虚拟网卡收到报文后,Windows系统协议栈会将报文送达应用程序。11、全局代理软件退出时,关闭虚拟网卡,路由配置表中的两条永久路由自动失效,默认路由生效,恢复到原Windows默认报文处理模式。基于同一发明构思,本发明实施例中还提供了一种数据分流装置、一种计算机设备、一种计算机可读存储介质,由于这些设备解决问题的原理与一种数据分流方法相似,因此这些设备的实施可以参见方法的实施,重复之处不再赘述。图3为数据分流装置结构示意图,如图所示,可以包括:虚拟网卡301,用于接收应用程序发往外部服务器的数据;全局代理软件302,用于配置的虚拟网卡,读取虚拟网卡传输层及以上的数据,将不需要代理的数据经物理网卡转发到目的服务器,将需要代理的数据按协议处理后经物理网卡发送到代理服务器。实施中,全局代理软件进一步用于接收从物理网卡发来的数据;在根据套接字连接确定发来的数据是需要代理的数据时,在对该报文进行解密后经虚拟网卡发往相应的应用程序,在根据套接字连接确定发来的数据是不需要代理的数据时,经虚拟网卡发往相应的应用程序。为了描述的方便,以上所述装置的各部分以功能分为各种模块或单元分别描述。当然,在实施本发明时可以把各模块或单元的功能在同一个或多个软件或硬件中实现。在实施本发明实施例提供的技术方案时,可以按如下方式实施。本发明实施例中还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如下所述方法:在配置的虚拟网卡上,接收应用程序发往外部服务器的数据;读取虚拟网卡传输层及以上的数据;将不需要代理的数据经物理网卡转发到目的服务器,将需要代理的数据按协议处理后经物理网卡发送到代理服务器。实施中,进一步包括:接收从物理网卡发来的数据;在根据套接字连接确定发来的数据是需要代理的数据时,在对该报文进行解密后经虚拟网卡发往相应的应用程序,在根据套接字连接确定发来的数据是不需要代理的数据时,经虚拟网卡发往相应的应用程序。实施中,经虚拟网卡发往相应的应用程序,是在虚拟网卡收到数据后,按Windows系统协议栈要求将数据送达相应的应用程序。实施中,读取虚拟网卡传输层及以上的数据时,进一步包括:丢弃传输层及以下的数据。实施中,传输层及以上的层的数据包括基于TCP和UDP协议的所有的应用层协议传输的数据。实施中,进行如下配置以使应用程序发往外部服务器的数据发送至虚拟网卡:配置虚拟网卡地址;在系统路由配置表中添加两条永久路由,其中,两条永久路由的目的IP段是固定不变的,且默认网关地址与虚拟网卡地址在同一网段。实施中,在系统路由配置表中添加的两条永久路由,是在虚拟网卡启动后以覆盖默认路由的方式添加的。实施中,所述虚拟网卡是通过调用Windows系统命令进行配置的。实施中,进行如下配置用以判断数据是否需要代理:导入分流规则文件,其中,分流规则文件中包括:不需要代理的IP段和域名列表以及需要代理的IP段和域名列表。实施中,在按分流规则文件对数据进行匹配时,优先匹配需要代理的数据。本发明实施例中还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述数据分流方法的计算机程序。具体可以参见上述计算机设备的实施。综上所述,在本发明实施例提供的技术方案中,提供了通过添加永久路由向虚拟网卡导流的方案。进一步的,采用添加路由配置表中的两条永久路由进行导流,替代操作系统默认路由,能够让Windows系统网络连接图标显示正常。如果采用其他方式进行导流,会导致Windows系统网络连接图标显示异常。可以通过软件来开启或关闭虚拟网卡控制分流,且不需要管理员权限,例如实例中的全局代理软件。采用的匹配规则支持IP和域名,域名采用模糊匹配,匹配前,对IP和域名进行排序,可以采用折半查找算法加速匹配。方案中能够对传输层及以上的所有应用程序的数据报文进行分流。并且支持SOCK5、L2TP、IPSec、PPTP等多种协议转发代理报文。可以看出,本方案操作便利,例如采用例中的软件方式,可以一键安装,自动配置虚拟网卡和路由表,代理模式和非代理模式切换简单。本方案可以灵活分流:可以按照用户需求进行自定义分流规则,在企业应用场景,可进行个性化定制,在线分发规则。分流可以有效的减少代理服务器的负担,把不需要代理的流量直接发送到目的服务器。本方案能够支持多种应用协议:支持基于TCP和UDP协议的所有应用层协议,包括HTTP,FTP,SMTP和DNS等。支持对所有的应用软件进行代理。支持对国外网络和企业网络进行代理。支持多种代理协议或隧道协议:如SOCKS5、L2TP、IPSec、PPTP等。本方案通用性强:全局代理软件在WindowsXP及以后的Windows系统都适用。本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1