首页> 中国专利> 虚拟专用网络的实现方法及客户端设备

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

摘要

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

著录项

  • 公开/公告号CN105337831A

    专利类型发明专利

  • 公开/公告日2016-02-17

    原文格式PDF

  • 申请/专利权人 华为技术有限公司;

    申请/专利号CN201410388867.9

  • 发明设计人 郑晓峰;祝颖华;戈挺克;赵飞;

    申请日2014-08-08

  • 分类号H04L12/46(20060101);H04L29/06(20060101);

  • 代理机构11205 北京同立钧成知识产权代理有限公司;

  • 代理人刘芳

  • 地址 518129 广东省深圳市龙岗区坂田华为总部办公楼

  • 入库时间 2023-12-18 14:16:33

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-10-09

    授权

    授权

  • 2016-03-16

    实质审查的生效 IPC(主分类):H04L12/46 申请日:20140808

    实质审查的生效

  • 2016-02-17

    公开

    公开

说明书

技术领域

本发明实施例涉及计算机技术,尤其涉及一种虚拟专用网络的实现方法 及客户端设备。

背景技术

虚拟专用网络(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驱动的配合,将使用SSL VPN的控制提高到了进程级别的控制粒度。同时,不再需要在客户端设备的 操作系统中使用虚拟网卡,客户端的启动速度也明显变快,提高产品的用户 体验。

可选地,本实施例的方法,还包括:

当所述应用程序关闭与内网服务器建立的报文流时,TDI驱动程序获取 当前关闭报文流的协议类型、端口号和进程标识号PID,并通知NDIS中间层 驱动,所述NDIS中间层驱动删除存储的所述PID、协议类型、端口号和进程 标识号PID的映射关系。

例如当应用程序关闭一条TCP连接的时候,TDI驱动程序捕获到该动作, 获取当前关闭连接的进程的PID、协议类型和端口号,并使用DeviceIoControl 通知NDIS中间层驱动,NDIS中间层驱动在表1中查找相应的记录,并将查 找到的记录从表1中删除。

可选地,如图3所示,所述NDIS网卡驱动将新报文发送到所述客户端, 由客户端发送到内网服务器,包括:

所述客户端将所述新报文通过所述SSL隧道发送到网关,由所述网关转 发到所述内网服务器。

可选地,所述方法,还包括:

所述客户端接收到所述网关转发的所述内网服务器的报文,将所述报文 的目的地址改为所述客户端所在客户端设备的本机地址,通过原始套接字 RawSocket接口发送所述报文到NDIS协议驱动,由所述NDIS协议驱动转 发到对应的应用程序。

具体地,如图3所示,客户端从SSL隧道中接收到网关转发的内网服务 器发给应用程序的报文时,对所述报文的校验和进行校验,若校验成功,则 客户端将该报文的目的地址改为本机地址,并重新计算校验和,再通过Raw Socket接口将报文通过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、磁碟或者光盘等各种可以存储程序代码 的介质。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对 其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通 技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改, 或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并 不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号