CN111786867B - 一种数据传输方法及服务器 - Google Patents
一种数据传输方法及服务器 Download PDFInfo
- Publication number
- CN111786867B CN111786867B CN201910272626.0A CN201910272626A CN111786867B CN 111786867 B CN111786867 B CN 111786867B CN 201910272626 A CN201910272626 A CN 201910272626A CN 111786867 B CN111786867 B CN 111786867B
- Authority
- CN
- China
- Prior art keywords
- vpn
- client
- message
- data message
- external network
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4633—Interconnection of networks using encapsulation techniques, e.g. tunneling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4641—Virtual LANs, VLANs, e.g. virtual private networks [VPN]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
- H04L47/82—Miscellaneous aspects
- H04L47/825—Involving tunnels, e.g. MPLS
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种数据传输方法及服务器,其中,所述方法包括:基于VPN实例的配置文件,在所述VPN实例中创建至少两个终端用户各自的虚拟网卡;基于所述至少两个终端用户的连接信息,与所述至少两个终端用户的各个客户端分别建立VPN隧道;通过外网接口标识表征的外网接口接收所述终端用户的客户端发来的外网数据报文,并识别所述外网数据报文所属的目标VPN隧道;获取所述目标VPN隧道的报文处理策略,并按照所述报文处理策略对所述外网数据报文处理后,将完成处理的外网数据报文通过所述目标VPN隧道绑定的虚拟网卡进行转发。本申请提供的技术方案,使得OpenVPN服务器在向多个终端用户提供服务时,能降低服务器整体的负载。
Description
技术领域
本发明涉及互联网技术领域,特别涉及一种数据传输方法及服务器。
背景技术
OpenVPN(基于OpenSSL的虚拟专用网络)服务器由于其简单易用以及安全性较高的特点,正在被越来越多的企业使用。为了提高网络连接的灵活性,目前可以将OpenVPN服务器应用至SD-WAN(Software-Defined Wide Area Network,软件定义的广域网)系统中。在SD-WAN系统中,OpenVPN服务器可以向多个不同的终端用户提供服务。
然而,OpenVPN通常是单进程的应用程序,如果要实现多个终端用户连接至同一个OpenVPN服务器上,就需要在OpenVPN服务器中运行不同的VPN实例,每个VPN实例可以对应各自的终端用户。这样无疑会提高OpenVPN服务器的负载。
此外,为了避免不同终端用户之间的数据报文发生冲突,在同一个OpenVPN服务器中创建的多个VPN实例,通常不能配置相同的外网IP、端口和路由策略。这样无疑会额外占用OpenVPN服务器有限的资源,从而会进一步提高OpenVPN服务器的负载。
发明内容
本申请的目的在于提供一种数据传输方法及服务器,使得OpenVPN服务器在向多个终端用户提供服务时,能降低服务器整体的负载。
为实现上述目的,本申请一方面提供SD-WAN系统中OpenVPN服务器的数据传输方法,所述OpenVPN服务器中启用一个VPN实例,所述VPN实例的配置文件中包括所述OpenVPN服务器的外网接口标识和至少两个终端用户的连接信息;所述方法包括:加载所述VPN实例的配置文件,并基于所述配置文件,在所述VPN实例中创建所述至少两个终端用户各自的虚拟网卡;基于所述至少两个终端用户的连接信息,与所述至少两个终端用户的各个客户端分别建立VPN隧道,其中,同一个终端用户的不同客户端对应的各个VPN隧道与所述同一个终端用户的虚拟网卡相绑定;通过所述外网接口标识表征的外网接口接收所述终端用户的客户端发来的外网数据报文,并识别所述外网数据报文所属的目标VPN隧道;获取所述目标VPN隧道的报文处理策略,并按照所述报文处理策略对所述外网数据报文处理后,将完成处理的外网数据报文通过所述目标VPN隧道绑定的虚拟网卡进行转发。
为实现上述目的,本申请另一方面还提供一种OpenVPN服务器,所述OpenVPN服务器中启用一个VPN实例,所述VPN实例的配置文件中包括所述OpenVPN服务器的外网接口标识和至少两个终端用户的连接信息;所述OpenVPN服务器包括:虚拟网卡创建单元,用于加载所述VPN实例的配置文件,并基于所述配置文件,在所述VPN实例中创建所述至少两个终端用户各自的虚拟网卡;VPN隧道建立单元,用于基于所述至少两个终端用户的连接信息,与所述至少两个终端用户的各个客户端分别建立VPN隧道,其中,同一个终端用户的不同客户端对应的各个VPN隧道与所述同一个终端用户的虚拟网卡相绑定;隧道识别单元,用于通过所述外网接口标识表征的外网接口接收所述终端用户的客户端发来的外网数据报文,并识别所述外网数据报文所属的目标VPN隧道;报文传输单元,用于获取所述目标VPN隧道的报文处理策略,并按照所述报文处理策略对所述外网数据报文处理后,将完成处理的外网数据报文通过所述目标VPN隧道绑定的虚拟网卡进行转发。
为实现上述目的,本申请另一方面还提供一种OpenVPN服务器,所述OpenVPN服务器包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,实现上述的数据传输方法。
由上可见,本申请提供的技术方案,在同一个OpenVPN服务器中,只需启用一个VPN实例。在该VPN实例的配置文件中,可以注明OpenVPN服务器的外网接口,以及多个终端用户的连接信息。这样,当OpenVPN服务器启动后,可以根据上述的配置文件,创建各个终端用户的虚拟网卡。后续,针对每个终端用户的不同客户端,OpenVPN服务器可以与这些客户端建立VPN隧道。其中,每个客户端都可以具备自身独立的VPN隧道,并且对于同一个终端用户而言,该终端用户的多个客户端对应的各个VPN隧道,可以共用该终端用户的虚拟网卡。OpenVPN服务器可以通过上述的外网接口,统一接收来自各个客户端的外网数据报文。为了避免不同客户端的外网数据报文互相冲突,可以识别外网数据报文所属的目标VPN隧道,客户端与OpenVPN服务器在建立该目标VPN隧道时,可以协商得到多项数据,这些数据例如可以包括对报文的处理策略,以及对处理后的报文的路由策略等。这样,在识别出外网数据报文所属的目标VPN隧道后,可以获取所述目标VPN隧道的报文处理策略,并按照该报文处理策略对外网数据报文进行处理后,通过目标VPN隧道绑定的虚拟网卡进行转发。由上可见,本申请提供的技术方案,同一台OpenVPN服务器可以在仅启用一个VPN实例的情况下,对多个终端用户提供服务。并且OpenVPN服务器无需配置多个外网接口,而是仅通过一个外网接口来接收外网数据报文。后续,通过客户端、VPN隧道、以及虚拟网卡之间的关联关系,能够准确地对外网数据报文进行处理,从而避免数据报文之间的冲突。因此,本申请提供的技术方案,可以使得OpenVPN服务器为单用户的多个客户端提供服务,在整体上同时向多个终端用户的多个客户端提供服务从而能提高服务器整体的负载能力。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施方式中OpenVPN服务器的系统结构示意图;
图2是本发明实施方式中数据传输方法的步骤图;
图3是本发明实施方式中外网数据报文的结构示意图;
图4是本发明实施方式中反馈数据报文的交互示意图;
图5是本发明实施方式中OpenVPN服务器的功能模块示意图;
图6是本发明实施方式中OpenVPN服务器的结构示意图;
图7是本发明中计算机终端的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本申请提供一种SD-WAN系统中OpenVPN服务器的数据传输方法,该方法可以针对当前的OpenVPN服务器进行改进。具体地,在所述OpenVPN服务器中,可以仅启用一个VPN实例,并且该VPN实例可以通过OpenVPN服务器的外网接口统一接收各个终端用户的客户端发来的外网数据报文。其中,所述外网接口可以由OpenVPN服务器的外网IP地址以及接收外网数据报文的端口共同表示。所述外网接口的标识便可以包含OpenVPN服务器的外网IP地址和上述端口的标识。
在本实施方式中,在所述OpenVPN服务器中可以预先创建所述VPN实例的配置文件,所述配置文件中可以包含多项信息。具体地,所述配置文件中可以包含所述外网接口的标识,还可以包含多个终端用户的连接信息。请参阅图1,OpenVPN服务器可以同时向多个终端用户提供服务,每个终端用户都可以包含一个或者多个客户端。在所述终端用户的连接信息中,可以包含终端用户的用户标识、终端用户的IP地址池、终端用户的路由策略、虚拟网卡信息、客户端的连接模式等多项信息。其中,所述用户标识可以是能够唯一表征终端用户的字符或者数字。不同终端用户的用户标识互不相同。所述用户IP地址池可以是IP地址的集合,该IP地址池中的IP地址可以分配给终端用户的各个客户端使用。所述用户路由策略,可以用于限定终端用户发送的数据报文的路由方式。所述虚拟网卡信息,可以用于在VPN实例中为对应的终端用户创建虚拟网卡。所述连接模式可以根据实际应用场景的不同而灵活设置,例如在本实施方式中,所述终端用户的客户端与VPN实例的连接模式可以是hub(中心节点)模式。当然,在实际应用中,所述配置文件中还可以包含更多的信息。例如,所述配置文件中还可以包括服务端证书等公共配置信息。
请参阅图2,本申请提供的数据传输方法,可以包括以下步骤。
S1:加载所述VPN实例的配置文件,并基于所述配置文件,在所述VPN实例中创建所述至少两个终端用户各自的虚拟网卡。
在一个实施方式中,当OpenVPN服务器启动后,为了加快对多个终端用户的报文进行处理,可以创建多个工作线程,从而可以通过所述多个工作线程,并行处理所述至少两个终端用户的数据报文,从而提高报文的处理效率。
在一个实施方式中,OpenVPN服务器还可以加载所述VPN实例的配置文件,并解析其中的内容。然后,可以根据其中的终端用户的连接信息,为各个终端用户创建各自的虚拟网卡。根据应用场景的不同,虚拟网卡的形式也可以不同。例如,所述虚拟网卡可以是tun网卡,或者是tap网卡。这样,每个终端用户在VPN实例中便可以具备自身对应的虚拟网卡,不同终端用户对应的虚拟网卡也各不相同。
S3:基于所述至少两个终端用户的连接信息,与所述至少两个终端用户的各个客户端分别建立VPN隧道,其中,同一个终端用户的不同客户端对应的各个VPN隧道与所述同一个终端用户的虚拟网卡相绑定。
在本实施方式中,在为不同的终端用户创建不同的虚拟网卡后,终端用户的客户端可以与OpenVPN服务器建立通信连接。请参阅图1,为了避免不同客户端与OpenVPN服务器交互的数据互相干扰,VPN实例可以基于终端用户的连接信息,为终端用户的各个客户端分别建立VPN隧道。具体地,客户端可以向OpenVPN服务器发送连接建立请求,该请求中可以携带客户端所属终端用户的用户标识。这样,OpenVPN服务器接收到该请求后,可以根据其中携带的用户标识,在配置文件中查询到该用户标识对应的连接信息。后续,客户端与OpenVPN服务器可以根据查询得到的连接信息,进行通信协商,从而确定出数据加解密方法、路由策略、内网网段、客户端网段、客户端使用的身份信息、客户端使用的虚拟网卡等各项信息。在完成通信协商后,便可以在客户端与OpenVPN服务器之间建立起VPN隧道。该VPN隧道可以作为客户端的连接实例,该连接实例中可以包含上述通信协商过程中产生的各项信息。这样,针对每个客户端而言,都可以建立自身的VPN隧道。
在实际应用中,在所述VPN实例中可以维护两张数据表,其中一张数据表是终端用户的连接信息,另一张数据表是客户端的连接实例。其中,客户端的连接实例可以通过指针指向对应的终端用户的连接信息,或者可以复制终端用户的连接信息,并将复制的连接信息在客户端的连接实例的数据表中存储。这样,客户端的连接实例和终端用户的连接信息之间,便可以建立起关联关系。具体地,终端用户在VPN实例中可以具备自身的虚拟网卡,那么该终端用户下的各个客户端,在建立VPN隧道后,这些VPN隧道便可以与该终端用户的虚拟网卡相绑定。也就是说,同一个终端用户下的客户端可以共用同一个虚拟网卡。
在本实施方式中,上述客户端的连接实例和终端用户的连接信息之间的关联关系,可以被OpenVPN服务器内的多个工作线程共享,这样,无论哪个工作线程接收到外网数据报文,都能通过共享的关联关系,正确地对外网数据报文进行处理。
在一个实施方式中,当客户端在与OpenVPN服务器建立VPN隧道时,还可以为该客户端分配可使用的IP地址。具体地,终端用户的连接信息中可以包括终端用户的IP地址池,那么当OpenVPN服务器接收到当前的客户端发来的连接建立请求后,可以根据该请求中携带的用户标识,识别出当前的客户端所属的目标终端用户,并可以从所述目标终端用户的连接信息中提取所述目标终端用户的IP地址池。然后,在所述目标终端用户的IP地址池中,可以选择未被占用的IP地址,并将选择的所述IP地址分配给所述当前的客户端。其中,所述未被占用的IP地址可以是随机选择的,也可以是按序选择的,本申请对此并不做限定。
S5:通过所述外网接口标识表征的外网接口接收所述终端用户的客户端发来的外网数据报文,并识别所述外网数据报文所属的目标VPN隧道。
在本实施方式中,当客户端与OpenVPN服务器之间建立VPN隧道后,便可以通过建立的VPN隧道向OpenVPN服务器发送外网数据报文。客户端发送的外网数据报文,可以具备固定的报文格式。具体地,所述报文格式可以如图3所示。所述外网数据报文中可以包括IP头部信息、UDP头部信息、OpenVPN头部信息以及加密后的内层报文。其中,内层报文可以是客户端发送的数据内容,该数据内容可以按照与OpenVPN服务器协商的加密方式进行加密,从而得到加密后的内层报文。然后,该加密后的内层报文可以与其它的几个字段共同构成外网数据报文。在所述外网数据报文的OpenVPN头部信息中,可以包含操作码、key_id、peer_id、packet_id、校验码等多个字段。其中,操作码可以用于区分报文的类型,key_id可以用于查询加解密秘钥结构体,peer_id则可以填写客户端对应的VPN隧道的隧道标识,packet_id可以用于对报文进行抗重放攻击,校验码可以用于对报文进行完整性校验。其中,peer_id便可以是用于填写隧道标识的指定字段。
在本实施方式中,客户端发送的外网数据报文可以被OpenVPN服务器的外网接口统一接收。然后,OpenVPN服务器可以根据外网数据报文的内容,识别该外网数据报文所属的目标VPN隧道。具体地,在识别所述外网数据报文所属的目标VPN隧道时,可以从所述外网数据报文的VPN头部信息中提取出所述指定字段,并将所述指定字段内的隧道标识指向的VPN隧道作为所述外网数据报文所属的目标VPN隧道。
S7:获取所述目标VPN隧道的报文处理策略,并按照所述报文处理策略对所述外网数据报文处理后,将完成处理的外网数据报文通过所述目标VPN隧道绑定的虚拟网卡进行转发。
在本实施方式中,识别出外网数据报文所属的目标VPN隧道,便可以获取到该目标VPN隧道与OpenVPN服务器之间的协商数据。该协商数据中可以包括报文处理策略,所述报文处理策略可以包含报文的加解密方式和封装/解封装方式。那么,由于外网数据报文是经过加密和封装的,因此,OpenVPN服务器在获取到所述目标VPN隧道的报文处理策略后,可以按照所述报文处理策略限定的方式,对所述外网数据报文进行解封装,并提取解封装后的外网数据报文中经过加密的内层数据报文。通过所述目标VPN隧道的解密秘钥,可以对所述经过加密的内层数据报文进行解密,以还原所述内层数据报文的内容。最终,OpenVPN服务器便可以将还原得到的所述内层数据报文通过所述目标VPN隧道绑定的虚拟网卡进行转发。具体地,还原得到的所述内层数据报文,可以被转发至同一用户的其它虚拟网卡处,后续,接收所述内层数据报文的虚拟网卡可以对该内层数据报文进行加密和封装后,再被发送至其它的OpenVPN服务器。这样,OpenVPN服务器可以通过统一的外网接口接收各个客户端发来的外网数据报文,并可以在对外网数据报文进行处理后,选用与VPN隧道(客户端)相绑定的虚拟网卡,将内层数据报文进行转发。
请参阅图4,在一个实施方式中,OpenVPN服务器还可以接收到内部数据报文,所述内部数据报文通常都是未经过加密和封装的,该内部数据报文可以被OpenVPN服务器的虚拟网卡接收。在实际应用中,该内部数据报文也具备固定的报文格式。具体地,所述内部数据报文可以包含IP头部信息、UDP头部信息和内部数据信息,其中,内部数据信息中携带的数据便可以是提供给客户端的数据。当OpenVPN服务器接收到该内部数据报文后,可以提取出其中的IP头部信息。在该IP头部信息中,可以具备目的IP地址,该目的IP地址便可以是待接收该内部数据报文的客户端的IP地址。那么根据该目的IP地址,便可以确定出对应的目标客户端。然后,根据确定出的目标客户端,便可以进一步地确定出该内部数据报文所属的VPN隧道。后续,由于OpenVPN服务器需要通过外网接口将该内部数据报文发送给目标客户端,因此需要对该内部数据报文进行加密和封装。具体地,由于已经确定出该内部数据报文所属的VPN隧道,便可以获取识别出的所述VPN隧道对应的报文加密方式和报文封装方式,并按照所述报文加密方式和所述报文封装方式对所述内网数据报文加密和封装后,将加密和封装后的内网数据报文通过所述外网接口发送至对应的终端用户的客户端处。
在一个实施方式中,VPN实例还可以动态地对终端用户进行删除或者添加。具体地,若针对所述VPN实例添加新的终端用户,可以在所述VPN实例的配置文件中添加所述新的终端用户的连接信息,所述新的终端用户的连接信息用于在所述VPN实例中创建所述新的终端用户的虚拟网卡。若接收到指向所述VPN实例中已存在的目标终端用户的删除指令,可以将所述目标终端用户的虚拟网卡从所述VPN实例中删除,并从所述VPN实例的配置文件中将所述目标终端用户的连接信息删除。
在一个实施方式中,请参阅图1,为了更好地区分不同终端用户的数据流量,可以通过SD-WAN控制器,在所述VPN实例中创建与所述虚拟网卡的数量相等的若干个网络隔离空间。然后,可以将各个所述虚拟网卡添加至所述若干个网络隔离空间中,以使得同一个网络隔离空间内存储同一个用户的虚拟网卡。这样,不同用户的虚拟网卡可以处于不同的网络隔离空间内,不同的网络隔离空间可以实现资源隔离,后续当虚拟网卡进行报文的转发时,可以进一步保证不会与其它虚拟网卡转发的报文相互影响。
本申请还提供一种OpenVPN服务器,所述OpenVPN服务器中启用一个VPN实例,所述VPN实例的配置文件中包括所述OpenVPN服务器的外网接口标识和至少两个终端用户的连接信息;请参阅图5,所述OpenVPN服务器包括:
虚拟网卡创建单元,用于加载所述VPN实例的配置文件,并基于所述配置文件,在所述VPN实例中创建所述至少两个终端用户各自的虚拟网卡;
VPN隧道建立单元,用于基于所述至少两个终端用户的连接信息,与所述至少两个终端用户的各个客户端分别建立VPN隧道,其中,同一个终端用户的不同客户端对应的各个VPN隧道与所述同一个终端用户的虚拟网卡相绑定;
隧道识别单元,用于通过所述外网接口标识表征的外网接口接收所述终端用户的客户端发来的外网数据报文,并识别所述外网数据报文所属的目标VPN隧道;
报文传输单元,用于获取所述目标VPN隧道的报文处理策略,并按照所述报文处理策略对所述外网数据报文处理后,将完成处理的外网数据报文通过所述目标VPN隧道绑定的虚拟网卡进行转发。
在一个实施方式中,所述OpenVPN服务器还包括:
多线程创建单元,用于在所述OpenVPN服务器启动后,创建多个工作线程,以通过所述多个工作线程,并行处理所述至少两个终端用户发来的数据报文;其中,所述多个工作线程,共享所述终端用户的连接信息和所述终端用户的客户端的连接实例之间的关联关系。
在一个实施方式中,所述外网数据报文中包括VPN头部信息,所述VPN头部信息中至少包括用于填写隧道标识的指定字段;
相应地,所述隧道识别单元包括:
字段识别模块,用于从所述外网数据报文的VPN头部信息中提取出所述指定字段,并将所述指定字段内的隧道标识指向的VPN隧道作为所述外网数据报文所属的目标VPN隧道。
在一个实施方式中,所述OpenVPN服务器还包括:
资源隔离单元,用于在所述VPN实例中创建与所述虚拟网卡的数量相等的若干个网络隔离空间,并将各个所述虚拟网卡添加至所述若干个网络隔离空间中,以使得同一个网络隔离空间内存储同一个用户的虚拟网卡。
在一个实施方式中,所述OpenVPN服务器还包括:
内部数据报文识别单元,用于接收内部数据报文,并识别所述内部数据报文所属的VPN隧道;
内部数据报文传输单元,用于获取识别出的所述VPN隧道对应的报文加密方式和报文封装方式,并按照所述报文加密方式和所述报文封装方式对所述内网数据报文加密和封装后,将加密和封装后的内网数据报文通过所述外网接口发送至对应的终端用户的客户端处。
请参阅图6,本申请还提供一种OpenVPN服务器,所述OpenVPN服务器包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,实现上述的数据传输方法。
请参阅图7,在本申请中,上述实施例中的技术方案可以应用于如图7所示的计算机终端10上。计算机终端10可以包括一个或多个(图中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输模块106。本领域普通技术人员可以理解,图7所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图7中所示更多或者更少的组件,或者具有与图7所示不同的配置。
存储器104可用于存储应用软件的软件程序以及模块,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
由上可见,本申请提供的技术方案,在同一个OpenVPN服务器中,只需启用一个VPN实例。在该VPN实例的配置文件中,可以注明OpenVPN服务器的外网接口,以及多个终端用户的连接信息。这样,当OpenVPN服务器启动后,可以根据上述的配置文件,创建各个终端用户的虚拟网卡。后续,针对每个终端用户的不同客户端,OpenVPN服务器可以与这些客户端建立VPN隧道。其中,每个客户端都可以具备自身独立的VPN隧道,并且对于同一个终端用户而言,该终端用户的多个客户端对应的各个VPN隧道,可以共用该终端用户的虚拟网卡。OpenVPN服务器可以通过上述的外网接口,统一接收来自各个客户端的外网数据报文。为了避免不同客户端的外网数据报文互相冲突,可以识别外网数据报文所属的目标VPN隧道,客户端与OpenVPN服务器在建立该目标VPN隧道时,可以协商得到多项数据,这些数据例如可以包括对报文的处理策略,以及对处理后的报文的路由策略等。这样,在识别出外网数据报文所属的目标VPN隧道后,可以获取所述目标VPN隧道的报文处理策略,并按照该报文处理策略对外网数据报文进行处理后,通过目标VPN隧道绑定的虚拟网卡进行转发。由上可见,本申请提供的技术方案,同一台OpenVPN服务器可以在仅启用一个VPN实例的情况下,对多个终端用户提供服务。并且OpenVPN服务器无需配置多个外网接口,而是仅通过一个外网接口来接收外网数据报文。后续,通过客户端、VPN隧道、以及虚拟网卡之间的关联关系,能够准确地对外网数据报文进行处理,从而避免数据报文之间的冲突。因此,本申请提供的技术方案,可以使得OpenVPN服务器为单用户的多个客户端提供服务,在整体上同时向多个终端用户的多个客户端提供服务从而能提高服务器整体的负载能力。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (11)
1.一种SD-WAN系统中OpenVPN服务器的数据传输方法,其特征在于,所述OpenVPN服务器中启用一个VPN实例,所述VPN实例的配置文件中包括所述OpenVPN服务器的外网接口标识和至少两个终端用户的连接信息;所述方法包括:
加载所述VPN实例的配置文件,并基于所述配置文件,在所述VPN实例中创建所述至少两个终端用户各自的虚拟网卡,之后在所述VPN实例中创建与所述虚拟网卡的数量相等的若干个网络隔离空间,并将各个所述虚拟网卡添加至所述若干个网络隔离空间中,以使得同一个网络隔离空间内存储同一个用户的虚拟网卡;
基于所述至少两个终端用户的连接信息,与所述至少两个终端用户的各个客户端分别建立VPN隧道,其中,同一个终端用户的不同客户端对应的各个VPN隧道与所述同一个终端用户的虚拟网卡相绑定;
通过所述外网接口标识表征的外网接口接收所述终端用户的客户端发来的外网数据报文,并识别所述外网数据报文所属的目标VPN隧道;
获取所述目标VPN隧道的报文处理策略,并按照所述报文处理策略对所述外网数据报文处理后,将完成处理的外网数据报文通过所述目标VPN隧道绑定的虚拟网卡进行转发。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述OpenVPN服务器启动后,创建多个工作线程,以通过所述多个工作线程,并行处理所述至少两个终端用户的数据报文;其中,所述多个工作线程,共享所述终端用户的连接信息和所述终端用户的客户端的连接实例之间的关联关系。
3.根据权利要求1所述的方法,其特征在于,所述连接信息中包括终端用户的用户标识、终端用户的路由策略以及客户端的连接模式;其中,不同终端用户的用户标识互不相同,所述客户端的连接模式包括hub模式。
4.根据权利要求3所述的方法,其特征在于,所述连接信息中还包括终端用户的IP地址池;
相应地,与所述至少两个终端用户的各个客户端分别建立VPN隧道包括:
针对当前的客户端,识别所述当前的客户端所属的目标终端用户,并从所述目标终端用户的连接信息中提取所述目标终端用户的IP地址池;
在所述目标终端用户的IP地址池中选择未被占用的IP地址,并将选择的所述IP地址分配给所述当前的客户端。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若针对所述VPN实例添加新的终端用户,在所述VPN实例的配置文件中添加所述新的终端用户的连接信息,所述新的终端用户的连接信息用于在所述VPN实例中创建所述新的终端用户的虚拟网卡;
若接收到指向所述VPN实例中已存在的目标终端用户的删除指令,将所述目标终端用户的虚拟网卡从所述VPN实例中删除,并从所述VPN实例的配置文件中将所述目标终端用户的连接信息删除。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收内部数据报文,并识别所述内部数据报文所属的VPN隧道;
获取识别出的所述VPN隧道对应的报文加密方式和报文封装方式,并按照所述报文加密方式和所述报文封装方式对所述内网数据报文加密和封装后,将加密和封装后的内网数据报文通过所述外网接口发送至对应的终端用户的客户端处。
7.根据权利要求6所述的方法,其特征在于,识别所述内部数据报文所属的VPN隧道包括:
识别所述内部数据报文中的目的IP地址,并确定所述目的IP地址对应的目标客户端;
将所述目标客户端建立的VPN隧道作为所述内部数据报文所属的VPN隧道。
8.一种OpenVPN服务器,其特征在于,所述OpenVPN服务器中启用一个VPN实例,所述VPN实例的配置文件中包括所述OpenVPN服务器的外网接口标识和至少两个终端用户的连接信息;所述OpenVPN服务器包括:
虚拟网卡创建单元,用于加载所述VPN实例的配置文件,并基于所述配置文件,在所述VPN实例中创建所述至少两个终端用户各自的虚拟网卡;
资源隔离单元,用于在所述VPN实例中创建与所述虚拟网卡的数量相等的若干个网络隔离空间,并将各个所述虚拟网卡添加至所述若干个网络隔离空间中,以使得同一个网络隔离空间内存储同一个用户的虚拟网卡;
VPN隧道建立单元,用于基于所述至少两个终端用户的连接信息,与所述至少两个终端用户的各个客户端分别建立VPN隧道,其中,同一个终端用户的不同客户端对应的各个VPN隧道与所述同一个终端用户的虚拟网卡相绑定;
隧道识别单元,用于通过所述外网接口标识表征的外网接口接收所述终端用户的客户端发来的外网数据报文,并识别所述外网数据报文所属的目标VPN隧道;
报文传输单元,用于获取所述目标VPN隧道的报文处理策略,并按照所述报文处理策略对所述外网数据报文处理后,将完成处理的外网数据报文通过所述目标VPN隧道绑定的虚拟网卡进行转发。
9.根据权利要求8所述的OpenVPN服务器,其特征在于,所述OpenVPN服务器还包括:
多线程创建单元,用于在所述OpenVPN服务器启动后,创建多个工作线程,以通过所述多个工作线程,并行处理所述至少两个终端用户来的数据报文;其中,所述多个工作线程,共享所述终端用户的连接信息和所述终端用户的客户端的连接实例之间的关联关系。
10.根据权利要求8所述的OpenVPN服务器,其特征在于,所述OpenVPN服务器还包括:
内部数据报文识别单元,用于接收内部数据报文,并识别所述内部数据报文所属的VPN隧道;
内部数据报文传输单元,用于获取识别出的所述VPN隧道对应的报文加密方式和报文封装方式,并按照所述报文加密方式和所述报文封装方式对所述内网数据报文加密和封装后,将加密和封装后的内网数据报文通过所述外网接口发送至对应的终端用户的客户端处。
11.一种OpenVPN服务器,其特征在于,所述OpenVPN服务器包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,实现如权利要求1至7中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910272626.0A CN111786867B (zh) | 2019-04-04 | 2019-04-04 | 一种数据传输方法及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910272626.0A CN111786867B (zh) | 2019-04-04 | 2019-04-04 | 一种数据传输方法及服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111786867A CN111786867A (zh) | 2020-10-16 |
CN111786867B true CN111786867B (zh) | 2021-11-16 |
Family
ID=72755005
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910272626.0A Active CN111786867B (zh) | 2019-04-04 | 2019-04-04 | 一种数据传输方法及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111786867B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112887275B (zh) * | 2021-01-12 | 2022-08-30 | 苏州国科综合数据中心有限公司 | 数据处理方法、装置及存储介质 |
CN113973028A (zh) * | 2021-10-26 | 2022-01-25 | 亿次网联(杭州)科技有限公司 | 一种vpn通信方法、虚拟网卡、节点设备及存储介质 |
CN116132220A (zh) * | 2021-11-15 | 2023-05-16 | 中国联合网络通信集团有限公司 | 数据发送方法、装置、设备及存储介质 |
CN114338278A (zh) * | 2021-12-29 | 2022-04-12 | 北京天融信网络安全技术有限公司 | 隧道通信方法、装置、设备及介质 |
CN115529206A (zh) * | 2022-09-30 | 2022-12-27 | 上海地面通信息网络股份有限公司 | 基于拨号云vpn的远程及移动办公协同控制系统及接入方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7478427B2 (en) * | 2003-05-05 | 2009-01-13 | Alcatel-Lucent Usa Inc. | Method and apparatus for providing adaptive VPN to enable different security levels in virtual private networks (VPNs) |
CN101483594A (zh) * | 2009-02-11 | 2009-07-15 | 成都市华为赛门铁克科技有限公司 | 一种基于虚拟专用网隧道的报文发送方法及客户端 |
CN101626337B (zh) * | 2009-06-18 | 2011-09-28 | 南京联创科技集团股份有限公司 | 基于虚拟网卡技术的多隧道并发模型实现方法 |
CN102469004A (zh) * | 2010-10-29 | 2012-05-23 | 中国科学院计算技术研究所 | 虚拟机网络系统及其创建方法 |
CN102801695B (zh) * | 2011-05-27 | 2015-10-14 | 华耀(中国)科技有限公司 | 虚拟专用网通信设备及其数据包传输方法 |
FR3010599B1 (fr) * | 2013-09-11 | 2016-12-02 | Citypassenger | Procede et systeme d'etablissement de reseaux prives virtuels entre reseaux locaux |
CN105610675B (zh) * | 2016-01-28 | 2019-05-10 | 浪潮(北京)电子信息产业有限公司 | 一种虚拟vpn网关的创建方法及装置 |
CN106888145B (zh) * | 2017-03-17 | 2019-11-12 | 新华三技术有限公司 | 一种vpn资源访问方法及装置 |
-
2019
- 2019-04-04 CN CN201910272626.0A patent/CN111786867B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111786867A (zh) | 2020-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111786867B (zh) | 一种数据传输方法及服务器 | |
CN111786869B (zh) | 一种服务器之间的数据传输方法及服务器 | |
CN109450852B (zh) | 网络通信加密解密方法及电子设备 | |
CN106376003B (zh) | 检测无线局域网连接及无线局域网数据发送方法及其装置 | |
CN103339901B (zh) | 内容导向网络环境中的终端和中间节点以及终端和中间节点的通信方法 | |
US9967738B2 (en) | Methods and arrangements for enabling data transmission between a mobile device and a static destination address | |
US8509239B2 (en) | Method, apparatus and system for processing packets | |
CN106878199B (zh) | 一种接入信息的配置方法和装置 | |
CN103580980A (zh) | 虚拟网络自动发现和自动配置的方法及其装置 | |
CN110059055B (zh) | 一种基于分布式私有云的文件存储及读取方法及装置 | |
CN105430059A (zh) | 智能客户端路由 | |
CN111786868B (zh) | 服务器之间的数据传输方法及strongswan服务器 | |
CN103944867A (zh) | 动态主机配置协议报文的处理方法、装置和系统 | |
US11870701B2 (en) | Data transmission method, switch, and site | |
CN107135190B (zh) | 基于传输层安全连接的数据流量归属识别方法及装置 | |
CN115189920A (zh) | 跨网络域通信方法和相关装置 | |
CN111786870B (zh) | 数据传输方法及strongswan服务器 | |
CN103746768A (zh) | 一种数据包的识别方法及设备 | |
CN107809387B (zh) | 一种报文传输的方法、设备及网络系统 | |
CN113518475B (zh) | 通信方法、装置及系统 | |
CN111835613B (zh) | 一种vpn服务器的数据传输方法及vpn服务器 | |
CN115225414B (zh) | 基于ipsec的加密策略匹配方法、装置及通信系统 | |
CN111669310B (zh) | 一种pptp vpn中网络隔离空间的批量处理方法及pptp vpn服务器 | |
CN114826807A (zh) | 自动拨号方法、拨号设备及拨号服务端 | |
CN108259292B (zh) | 建立隧道的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |