CN105337831A - 虚拟专用网络的实现方法及客户端设备 - Google Patents

虚拟专用网络的实现方法及客户端设备 Download PDF

Info

Publication number
CN105337831A
CN105337831A CN201410388867.9A CN201410388867A CN105337831A CN 105337831 A CN105337831 A CN 105337831A CN 201410388867 A CN201410388867 A CN 201410388867A CN 105337831 A CN105337831 A CN 105337831A
Authority
CN
China
Prior art keywords
message
ndis
client
address
sslvpn
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201410388867.9A
Other languages
English (en)
Other versions
CN105337831B (zh
Inventor
郑晓峰
祝颖华
戈挺克
赵飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201410388867.9A priority Critical patent/CN105337831B/zh
Priority to PCT/CN2015/072246 priority patent/WO2016019717A1/zh
Priority to EP15829052.8A priority patent/EP3163833B1/en
Publication of CN105337831A publication Critical patent/CN105337831A/zh
Priority to US15/426,386 priority patent/US10375025B2/en
Application granted granted Critical
Publication of CN105337831B publication Critical patent/CN105337831B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0272Virtual private networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/029Firewall traversal, e.g. tunnelling or, creating pinholes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/166Implementing security features at a particular protocol layer at the transport layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明实施例提供一种虚拟专用网络的实现方法及客户端设备。本发明虚拟专用网络的实现方法,包括:NDIS中间层驱动捕获应用程序向内网服务器发送的报文,根据报文对应的进程标识号PID,判断是否允许报文对应的进程使用SSL?VPN;若允许使用,则NDIS中间层驱动建立新报文,将新报文的目的地址设置为客户端设备的本机地址,将新报文的目的端口号设置为客户端接收报文的端口号,将原报文的源IP地址修改为虚拟IP地址,并将原报文作为新报文的载荷,将新报文提交给NDIS网卡驱动;NDIS网卡驱动将新报文发送到客户端,由客户端向内网服务器发送新报文。本发明实施例实现了基于进程控制的虚拟专用网络,客户端的启动速度快。

Description

虚拟专用网络的实现方法及客户端设备
技术领域
本发明实施例涉及计算机技术,尤其涉及一种虚拟专用网络的实现方法及客户端设备。
背景技术
虚拟专用网络(VirtualPrivateNetwork,简称VPN)是一条穿过公用网络的安全、稳定的隧道。通过对网络数据的封包和加密传输,在一个公用网络建立一个临时的、安全的连接,从而实现在公网上传输私有数据、达到私有网络的安全级别。常用的两种VPN技术分别是基于传统网络安全协议的VPN技术和基于安全套接层(SecuritySocketLayer,简称SSL)VPN技术,前者主要作用于网络层,而后者主要作用于应用层。SSLVPN是以SSL为基础的VPN技术,它利用SSL协议提供的基于证书的身份认证、数据加密和消息完整性验证机制,为用户远程访问公司内部网络(以下简称内网)提供了安全保证。SSLVPN有多种使用方式,其中3层SSLVPN使用的最为广泛。网络驱动包括传输层驱动接口(TransportDriverInterface,简称TDI)驱动和网络驱动接口规范(NetworkDriverInterfaceSpecification,简称NDIS)驱动,其中,NDIS又可分为协议驱动、中间层驱动和网卡驱动。3层SSLVPN需要安装客户端软件。在启动SSLVPN客户端(以下简称客户端)登录SSLVPN网关(以下简称网关)之后,客户端与网关建立一条SSL隧道,并从网关申请一个虚拟IP地址,客户端对用户的操作系统进行配置,使得系统上的应用程序可以使用该虚拟IP地址访问内网服务器。客户端截获使用虚拟IP地址的报文,将截获的报文通过之前建立的SSL隧道转发到网关,由网关将这些报文转发给内网服务器。
现有技术中,在安装客户端的时候在用户操作系统中新建一张虚拟网卡,平时该虚拟网卡处于禁用状态。在启动客户端并登录网关时,客户端从网关申请到一个虚拟IP地址,客户端启动该虚拟网卡并将申请到的虚拟IP地址设置为该虚拟网卡的地址。当有进程通过该虚拟网卡访问内网服务器时,应用程序发送的数据经过驱动栈向下发送数据,最终发送到NDIS虚拟网卡驱动时,虚拟网卡接收上层驱动下发的报文,将报文提交给客户端,客户端通过登录时建立的SSL隧道将报文发送到网关,网关再将报文转发到内网服务器上。
现有技术的问题是,系统中的所有的进程都可以使用虚拟网卡,都可以访问内网服务器,如果需要限制某些进程的访问则没有办法实现,且启动客户端时由于需要同时启动虚拟网卡,客户端启动速度慢。
发明内容
本发明实施例提供一种虚拟专用网络的实现方法及客户端设备,以解决现有技术中不能实现对进程访问的控制,且启动客户端时由于需要同时启动虚拟网卡,客户端启动速度慢的问题。
第一方面,本发明实施例提供一种虚拟专用网络的实现方法,所述方法应用于基于安全套接层协议的虚拟专用网络SSLVPN中,所述SSLVPN包括:客户端设备、网关和所述SSLVPN的内网服务器,所述客户端设备通过网关与所述内网服务器通信,所述客户端设备包括传输层驱动接口TDI驱动、网络驱动接口规范NDIS协议驱动、网络驱动接口规范NDIS中间层驱动、网络驱动接口规范NDIS网卡驱动和客户端,所述方法包括:
所述NDIS中间层驱动捕获应用程序向所述内网服务器发送的报文,根据所述报文对应的进程标识号PID,判断是否允许所述报文对应的进程使用所述SSLVPN;
若允许使用,则所述NDIS中间层驱动建立新报文,将所述新报文的目的地址设置为所述应用程序所在的客户端设备的本机地址,将所述新报文的目的端口号设置为客户端接收所述报文的端口号,将原所述报文的源网络互连协议IP地址修改为虚拟网络互连协议IP地址,并将原所述报文作为所述新报文的载荷,将所述新报文提交给NDIS网卡驱动;所述虚拟网络互连协议IP地址为所述客户端与所述网关建立安全套接层协议SSL隧道后,向所述网关获取到的虚拟网络互连协议IP地址;
所述NDIS网卡驱动将所述新报文发送到所述客户端,由所述客户端向所述内网服务器发送所述新报文。
结合第一方面,在第一方面的第一种实现方式中,所述根据所述报文对应的进程标识号PID,判断是否允许所述报文对应的进程使用所述SSLVPN,包括:
获取所述报文的协议类型和端口号,根据协议类型、端口号和进程标识号PID的映射关系确定所述报文对应的PID,根据所述PID判断是否允许所述PID对应的进程使用所述SSLVPN。
结合第一方面、或第一方面的第一种实现方式,在第一方面的第二种实现方式中,所述NDIS中间层驱动捕获应用程序向所述内网服务器发送的报文之前,还包括:
所述TDI驱动获取发送报文的报文流的信息,所述信息包括协议类型、端口号和进程标识号PID,将所述信息通知所述NDIS中间层驱动,所述NDIS中间层驱动存储所述信息的映射关系。
结合第一方面、或第一方面的第一、第二种实现方式,在第一方面的第三种实现方式中,所述根据所述报文对应的进程标识号PID,判断是否允许所述报文对应的进程使用所述SSLVPN之前,还包括:
所述客户端在所述NDIS中间层驱动中设置是否允许所述报文对应的进程使用所述SSLVPN的进程标识号PID。
结合第一方面、或第一方面的第一至第三任一种实现方式,在第一方面的第四种实现方式中,还包括:
所述客户端接收到所述网关转发的所述内网服务器的报文,将所述报文的目的地址改为所述客户端所在客户端设备的本机地址,通过原始套接字RawSocket接口发送所述报文到NDIS协议驱动,由所述NDIS协议驱动转发到对应的应用程序。
第二方面,本发明实施例提供一种客户端设备,应用于基于安全套接层协议的虚拟专用网络SSLVPN中,所述SSLVPN包括:客户端设备、网关和所述SSLVPN的内网服务器,所述客户端设备通过网关与所述内网服务器通信,所述客户端设备包括传输层驱动接口TDI驱动、网络驱动接口规范NDIS协议驱动、网络驱动接口规范NDIS中间层驱动、网络驱动接口规范NDIS网卡驱动和客户端,所述NDIS中间层驱动,用于捕获应用程序向所述内网服务器发送的报文,根据所述报文对应的进程标识号PID,判断是否允许所述报文对应的进程使用所述SSLVPN;
若允许使用,则建立新报文,将所述新报文的目的地址设置为所述应用程序所在的客户端设备的本机地址,将所述新报文的目的端口号设置为客户端接收所述报文的端口号,将原所述报文的源网络互连协议IP地址修改为虚拟网络互连协议IP地址,并将原所述报文作为所述新报文的载荷,将所述新报文提交给NDIS网卡驱动;所述虚拟网络互连协议IP地址为所述客户端与所述网关建立安全套接层协议SSL隧道后,向所述网关获取到的虚拟网络互连协议IP地址;
所述NDIS网卡驱动,用于将所述新报文发送到所述客户端,由所述客户端向所述内网服务器发送所述新报文。
结合第二方面,在第二方面的第一种实现方式中,所述NDIS中间层驱动,具体用于:
获取所述报文的协议类型和端口号,根据协议类型、端口号和进程标识号PID的映射关系确定所述报文对应的PID,根据所述PID判断是否允许所述PID对应的进程使用所述SSLVPN。
结合第二方面、或第二方面的第一种实现方式,在第二方面的第二种实现方式中,所述TDI驱动,用于获取发送报文的报文流的信息,所述信息包括协议类型、端口号和进程标识号PID,将所述信息通知所述NDIS中间层驱动,所述NDIS中间层驱动存储所述信息的映射关系。
结合第二方面、或第二方面的第一、第二种实现方式,在第二方面的第三种实现方式中,所述客户端,用于在所述NDIS中间层驱动中设置是否允许所述报文对应的进程使用所述SSLVPN的进程标识号PID。
结合第二方面、或第二方面的第一至第三任一种实现方式,在第二方面的第四种实现方式中,所述客户端,还用于:
接收到所述网关转发的所述内网服务器的报文,将所述报文的目的地址改为所述客户端所在客户端设备的本机地址,通过原始套接字RawSocket接口发送所述报文到NDIS协议驱动,由所述NDIS协议驱动转发到对应的应用程序。
本发明实施例虚拟专用网络的实现方法及客户端设备,通过NDIS中间层驱动捕获应用程序向所述内网服务器发送的报文,根据所述报文对应的进程标识号PID,判断是否允许所述报文对应的进程使用所述SSLVPN;若允许使用,则所述NDIS中间层驱动建立新报文,将所述新报文的目的地址设置为所述应用程序所在的客户端设备的本机地址,将所述新报文的目的端口号设置为客户端接收所述报文的端口号,将原所述报文的源IP地址修改为虚拟IP地址,并将原所述报文作为所述新报文的载荷,将所述新报文提交给NDIS网卡驱动;所述虚拟IP地址为所述客户端与所述网关建立安全套接层协议SSL隧道后,向所述网关获取到的虚拟IP地址;所述NDIS网卡驱动将所述新报文发送到所述客户端,由所述客户端向所述内网服务器发送所述新报文,实现了根据进程的PID判断是否允许该进程使用所述SSLVPN,实现了基于进程控制的虚拟专用网络,而且由于不再使用虚拟网卡,客户端的启动速度明显加快。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明虚拟专用网络的实现方法实施例一的流程图;
图2为本发明方法实施例一的网络驱动的结构图;
图3为本发明方法实施例一的网络架构图;
图4为本发明客户端设备实施例一的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明虚拟专用网络的实现方法实施例一的流程图。图2为本发明方法实施例一的网络驱动的结构图。图3为本发明方法实施例一的网络架构图。本实施例的执行主体可以为客户端设备,如图1所示,本实施例的方法可以应用于基于安全套接层协议的虚拟专用网络SSLVPN中,所述SSLVPN包括:客户端设备、网关和所述SSLVPN的内网服务器,所述客户端设备通过网关与所述内网服务器通信,所述客户端设备包括传输层驱动接口TDI驱动、网络驱动接口规范NDIS协议驱动、网络驱动接口规范NDIS中间层驱动、网络驱动接口规范NDIS网卡驱动和客户端,所述方法包括:
步骤101、NDIS中间层驱动捕获应用程序向内网服务器发送的报文,根据报文对应的进程标识号PID,判断是否允许报文对应的进程使用SSLVPN。
具体地,图2中所示为Windows操作系统网络驱动的层次结构,本发明实施例中报文的捕获是在NDIS中间层驱动完成的。Windows操作系统网络驱动包括传输层驱动接口(TransportDriverInterface,简称TDI)驱动和网络驱动接口规范(NetworkDriverInterfaceSpecification,简称NDIS)驱动,其中,NDIS驱动又可分为NDIS协议驱动、NDIS中间层驱动和NDIS网卡驱动。NDIS协议驱动实现具体的网络协议(如tcpip.sys),NDIS网卡驱动实现对物理网卡的操作,NDIS中间层驱动位于NDIS网卡驱动程序和NDIS协议驱动程序之间,它向上提供小端口(Miniport)函数集,向下提供协议(Protocol)函数集,因此对于上层驱动程序而言,它是小端口驱动程序;对于底层的驱动,它是协议驱动程序。
TDI驱动中可以获取当前通信的进程信息,而NDIS驱动则不能获取当前通信的进程信息。
如图3所示,图3中实线直线箭头表示应用程序向内网服务器发送报文的数据流走向,虚线直线箭头表示内网服务器向应用程序发送报文的数据流走向,客户端设备上的应用程序向内网服务器发送报文,NDIS中间层驱动捕获报文,根据获取到的所述报文对应的进程标识号PID,判断是否允许报文对应的进程使用SSLVPN。
步骤102、若允许使用,则NDIS中间层驱动建立新报文,将新报文的目的地址设置为应用程序所在的客户端设备的本机地址,将新报文的目的端口号设置为客户端接收所述报文的端口号,将原报文的源网络互连协议IP地址修改为虚拟网络互连协议IP地址,并将原报文作为所述新报文的载荷,将新报文提交给NDIS网卡驱动。
其中,所述虚拟网络互连协议IP地址为客户端与网关建立安全套接层协议SSL隧道后,向网关获取到的虚拟网络互连协议IP地址。
具体地,若判断出允许报文对应的进程使用SSLVPN,则由NDIS中间层驱动新建一个新报文,将新报文的目的地址设置为应用程序所在的客户端设备的本机地址,将新报文的目的端口号设置为客户端接收报文的端口号,计算新的校验和,将原报文的源IP地址修改为从网关申请到的虚拟IP地址,并将原报文作为新报文的载荷复制到新报文中,将新报文提交给NDIS网卡驱动。
NDIS中间层驱动需要重新分配一块内存存储新报文,新报文的长度是原报文长度加上一个UDP头和IP头的长度,IP头包括目的地址和校验和,UDP头包括目的端口号和校验和。将原报文作为新报文的载荷复制到新报文中,填充新报文的UDP头和IP头,然后将新报文提交给下一层驱动。这样新报文就将原报文作为内容(包括原报文的载荷和原报文的TCP/UDP头部和原报文的IP头部)发送给客户端,客户端接收到该新报文将其直接转发给网关。
上述虚拟IP地址是客户端启动后,与所述网关建立安全套接层协议SSL隧道,并获取虚拟IP地址。
可选地,所述方法还包括:
若不允许报文对应的进程使用SSLVPN,则将所述报文直接提交给NDIS网卡驱动。
步骤103、NDIS网卡驱动将新报文发送到客户端,由客户端向内网服务器发送新报文。
具体地,由NDIS网卡驱动将新报文发送到客户端,由客户端经网关发送到内网服务器,若不允许报文对应的进程使用SSLVPN则直接将原报文给NDIS网卡驱动。
本实施例,通过NDIS中间层驱动捕获应用程序向所述内网服务器发送的报文,根据所述报文对应的进程标识号PID,判断是否允许所述报文对应的进程使用所述SSLVPN;若允许使用,则所述NDIS中间层驱动建立新报文,将所述新报文的目的地址设置为所述应用程序所在的客户端设备的本机地址,将所述新报文的目的端口号设置为客户端接收所述报文的端口号,将原所述报文的源IP地址修改为虚拟IP地址,并将原所述报文作为所述新报文的载荷,将所述新报文提交给NDIS网卡驱动;所述虚拟IP地址为所述客户端与所述网关建立安全套接层协议SSL隧道后,向所述网关获取到的虚拟IP地址;所述NDIS网卡驱动将所述新报文发送到所述客户端,由所述客户端向所述内网服务器发送所述新报文,实现了根据进程的PID判断是否允许该进程使用所述SSLVPN,实现了基于进程控制的虚拟专用网络,而且由于不再使用虚拟网卡,客户端的启动速度明显加快,提高了用户体验。
下面采用具体的实施例,对图1所示方法实施例的技术方案进行详细说明。
在本发明方法实施例二中,进一步地,所述NDIS中间层驱动建立新报文之前,还包括:
所述客户端启动一个用户数据包协议UDP进行报文的接收,将接收报文的端口号和所述虚拟IP地址通知所述NDIS中间层驱动。
具体地,客户端启动后,首先会向与所述网关建立安全套接层协议SSL隧道,并获取虚拟IP地址,客户端启动一个UDP进行转发报文的接收,通过DeviceIoControl将接收报文的端口号和虚拟IP地址告知NDIS中间层驱动,之后,应用程序会发起与内网服务器建立连接或发送第一个UDP报文。
客户端可以通过DeviceIoControl与NDIS中间层驱动进行通信。
可选地,所述根据报文对应的进程标识号PID,判断是否允许报文对应的进程使用SSLVPN,包括:
获取所述报文的协议类型和端口号,根据协议类型、端口号和进程标识号PID的映射关系确定所述报文对应的PID,根据所述PID判断是否允许所述PID对应的进程使用所述SSLVPN。
可选地,所述NDIS中间层驱动捕获应用程序向内网服务器发送的报文之前,还包括:
TDI驱动获取发送报文的报文流的信息,所述信息包括协议类型、端口号和进程标识号PID,将所述信息通知所述NDIS中间层驱动,所述NDIS中间层驱动存储所述信息的映射关系。
具体来说,本发明实施例中是根据进程的PID判断是否允许该进程使用SSLVPN,是在NDIS中间层驱动完成的。但是,NDIS中间层驱动不具备识别报文是由哪个进程发送的能力,而TDI驱动恰恰具备这样的能力。可以通过在NDIS中间层驱动中维护一个协议类型、端口号和进程标识号PID的映射关系的流表来实现,流表中每一条记录代表一组映射关系,NDIS中间层驱动将根据该流表的内容判断是否允许捕获的报文对应的进程使用SSLVPN。TDI驱动负责捕获创建或删除发送报文的报文流的动作并将该报文流的信息(建立该报文流的PID、协议类型和端口号)发送给NDIS中间层驱动,如图3所示的实线曲线箭头表示TDI驱动到NDIS中间层驱动控制流的走向,NDIS中间层驱动维护流表,根据TDI驱动的通知对流表进行添加或删除。
表1
PID 协议类型 端口号
765 UDP 5693
865 TCP 8790
259 TCP 6666
543 UDP 34555
表1中的每一条记录都由创建该报文流的PID、协议类型和端口号组成。当应用程序与内网服务器新建一条TCP连接(或者发送第一个UDP报文)的时候,TDI驱动捕获到该动作,获取当前发起报文流的PID、协议类型和端口号,并使用DeviceIoControl通知NDIS中间层驱动,NDIS中间层驱动根据接收到的内容向表1中添加一条记录。NDIS中间层驱动在根据报文的协议类型和端口号确定所述报文对应的进程的PID时候将使用该表进行判断。
当有报文经过NDIS中间层驱动时,NDIS中间层驱动从报文中获取该报文的协议类型和端口号,根据协议类型和端口号在表1中查找发送该报文的进程的PID,然后还可以从允许使用SSLVPN进程PID表中查找是否存在该PID,如果存在,则允许报文对应的进程使用SSLVPN。
可选地,所述根据报文对应的进程标识号PID,判断是否允许报文对应的进程使用SSLVPN之前,还包括:
所述客户端在所述NDIS中间层驱动中设置是否允许所述报文对应的进程使用所述SSLVPN的进程。
具体地,NDIS中间层驱动还可以维护一个允许使用SSLVPN进程的PID表,可以记录允许使用SSLVPN进程的进程PID,NDIS中间层驱动通过DeviceIoControl提供接口给SSLVPN客户端使用,用户可以通过客户端实现对NDIS中间层驱动中维护的表进行添加和删除允许使用SSLVPN进程的PID。NDIS中间层驱动在判断是否允许报文对应的进程使用SSLVPN时使用该表,如果发现发送报文的进程的PID在这个表中,就表示允许报文对应的进程使用SSLVPN。
通过对允许使用SSLVPN进程的PID表的控制,可以实现只允许在安全沙盒中运行的应用程序访问内网服务器。
通过对允许使用SSLVPN进程的PID表扩展,可以做到多个客户端对应一张允许使用SSLVPN进程的PID表,可以实现多个客户端同时使用允许使用SSLVPN进程的PID表。
本发明实施例通过报文捕获位置的改变以及TDI驱动的配合,将使用SSLVPN的控制提高到了进程级别的控制粒度。同时,不再需要在客户端设备的操作系统中使用虚拟网卡,客户端的启动速度也明显变快,提高产品的用户体验。
可选地,本实施例的方法,还包括:
当所述应用程序关闭与内网服务器建立的报文流时,TDI驱动程序获取当前关闭报文流的协议类型、端口号和进程标识号PID,并通知NDIS中间层驱动,所述NDIS中间层驱动删除存储的所述PID、协议类型、端口号和进程标识号PID的映射关系。
例如当应用程序关闭一条TCP连接的时候,TDI驱动程序捕获到该动作,获取当前关闭连接的进程的PID、协议类型和端口号,并使用DeviceIoControl通知NDIS中间层驱动,NDIS中间层驱动在表1中查找相应的记录,并将查找到的记录从表1中删除。
可选地,如图3所示,所述NDIS网卡驱动将新报文发送到所述客户端,由客户端发送到内网服务器,包括:
所述客户端将所述新报文通过所述SSL隧道发送到网关,由所述网关转发到所述内网服务器。
可选地,所述方法,还包括:
所述客户端接收到所述网关转发的所述内网服务器的报文,将所述报文的目的地址改为所述客户端所在客户端设备的本机地址,通过原始套接字RawSocket接口发送所述报文到NDIS协议驱动,由所述NDIS协议驱动转发到对应的应用程序。
具体地,如图3所示,客户端从SSL隧道中接收到网关转发的内网服务器发给应用程序的报文时,对所述报文的校验和进行校验,若校验成功,则客户端将该报文的目的地址改为本机地址,并重新计算校验和,再通过RawSocket接口将报文通过NDIS协议驱动直接发给客户端设备的应用程序,NDIS协议驱动会根据报文的内容提交给合适的应用程序。
本实施例与方法实施例一中的实现原理和技术效果类似,此处不再赘述。
图4为本发明客户端设备实施例一的结构示意图,如图4所示,本实施例的客户端设备40,应用于基于安全套接层协议的虚拟专用网络SSLVPN中,所述SSLVPN包括:客户端设备40、网关和所述SSLVPN的内网服务器,所述客户端设备通过网关与所述内网服务器通信,所述客户端设备40包括TDI驱动401、NDIS协议驱动402、NDIS中间层驱动403、NDIS网卡驱动404和客户端405;
其中,所述NDIS中间层驱动403,用于捕获应用程序向所述内网服务器发送的报文,根据所述报文对应的进程标识号PID,判断是否允许所述报文对应的进程使用所述SSLVPN;若允许使用,则建立新报文,将所述新报文的目的地址设置为所述应用程序所在的客户端设备的本机地址,将所述新报文的目的端口号设置为客户端405接收所述报文的端口号,将原所述报文的源网络互连协议IP地址修改为虚拟网络互连协议IP地址,并将原所述报文作为所述新报文的载荷,将所述新报文提交给NDIS网卡驱动404;所述虚拟网络互连协议IP地址为所述客户端405与所述网关建立安全套接层协议SSL隧道后,向所述网关获取到的虚拟网络互连协议IP地址;
所述NDIS网卡驱动404,用于将所述新报文发送到所述客户端405,由所述客户端405向所述内网服务器发送所述新报文。
可选地,所述NDIS中间层驱动403,具体用于:
获取所述报文的协议类型和端口号,根据协议类型、端口号和进程标识号PID的映射关系确定所述报文对应的PID,根据所述PID判断是否允许所述PID对应的进程使用所述SSLVPN。
可选地,TDI驱动401,用于获取发送报文的报文流的信息,所述信息包括协议类型、端口号和进程标识号PID,将所述信息通知所述NDIS中间层驱动403,所述NDIS中间层驱动403存储所述信息的映射关系。
可选地,所述客户端405,用于在所述NDIS中间层驱动403中设置是否允许所述报文对应的进程使用所述SSLVPN的进程标识号PID。
可选地,所述客户端405,还用于:
接收到所述网关转发的所述内网服务器的报文,将所述报文的目的地址改为所述客户端405所在客户端设备的本机地址,通过原始套接字RawSocket接口发送所述报文到NDIS协议驱动402,由所述NDIS协议驱动402转发到对应的应用程序。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元或模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (10)

1.一种虚拟专用网络的实现方法,所述方法应用于基于安全套接层协议的虚拟专用网络SSLVPN中,所述SSLVPN包括:客户端设备、网关和所述SSLVPN的内网服务器,所述客户端设备通过网关与所述内网服务器通信,所述客户端设备包括传输层驱动接口TDI驱动、网络驱动接口规范NDIS协议驱动、网络驱动接口规范NDIS中间层驱动、网络驱动接口规范NDIS网卡驱动和客户端,其特征在于,所述方法包括:
所述NDIS中间层驱动捕获应用程序向所述内网服务器发送的报文,根据所述报文对应的进程标识号PID,判断是否允许所述报文对应的进程使用所述SSLVPN;
若允许使用,则所述NDIS中间层驱动建立新报文,将所述新报文的目的地址设置为所述应用程序所在的客户端设备的本机地址,将所述新报文的目的端口号设置为客户端接收所述报文的端口号,将原所述报文的源网络互连协议IP地址修改为虚拟网络互连协议IP地址,并将原所述报文作为所述新报文的载荷,将所述新报文提交给NDIS网卡驱动;所述虚拟网络互连协议IP地址为所述客户端与所述网关建立安全套接层协议SSL隧道后,向所述网关获取到的虚拟网络互连协议IP地址;
所述NDIS网卡驱动将所述新报文发送到所述客户端,由所述客户端向所述内网服务器发送所述新报文。
2.根据权利要求1所述的方法,其特征在于,所述根据所述报文对应的进程标识号PID,判断是否允许所述报文对应的进程使用所述SSLVPN,包括:
获取所述报文的协议类型和端口号,根据协议类型、端口号和进程标识号PID的映射关系确定所述报文对应的PID,根据所述PID判断是否允许所述PID对应的进程使用所述SSLVPN。
3.根据权利要求1或2所述的方法,其特征在于,所述NDIS中间层驱动捕获应用程序向所述内网服务器发送的报文之前,还包括:
所述TDI驱动获取发送报文的报文流的信息,所述信息包括协议类型、端口号和进程标识号PID,将所述信息通知所述NDIS中间层驱动,所述NDIS中间层驱动存储所述信息的映射关系。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述根据所述报文对应的进程标识号PID,判断是否允许所述报文对应的进程使用所述SSLVPN之前,还包括:
所述客户端在所述NDIS中间层驱动中设置是否允许所述报文对应的进程使用所述SSLVPN的进程标识号PID。
5.根据权利要求1-4任一项所述的方法,其特征在于,还包括:
所述客户端接收到所述网关转发的所述内网服务器的报文,将所述报文的目的地址改为所述客户端所在客户端设备的本机地址,通过原始套接字RawSocket接口发送所述报文到NDIS协议驱动,由所述NDIS协议驱动转发到对应的应用程序。
6.一种客户端设备,应用于基于安全套接层协议的虚拟专用网络SSLVPN中,所述SSLVPN包括:客户端设备、网关和所述SSLVPN的内网服务器,所述客户端设备通过网关与所述内网服务器通信,所述客户端设备包括传输层驱动接口TDI驱动、网络驱动接口规范NDIS协议驱动、网络驱动接口规范NDIS中间层驱动、网络驱动接口规范NDIS网卡驱动和客户端,其特征在于,
所述NDIS中间层驱动,用于捕获应用程序向所述内网服务器发送的报文,根据所述报文对应的进程标识号PID,判断是否允许所述报文对应的进程使用所述SSLVPN;
若允许使用,则建立新报文,将所述新报文的目的地址设置为所述应用程序所在的客户端设备的本机地址,将所述新报文的目的端口号设置为客户端接收所述报文的端口号,将原所述报文的源网络互连协议IP地址修改为虚拟网络互连协议IP地址,并将原所述报文作为所述新报文的载荷,将所述新报文提交给NDIS网卡驱动;所述虚拟网络互连协议IP地址为所述客户端与所述网关建立安全套接层协议SSL隧道后,向所述网关获取到的虚拟网络互连协议IP地址;
所述NDIS网卡驱动,用于将所述新报文发送到所述客户端,由所述客户端向所述内网服务器发送所述新报文。
7.根据权利要求6所述的设备,其特征在于,所述NDIS中间层驱动,具体用于:
获取所述报文的协议类型和端口号,根据协议类型、端口号和进程标识号PID的映射关系确定所述报文对应的PID,根据所述PID判断是否允许所述PID对应的进程使用所述SSLVPN。
8.根据权利要求6或7所述的设备,其特征在于,所述TDI驱动,用于获取发送报文的报文流的信息,所述信息包括协议类型、端口号和进程标识号PID,将所述信息通知所述NDIS中间层驱动,所述NDIS中间层驱动存储所述信息的映射关系。
9.根据权利要求6-8任一项所述的设备,其特征在于,所述客户端,用于在所述NDIS中间层驱动中设置是否允许所述报文对应的进程使用所述SSLVPN的进程标识号PID。
10.根据权利要求6-9任一项所述的设备,其特征在于,所述客户端,还用于:
接收到所述网关转发的所述内网服务器的报文,将所述报文的目的地址改为所述客户端所在客户端设备的本机地址,通过原始套接字RawSocket接口发送所述报文到NDIS协议驱动,由所述NDIS协议驱动转发到对应的应用程序。
CN201410388867.9A 2014-08-08 2014-08-08 虚拟专用网络的实现方法及客户端设备 Active CN105337831B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201410388867.9A CN105337831B (zh) 2014-08-08 2014-08-08 虚拟专用网络的实现方法及客户端设备
PCT/CN2015/072246 WO2016019717A1 (zh) 2014-08-08 2015-02-04 虚拟专用网络的实现方法及客户端设备
EP15829052.8A EP3163833B1 (en) 2014-08-08 2015-02-04 Virtual private network realization method and client device
US15/426,386 US10375025B2 (en) 2014-08-08 2017-02-07 Virtual private network implementation method and client device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410388867.9A CN105337831B (zh) 2014-08-08 2014-08-08 虚拟专用网络的实现方法及客户端设备

Publications (2)

Publication Number Publication Date
CN105337831A true CN105337831A (zh) 2016-02-17
CN105337831B CN105337831B (zh) 2018-10-09

Family

ID=55263097

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410388867.9A Active CN105337831B (zh) 2014-08-08 2014-08-08 虚拟专用网络的实现方法及客户端设备

Country Status (4)

Country Link
US (1) US10375025B2 (zh)
EP (1) EP3163833B1 (zh)
CN (1) CN105337831B (zh)
WO (1) WO2016019717A1 (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105656943A (zh) * 2016-03-15 2016-06-08 上海缔安科技股份有限公司 一种应用数据拦截系统及方法
CN106254205A (zh) * 2016-10-25 2016-12-21 杭州华三通信技术有限公司 一种报文传输方法和装置
CN108366074A (zh) * 2018-03-08 2018-08-03 北京明朝万达科技股份有限公司 一种网络数据包防劫持方法及装置
CN108718268A (zh) * 2017-04-07 2018-10-30 格尔软件股份有限公司 一种提高vpn服务端并发处理性能的方法
CN109460642A (zh) * 2018-11-13 2019-03-12 北京天融信网络安全技术有限公司 应用程序网络访问感知的方法、装置及设备
CN109617897A (zh) * 2018-12-28 2019-04-12 北京指掌易科技有限公司 一种对公共移动应用提供安全传输的方法
CN114268542A (zh) * 2021-12-21 2022-04-01 奇安信科技集团股份有限公司 网卡信息修改方法、装置、存储介质及计算机设备
CN114401120A (zh) * 2021-12-27 2022-04-26 中国电信股份有限公司 一种对象溯源的方法及相关装置

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10892912B2 (en) * 2015-12-23 2021-01-12 EMC IP Holding Company LLC Optimization of network data transfers over a wide area network
US11258680B2 (en) * 2018-11-15 2022-02-22 Citrix Systems, Inc. Real-time scalable virtual session and network analytics
US11627091B2 (en) 2019-05-20 2023-04-11 Citrix Systems Inc. Systems and methods for managing streams of packets via intermediary devices

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101072108A (zh) * 2007-07-17 2007-11-14 杭州华三通信技术有限公司 一种ssl vpn客户端安全检查方法、系统及其装置
CN102065125A (zh) * 2010-11-18 2011-05-18 广州致远电子有限公司 一种嵌入式ssl vpn的实现方法
CN102065059A (zh) * 2009-11-16 2011-05-18 华为技术有限公司 安全访问控制方法、客户端及系统
US20130297814A1 (en) * 2012-05-05 2013-11-07 Citrix Systems, Inc. Systems and methods for a spdy to http gateway

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8332464B2 (en) * 2002-12-13 2012-12-11 Anxebusiness Corp. System and method for remote network access
KR20070037650A (ko) * 2004-07-23 2007-04-05 사이트릭스 시스템스, 인크. 종단에서 게이트웨이로 패킷을 라우팅하기 위한 방법 및시스템
US8893260B2 (en) * 2008-12-17 2014-11-18 Rockstar Consortium Us Lp Secure remote access public communication environment
CN101778045B (zh) * 2010-01-27 2012-07-04 成都市华为赛门铁克科技有限公司 报文传输方法、装置及网络系统
CN102377629B (zh) * 2010-08-20 2014-08-20 华为技术有限公司 终端穿越私网与ims核心网中服务器通信的方法、装置及网络系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101072108A (zh) * 2007-07-17 2007-11-14 杭州华三通信技术有限公司 一种ssl vpn客户端安全检查方法、系统及其装置
CN102065059A (zh) * 2009-11-16 2011-05-18 华为技术有限公司 安全访问控制方法、客户端及系统
CN102065125A (zh) * 2010-11-18 2011-05-18 广州致远电子有限公司 一种嵌入式ssl vpn的实现方法
US20130297814A1 (en) * 2012-05-05 2013-11-07 Citrix Systems, Inc. Systems and methods for a spdy to http gateway

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
刘伟等: "Windows 平台中IPSec VPN 的设计与实现", 《微计算机信息》 *

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105656943B (zh) * 2016-03-15 2019-07-05 上海缔安科技股份有限公司 一种应用数据拦截系统及方法
CN105656943A (zh) * 2016-03-15 2016-06-08 上海缔安科技股份有限公司 一种应用数据拦截系统及方法
CN106254205A (zh) * 2016-10-25 2016-12-21 杭州华三通信技术有限公司 一种报文传输方法和装置
CN106254205B (zh) * 2016-10-25 2019-11-12 新华三技术有限公司 一种报文传输方法和装置
CN108718268A (zh) * 2017-04-07 2018-10-30 格尔软件股份有限公司 一种提高vpn服务端并发处理性能的方法
CN108718268B (zh) * 2017-04-07 2022-01-28 格尔软件股份有限公司 一种提高vpn服务端并发处理性能的方法
CN108366074A (zh) * 2018-03-08 2018-08-03 北京明朝万达科技股份有限公司 一种网络数据包防劫持方法及装置
CN108366074B (zh) * 2018-03-08 2021-02-05 北京明朝万达科技股份有限公司 一种网络数据包防劫持方法及装置
CN109460642A (zh) * 2018-11-13 2019-03-12 北京天融信网络安全技术有限公司 应用程序网络访问感知的方法、装置及设备
CN109460642B (zh) * 2018-11-13 2021-12-14 北京天融信网络安全技术有限公司 应用程序网络访问感知的方法、装置及设备
CN109617897A (zh) * 2018-12-28 2019-04-12 北京指掌易科技有限公司 一种对公共移动应用提供安全传输的方法
CN114268542A (zh) * 2021-12-21 2022-04-01 奇安信科技集团股份有限公司 网卡信息修改方法、装置、存储介质及计算机设备
CN114401120A (zh) * 2021-12-27 2022-04-26 中国电信股份有限公司 一种对象溯源的方法及相关装置

Also Published As

Publication number Publication date
CN105337831B (zh) 2018-10-09
WO2016019717A1 (zh) 2016-02-11
EP3163833B1 (en) 2020-03-18
EP3163833A1 (en) 2017-05-03
EP3163833A4 (en) 2017-05-31
US20170149738A1 (en) 2017-05-25
US10375025B2 (en) 2019-08-06

Similar Documents

Publication Publication Date Title
CN105337831A (zh) 虚拟专用网络的实现方法及客户端设备
US8856786B2 (en) Apparatus and method for monitoring communication performed by a virtual machine
CN108881308B (zh) 一种用户终端及其认证方法、系统、介质
CN106533883A (zh) 一种网络专线的建立方法、装置及系统
CN103840994A (zh) 一种用户端通过 vpn 访问内网的系统及方法
CN109284140B (zh) 配置方法及相关设备
JP2019511156A (ja) ファイアウォールによる保護ネットワーク装置
CN106878133B (zh) 报文转发方法及装置
CN108390937B (zh) 远程监控方法、装置及存储介质
EP3155764B1 (en) Method and system for secure bidirectional communication for industrial devices
CN104468550A (zh) 一种Windows桌面的用户登录方法、设备及系统
CN103595826A (zh) 一种防止虚拟机ip和mac伪造的方法
US9332017B2 (en) Monitoring remote access to an enterprise network
CN108134796A (zh) 安全通信方法、装置及边界网关
CN102438016A (zh) 获知报文所属进程的方法、访问控制方法、装置及设备
CN112468511A (zh) 文件传输方法和装置
CN104092661B (zh) 虚拟机串口的通信方法及装置
US10326588B2 (en) Ensuring information security in data transfers by dividing and encrypting data blocks
CN111078645A (zh) 一种计算机数据的异地备份方法及装置
KR101592323B1 (ko) 서버 장애 시 원격 서버 복구 시스템 및 방법
CN113472625B (zh) 基于移动互联网的透明桥接方法、系统、设备及存储介质
CN107547497A (zh) 一种无感知portal认证方法及装置
CN104967674A (zh) 一种金融网点柜面上安全传输文件的方法及系统
WO2015117380A1 (zh) 一种远程桌面协议网关进行路由交换的方法、设备及系统
CN105208010A (zh) 基于反向ssh的跨局域网远程数据连接方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant