一种用户端通过vpn访问内网的系统及方法

文档序号:7986231阅读:1323来源:国知局
一种用户端通过 vpn 访问内网的系统及方法
【专利摘要】本发明系统包括用户端应用程序进程装置、部署在互联网的VPN服务器和互联网,其中用户端应用程序进程装置中包括用户态协议栈处理线程单元和与之相匹配的应用线程单元。本发明方法主要是用户端与内网VPN服务器联络,在用户端建立VPN隧道、并顺序构建虚拟用户态协议栈、虚拟网卡、分配虚拟IP、Socket?API、HTTP代理、TCP代理、UDP代理等,应用程序使用SocketAPI或者HTTP、TCP、UDP代理API来进行操作,从而使数据进入VPN隧道,实现用户端访问内网。本发明通过应用程序进程内的数据拦截系统及方法,安全性更高。
【专利说明】一种用户端通过VPN访问内网的系统及方法
【技术领域】
[0001]本发明涉及网络信息安全领域,特别涉及一种用户端通过VPN访问内网的系统及方法。
【背景技术】
[0002]在今天这个移动性、云计算和企业业务相互依存的时代,传统意义上的防火墙仅仅是第一道防线,企业内部的关键业务资源和应用需要额外的保护。VPN(Virtual PrivateNetwork)技术是在公用网络上建立专用网络的技术,其实质上就是利用加密技术在公网上封装出一个数据通讯隧道。有了 VPN技术,用户无论是在外地出差还是在家中办公,只要能上互联网就能利用VPN非常方便地访问内网资源,包括内部的HTTP (hypertext transportprotocol)网站。
[0003]中国专利CN201110127721.5中公开了一种VPN用户端接入方法和装置,该装置包括VPN用户端、数据存储模块和用于连接主机的接口,其中所述VPN用户端包括:认证模块,用于获取用户身份认证信息进行身份认证,登陆VPN,并创建VPN隧道;远程接入界面,用于启动远程接入程序访问内网资源;网络访问过滤模块,用于将所述远程接入程序访问内网的网络数据通过所述VPN隧道转发给内网主机;文件操作过滤模块,用于将所述远程接入程序要创建或写入本地主机磁盘中的文件重新定向到所述数据存储模块中。该装置是在传统的VPN基础上,通过网络过滤和文件过滤模块主动过滤或拦截数据以提高内网的安全性,该装置只适用于Windows、MAC、Linux等桌面操作系统构成的用户端设备,对于大多数移动设备,例如iOS和Android操作系统构成的用户端是无法实现在网络层和文件层进行过滤的。因为在iOS和Android、Windows Phone等手机操作系统上应用程序是相互隔离的,应用程序无法进行高权限的操作;从而导致应用程序无法安装进行网络层和文件层过滤所需要的驱动程序,也无法拦截其他应用程序的网络和文件操作。
[0004]另外,在Windows、MAC、Linux等桌面操作系统提供上,还可以通过VPN软件安装虚拟网卡并修改系统路由表的方法来实现拦截网络数据。安装虚拟网卡并修改系统路由表是高权限的操作,这在iOS和Android、Windows Phone操作系统上通常是禁止的,这就导致很多传统的VPN软件在iOS和Android操作系统上无法运行。
[0005]Android和iOS、Windows Phone操作系统也提供了 PPTP (点对点隧道协议)和L2TP(第二层隧道协议)方式的VPN方案。PPTP和L2TP是比较原始的VPN解决方案,首先,PPTP和L2TP本身安全性不高,加密强度较低,不能满足高保密性系统的要求,L2TP结合IPsec技术后,虽然可以解决安全性的问题,却又会带来需要防火墙开放更多端口以及NAT(Network Address Translation,网络地址转换)穿越的新问题。其次,虽然iOS和Android、Windows Phone都支持PPTP和L2TP,但是管理PPTP和L2TP必须使用操作系统自带的配置界面。这就导致用户不能在厂商的VPN软件操作界面内完成所有工作,从而使VPN软件的易用性很差。再次,PPTP和L2TP都是系统范围的VPN,VPN启用后系统中所有进程都可以使用,容易带来安全隐患。
【发明内容】

[0006]为克服已有技术中存在的问题,本发明的目的是提供一种安全性高、通用性强、且不受用户端操作系统VPN API (应用程序编程接口)限制的用户端通过VPN访问内网的系统及方法。
[0007]本发明的一种用户端通过VPN访问内网的系统,包括用户端应用程序进程装置、部署在互联网的VPN服务器和互联网,其中用户端应用程序进程装置中包括用户态协议栈处理线程单元和与之相匹配的应用线程单元。
[0008]所述的用户态协议栈处理线程单元是由VPN隧道处理模块及虚拟网卡处理模块与一组虚拟用户态协议栈处理模块相互连通后构成。
[0009]所述的VPN隧道处理模块用于与内网的VPN服务器交互、接收和发送数据,同时与应用线程单元相互连通。
[0010]所述的一组虚拟用户态协议栈处理模块通常包括ICMP (InternetControlMessage Protocol, Internet控制报文协议)协议处理模块、IP协议处理模块、IGMP(Internet Group Management Protocol, Internet 组管理协议)协议处理模块、UDP(UserDatagram Protocol用户数据报协议)协议处理模块、TCP协议处理模块和DNS (DomainName system域名系统)协议处理模块等。
[0011]所述的虚拟网卡处理模块负责创建、删除、维护虚拟网卡,发送数据给上层IP协议处理模块,并转发从IP协议处理模块发来的数据到VPN隧道处理模块,所述虚拟网卡处理模块对外的表现和一个真实网卡相同,此状态下真实的物理网卡可以和这个虚拟网卡建立连接并传输数据。
[0012]所述的IP协议处理模块接收从虚拟网卡发来的数据,并根据数据的协议类型对应地转发给ICMP、IGMP, TCP、UDP协议处理模块。
[0013]所述的ICMP、IGMP、TCP、UDP、DNS协议处理模块分别对各自接收的数据进行处理,其中,DNS协议是构建在UDP协议之上的。
[0014]所述的应用线程单元是由应用程序代码模块通过虚拟Socket API与上述用户态协议栈处理线程单元中的VPN隧道处理模块交互连通构成。
[0015]所述的应用线程单元还可由应用程序代码模块连接系统协议代理API模块、并通过虚拟Socket API模块与上述用户态协议栈处理线程单元中的VPN隧道处理模块交互连通构成,其中系统协议的代理API模块可以包括TCP代理API模块、UDP代理API模块以及HTTP代理API模块等。
[0016]所述的应用线程单元中系统协议的HTTP代理API模块可由IP地址模块、真实Socket管理模块、虚拟Socket管理模块顺序连通后连接虚拟SocketAPI模块构成。
[0017]本发明的一种用户端通过VPN访问内网的方法,包括以下步骤:
[0018]步骤一,用户端与部署在互联网的VPN服务器联络,在用户端建立VPN隧道;
[0019]步骤二,用户端在VPN隧道基础之上构建一组虚拟用户态协议栈;
[0020]步骤三,通过虚拟用户态协议栈创建至少一个虚拟网卡,并分配相应数量的虚拟IP给虚拟网卡;
[0021]步骤四,在虚拟用户态协议栈基础之上构建Socket API;[0022]步骤五,在Socket API基础之上构建HTTP代理、TCP代理、UDP代理;
[0023]步骤六,应用程序使用Socket API或者HTTP、TCP、UDP代理API来进行网络操作,从而使数据进入VPN隧道,实现用户端通过VPN访问内网。
[0024]本发明利用虚拟的用户态协议栈,实现了通过Socket AP1、HTTP代理AP1、TCP代理AP1、UDP代理API,可以随意的控制VPN的启动、配置、停止;本发明不受用户端操作系统VPN API的限制,通过应用程序进程内的数据拦截系统及方法,安全性更高。软件开发人员无需关心虚拟协议栈如何实现,无需直接和虚拟协议栈交互,只需要和TCP、UDP、HTTP代理交互,编程简单方便。本发明不仅适用于所有iOS和Android、Windows Phone操作系统,同样也适用于Windows和Mac、Linux等桌面系统。
【专利附图】

【附图说明】
[0025]图1是本发明系统结构示意图;
[0026]图2是本发明系统中HTTP代理模块结构示意图;
[0027]图3是本发明使用HTTP代理时收发数据的序列图;
[0028]图4是本发明使用TCP代理时收发数据的序列图;
[0029]图5是本发明使用UDP代理时收发数据的序列图。
【具体实施方式】
[0030]在以下的叙述中,为了使读者更好地理解本申请而提出了许多技术细节。但是,本领域的普通技术人员可以理解,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请各权利要求所要求保护的技术方案。
[0031]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的实施方式作进一步地详细描述。
[0032]如图1所示,本发明的一种用户端通过VPN访问内网的系统,包括用户端应用程序进程装置100、部署在互联网的VPN服务器200和互联网300,其中用户端应用程序进程装置中包括用户态协议栈处理线程单元120和与之相匹配的应用线程单元110。
[0033]所述的用户态协议栈处理线程单元是由VPN隧道处理模块121及虚拟网卡处理模块122与一组虚拟用户态协议栈处理模块相互连通后构成。
[0034]所述的VPN隧道处理模块用于与部署在互联网的VPN服务器交互、接收和发送数据,同时与应用线程单元相互连通。
[0035]所述的一组虚拟用户态协议栈处理模块通常包括IGMP协议处理模块123、IP协议处理模块124、ICMP协议处理模块125、UDP协议处理模块126、TCP协议处理模块127和DNS协议处理模块128等。
[0036]所述的虚拟网卡处理模块负责创建、删除、维护虚拟网卡,发送数据给上层IP协议处理模块,并转发从IP协议处理模块发来的数据到VPN隧道处理模块,所述虚拟网卡处理模块对外的表现和一个真实网卡相同,此状态下真实的物理网卡可以和这个虚拟网卡建立连接并传输数据。
[0037]进一步地,所述的IP协议处理模块接收从虚拟网卡发来的数据,并根据数据的协议类型对应地转发给ICMP、IGMP, TCP、UDP协议处理模块。[0038]进一步地,所述的ICMP、IGMP、TCP、UDP、DNS协议处理模块分别对各自接收的数据进行处理,其中,DNS协议是构建在UDP协议之上的。
[0039]所述的应用线程单元是由应用程序代码模块111通过虚拟Socket API模块115与上述用户态协议栈处理线程单元中的VPN隧道处理模块交互连通构成。
[0040]所述的应用线程单元还可由应用程序代码模块连接系统协议代理API模块、并通过虚拟Socket API模块与上述用户态协议栈处理线程单元中的VPN隧道处理模块交互连通构成,其中系统协议代理API模块可以包括TCP代理API模块114,UDP代理API模块113以及HTTP代理API模块112等。
[0041]进一步地,所述的应用线程单元中系统协议HTTP代理API模块可由IP地址模块1121、真实Socket管理模块1122、虚拟Socket管理模块1123顺序连通后连接虚拟SocketAPI模块构成。
[0042]应用程序使用HTTP代理时的序列图如图3所示,用户端浏览器发送HTTP请求,HTTP代理模块在IP地址127.0.0.1:8080进行监听,接收应用程序发送来的请求。HTTP代理模块收到请求后,得到与该请求对应的真实Socket,接着创建一个虚拟的Socket, HTTP代理API模块用虚拟的Socket通过虚拟Socket API发送请求给虚拟用户态协议栈处理模块,用户态协议栈处理模块处理后把数据发给VPN隧道处理模块。当VPN隧道处理模块接收数据后顺序反馈给虚拟用户态协议栈、虚拟Socket AP1、HTTP代理模块及用户端浏览器,此时浏览器显示所请求的页面,完成一次数据交互。从序列图中可以看出,用户端浏览器可以不用关心虚拟用户态协议栈的实现,只需要与HTTP代理交互。
[0043]应用程序使用TCP代理时的序列图如图4所示,应用程序使用TCP代理时,TCP代理此时创建一个虚拟的Socket和真实的Socket并关联起来,应用程序接触到的是真实Socket。TCP代理自动把数据从虚拟Socket转发到真实Socket。
[0044]应用程序使用UDP代理收发数据的序列图如图5所示,UDP代理的处理逻辑与TCP代理相同。
[0045]上述支持HTTP代理的应用程序可以直接把HTTP代理服务器设置为VPN的HTTP代理服务器即可,这种方式最简单。不支持HTTP代理的应用程序,根据应用程序使用的协议类型,选择使用TCP代理服务器或者UDP代理服务器。如果需要对Socket操作进行更精细的控制,也可以使用虚拟Socket API开发应用程序。
[0046]本发明的一种用户端通过VPN访问内网的方法,包括以下步骤:
[0047]步骤一,用户端与部署在互联网的VPN服务器联络,在用户端建立VPN隧道;
[0048]步骤二,用户端在VPN隧道基础之上构建一组虚拟用户态协议栈;
[0049]步骤三,通过虚拟用户态协议栈创建至少一个虚拟网卡,并分配相应数量的虚拟IP给虚拟网卡;
[0050]步骤四,在虚拟用户态协议栈基础之上构建Socket API;
[0051]步骤五,在Socket API基础之上构建HTTP代理、TCP代理、UDP代理;
[0052]步骤六,应用程序使用Socket API或者HTTP、TCP、UDP代理API来进行网络操作,从而使数据进入VPN隧道,实现用户端通过VPN访问内网。
[0053]本发明所述的内网在多数情况下是指企事业单位等的内部网络,也可以是互联网。本发明系统及方法可用于VPN浏览器、网络游戏系统、email系统、客户关系管理(Customer relationship management或简称CRM)系统、证券系统等各种需要用VPN保证安全的系统的研制与开发。
[0054]需要说明的是,本发明各设备实施方式中提到的各单元都是逻辑单元,在物理上,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现,这些逻辑单元本身的物理实现方式并不是最重要的,这些逻辑单元所实现的功能的组合是才解决本发明所提出的技术问题的关键。此外,为了突出本发明的创新部分,本发明上述各设备实施方式并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,这并不表明上述设备实施方式并不存在其它的单元。
[0055]虽然通过参照本发明的某些优选实施方式,已经对本发明进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
【权利要求】
1.一种用户端通过VPN访问内网的系统,包括用户端应用程序进程装置、部署在互联网的VPN服务器和互联网,其特征是用户端应用程序进程装置中包括用户态协议栈处理线程单元和与之相匹配的应用线程单元。
2.根据权利要求1所述的一种用户端通过VPN访问内网的系统,其特征是用户态协议栈处理线程单元是由VPN隧道处理模块及虚拟网卡处理模块与一组虚拟用户态协议栈处理模块相互连通后构成; 所述的VPN隧道处理模块用于与内网的VPN服务器交互、接收和发送数据,同时与应用线程单元相互连通; 所述的一组虚拟用户态协议栈处理模块包括IGMP协议处理模块、IP协议处理模块、ICMP协议处理模块、UDP协议处理模块、TCP协议处理模块和DNS协议处理模块; 所述的虚拟网卡处理模块负责创建、删除、维护虚拟网卡,发送数据给上层IP协议处理模块,并转发从IP协议处理模块发来的数据到VPN隧道处理模块。
3.根据权利要求2所述的一种用户端通过VPN访问内网的系统,其特征是所述的IP协议处理模块接收从虚拟网卡发来的数据,并根据数据的协议类型对应地转发给ICMP、IGMP、TCP、UDP协议处理模块。
4.根据权利要求3所述的一种用户端通过VPN访问内网的系统,其特征是上述的ICMP, IGMP、TCP、UDP、DNS协议处理模块分别对各自接收的数据进行处理,其中,DNS协议是构建在UDP协议之上的。
5.根据权利要求1所述的一种用户端通过VPN访问内网的系统,其特征是所述的应用线程单元是由应用程序代码模块通过虚拟Socket API模块与VPN隧道处理模块交互连通构成。
6.根据权利要求1所述的一种用户端通过VPN访问内网的系统,其特征是所述的应用线程单元是由应用程序代码模块连接系统协议代理API模块、并通过虚拟Socket API模块与VPN隧道处理模块交互连通构成,其中系统协议代理API模块包括TCP代理API模块、UDP代理API模块以及HTTP代理API模块。
7.根据权利要求6所述的一种用户端通过VPN访问内网的系统,其特征是所述的应用线程单元中系统协议的HTTP代理API模块由IP地址模块、真实Socket管理模块、虚拟Socket管理模块顺序连通后连接虚拟SocketAPI模块构成。
8.一种用户端通过VPN访问内网的方法,其特征是包括以下步骤: 步骤一,用户端与部署在互联网的VPN服务器联络,在用户端建立VPN隧道; 步骤二,用户端在VPN隧道基础之上构建一组虚拟用户态协议栈; 步骤三,通过虚拟用户态协议栈创建至少一个虚拟网卡,并分配相应数量的虚拟IP给虚拟网卡; 步骤四,在虚拟用户态协议栈基础之上构建Socket API; 步骤五,在Socket API基础之上构建HTTP代理、TCP代理、UDP代理; 步骤六,应用程序使用Socket API或者HTTP、TCP、UDP代理API来进行网络操作,从而使数据进入VPN隧道,实现用户端通过VPN访问内网。
【文档编号】H04L12/46GK103840994SQ201210485032
【公开日】2014年6月4日 申请日期:2012年11月23日 优先权日:2012年11月23日
【发明者】刘志永, 吉岭 申请人:华耀(中国)科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1