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

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

Info

Publication number
CN105337831B
CN105337831B CN201410388867.9A CN201410388867A CN105337831B CN 105337831 B CN105337831 B CN 105337831B CN 201410388867 A CN201410388867 A CN 201410388867A CN 105337831 B CN105337831 B CN 105337831B
Authority
CN
China
Prior art keywords
message
ndis
client
address
pid
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.)
Active
Application number
CN201410388867.9A
Other languages
English (en)
Other versions
CN105337831A (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 EP15829052.8A priority patent/EP3163833B1/en
Priority to PCT/CN2015/072246 priority patent/WO2016019717A1/zh
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

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

Claims (8)

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

Families Citing this family (11)

* 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
CN105656943B (zh) * 2016-03-15 2019-07-05 上海缔安科技股份有限公司 一种应用数据拦截系统及方法
CN106254205B (zh) * 2016-10-25 2019-11-12 新华三技术有限公司 一种报文传输方法和装置
CN108718268B (zh) * 2017-04-07 2022-01-28 格尔软件股份有限公司 一种提高vpn服务端并发处理性能的方法
CN108366074B (zh) * 2018-03-08 2021-02-05 北京明朝万达科技股份有限公司 一种网络数据包防劫持方法及装置
CN109460642B (zh) * 2018-11-13 2021-12-14 北京天融信网络安全技术有限公司 应用程序网络访问感知的方法、装置及设备
US11271828B2 (en) 2018-11-15 2022-03-08 Citrix Systems, Inc. Real-time scalable virtual session and network analytics
CN109617897A (zh) * 2018-12-28 2019-04-12 北京指掌易科技有限公司 一种对公共移动应用提供安全传输的方法
US11489779B2 (en) 2019-05-20 2022-11-01 Citrix Systems, Inc. Systems and methods for managing streams of packets via intermediary devices
CN114268542B (zh) * 2021-12-21 2024-08-13 奇安信科技集团股份有限公司 网卡信息修改方法、装置、存储介质及计算机设备
CN114401120A (zh) * 2021-12-27 2022-04-26 中国电信股份有限公司 一种对象溯源的方法及相关装置

Citations (3)

* 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的实现方法

Family Cites Families (6)

* 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
ATE535078T1 (de) * 2004-07-23 2011-12-15 Citrix Systems Inc Verfahren und system zur sicherung von zugriff aus der ferne auf private netze
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核心网中服务器通信的方法、装置及网络系统
US9438701B2 (en) * 2012-05-05 2016-09-06 Citrix Systems, Inc. Systems and methods for a SPDY to HTTP gateway

Patent Citations (3)

* 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的实现方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Windows 平台中IPSec VPN 的设计与实现;刘伟等;《微计算机信息》;20061230;第22卷;1-3 *

Also Published As

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

Similar Documents

Publication Publication Date Title
CN105337831B (zh) 虚拟专用网络的实现方法及客户端设备
US20220103452A1 (en) Tracing logical network packets through physical network
US10778557B2 (en) Tracing network packets through logical and physical networks
CN106599694B (zh) 安全防护管理方法、计算机系统和计算机可读取存储媒体
US8004998B2 (en) Capture and regeneration of a network data using a virtual software switch
US9172627B2 (en) Device and related method for dynamic traffic mirroring
CN103840994B (zh) 一种用户端通过vpn访问内网的系统及方法
US20130007740A1 (en) Apparatus and method for monitoring communication performed by a virtual machine
US20140282823A1 (en) Device and related method for establishing network policy based on applications
CN109076057A (zh) 用于通过防火墙保护网络装置的系统和方法
US10778465B1 (en) Scalable cloud switch for integration of on premises networking infrastructure with networking services in the cloud
US20140280887A1 (en) A device and related method for dynamic traffic mirroring policy
CN101841537A (zh) 一种基于协议代理实现对文件共享访问控制方法及系统
US10015228B2 (en) Remote desktop protocol client for a standards-based web browser
CN102761534B (zh) 实现媒体接入控制层透明代理的方法和装置
CN103188074A (zh) 一种增强浏览器ssl算法强度的代理方法
CN104811473B (zh) 一种创建虚拟非易失性存储介质的方法、系统及管理系统
EP4002866A1 (en) A device and method to establish a score for a computer application
US20180288009A1 (en) Interception of Secure Shell Communication Sessions
CN105491169A (zh) 一种数据代理方法与系统
CN106533880A (zh) 一种在云服务器上搭建vpn服务的方法及装置
US20170317818A1 (en) Ensuring Information Security in Data Transfers by Dividing and Encrypting Data Blocks
CN103309722A (zh) 一种云计算系统及其应用访问方法
CN106685901A (zh) 用于处理跨域数据的方法、第一服务器及第二服务器
CN104967675A (zh) 避免病毒运行和传播的金融网点柜面上传输文件的方法

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