CN111786869A - 一种服务器之间的数据传输方法及服务器 - Google Patents
一种服务器之间的数据传输方法及服务器 Download PDFInfo
- Publication number
- CN111786869A CN111786869A CN201910273226.1A CN201910273226A CN111786869A CN 111786869 A CN111786869 A CN 111786869A CN 201910273226 A CN201910273226 A CN 201910273226A CN 111786869 A CN111786869 A CN 111786869A
- Authority
- CN
- China
- Prior art keywords
- vpn
- virtual network
- user
- target
- data message
- 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
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/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
- 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
- H04L49/00—Packet switching elements
- H04L49/70—Virtual switches
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实例中创建一个或者多个虚拟网卡;与其它的一个或者多个OpenVPN服务器分别建立VPN隧道,其中,所述虚拟网卡与创建的所述VPN隧道一一绑定;接收外网数据报文,以及接收SD‑WAN控制器针对所述外网数据报文下发的路由策略,并在创建的所述一个或者多个虚拟网卡中确定所述路由策略指向的目标虚拟网卡;通过所述目标虚拟网卡对所述外网数据报文进行处理后,将完成处理的外网数据报文通过所述目标虚拟网卡绑定的目标VPN隧道发送至对应的OpenVPN服务器处。本申请提供的技术方案,能降低服务器整体的负载。
Description
技术领域
本发明涉及互联网技术领域,特别涉及一种服务器之间的数据传输方法及服务器。
背景技术
OpenVPN(基于OpenSSL的虚拟专用网络)服务器由于其简单易用以及安全性较高的特点,正在被越来越多的企业使用。为了提高网络连接的灵活性,目前可以将OpenVPN服务器应用至SD-WAN(Software-Defined Wide Area Network,软件定义的广域网)系统中。在SD-WAN系统中,需要根据实际需求,将用户的数据报文按照不同的路由策略进行转发,这就要求同一台OpenVPN服务器上,可能需要同时存在多条VPN连接。
然而,现有的OpenVPN通常是单进程的应用程序,如果要让同一台OpenVPN服务器建立多条VPN连接,就需要在OpenVPN服务器中运行不同的VPN实例,每个VPN实例可以对应其中一条VPN连接。这样无疑会提高OpenVPN服务器的负载。
此外,为了避免不同VPN连接之间的数据报文发生冲突,在同一个OpenVPN服务器中创建的多个VPN实例,通常不能配置相同的外网IP、端口和路由策略,而是需要通过不同的外网IP、端口和路由策略来对不同的VPN连接进行区分。这样无疑会额外占用OpenVPN服务器有限的资源,从而会进一步提高OpenVPN服务器的负载。
发明内容
本申请的目的在于提供一种服务器之间的数据传输方法及服务器,能降低服务器整体的负载。
为实现上述目的,本申请一方面提供一种SD-WAN系统中OpenVPN服务器之间的数据传输方法,OpenVPN服务器中启用一个VPN实例,所述VPN实例的配置文件中至少包括用户的一份或者多份连接信息;所述方法包括:加载所述VPN实例的配置文件,并基于所述配置文件,在所述VPN实例中针对所述用户创建与所述连接信息的数量相匹配的一个或者多个虚拟网卡;基于所述一份或者多份连接信息,与其它的一个或者多个OpenVPN服务器分别建立VPN隧道,其中,所述虚拟网卡与创建的所述VPN隧道一一绑定;接收与所述用户相关的外网数据报文,以及接收SD-WAN控制器针对所述外网数据报文下发的路由策略,并在创建的所述一个或者多个虚拟网卡中确定所述路由策略指向的目标虚拟网卡;通过所述目标虚拟网卡对所述外网数据报文进行处理后,将完成处理的外网数据报文通过所述目标虚拟网卡绑定的目标VPN隧道发送至对应的OpenVPN服务器处。
为实现上述目的,本申请另一方面还提供一种OpenVPN服务器,OpenVPN服务器中启用一个VPN实例,所述VPN实例的配置文件中至少包括用户的一份或者多份连接信息;所述OpenVPN服务器包括:虚拟网卡创建单元,用于加载所述VPN实例的配置文件,并基于所述配置文件,在所述VPN实例中针对所述用户创建与所述连接信息的数量相匹配的一个或者多个虚拟网卡;VPN隧道建立单元,用于基于所述一份或者多份连接信息,与其它的一个或者多个OpenVPN服务器分别建立VPN隧道,其中,所述虚拟网卡与创建的所述VPN隧道一一绑定;路由单元,用于接收与所述用户相关的外网数据报文,以及接收SD-WAN控制器针对所述外网数据报文下发的路由策略,并在创建的所述一个或者多个虚拟网卡中确定所述路由策略指向的目标虚拟网卡;报文传输单元,用于通过所述目标虚拟网卡对所述外网数据报文进行处理后,将完成处理的外网数据报文通过所述目标虚拟网卡绑定的目标VPN隧道发送至对应的OpenVPN服务器处。
为实现上述目的,本申请另一方面还提供一种OpenVPN服务器,所述OpenVPN服务器包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,实现上述的数据传输方法。
由上可见,本申请提供的技术方案,在同一个OpenVPN服务器中,只需启用一个VPN实例。在该VPN实例的配置文件中,可以包括用户的一份或者多份连接信息。这一份或者多份连接信息,可以对应着一个或者多个虚拟网卡。这样,根据所述连接信息,便可以在VPN实例中创建对应的虚拟网卡。这些虚拟网卡可以用于与其它不同的OpenVPN服务器进行数据交互。具体地,当前的OpenVPN服务器可以根据上述的连接信息,与其它的一个或者多个OpenVPN进行通信协商,从而与各个其它的OpenVPN服务器分别建立VPN隧道。上述创建的虚拟网卡,与建立的VPN隧道可以一一绑定。这样,当OpenVPN服务器接收到用户的外网数据报文后,可以根据SD-WAN控制器实时下发的路由策略,确定出该路由策略指向的目标虚拟网卡。然后,通过该目标虚拟网卡对外网数据报文进行处理后,便可以通过该目标虚拟网卡绑定的目标VPN隧道,将完成处理的外网数据报文发送至对应的其它OpenVPN服务器处。这样,通过在一个VPN实例中创建多个虚拟网卡,并将虚拟网卡与VPN隧道进行绑定的方式,可以对动态下达的路由策略进行处理,并且可以按照动态下达的路由策略对外网数据报文进行转发。由此可见,本申请提供的技术方案,并不需要启用多个VPN实例,从而在减少OpenVPN服务器整体负载的情况下,还能实现外网数据报文的动态路由。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施方式中OpenVPN服务器的系统结构示意图;
图2是本发明实施方式中数据传输方法的步骤图;
图3是本发明实施方式中外网数据报文的结构示意图;
图4是本发明实施方式中OpenVPN服务器的功能模块示意图;
图5是本发明实施方式中OpenVPN服务器的结构示意图;
图6是本发明中计算机终端的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本申请提供一种SD-WAN系统中OpenVPN服务器之间的数据传输方法,该方法可以针对当前的OpenVPN服务器进行改进。具体地,在所述OpenVPN服务器中,可以仅启用一个VPN实例,并且该VPN实例可以通过OpenVPN服务器的外网接口统一接收用户的客户端或者其它OpenVPN服务器发来的外网数据报文。其中,所述外网接口可以由OpenVPN服务器的外网IP地址以及接收外网数据报文的端口共同表示。所述外网接口的标识便可以包含OpenVPN服务器的外网IP地址和上述端口的标识。
在本实施方式中,在所述OpenVPN服务器中可以预先创建所述VPN实例的配置文件,所述配置文件中可以包含多项信息。具体地,所述配置文件中可以包含所述外网接口的标识,还可以包含用户的连接信息。请参阅图1,OpenVPN服务器可以同时向多个用户提供服务。在所述用户的连接信息中,可以包含用户的用户标识、用户的IP地址池、用户的路由策略、虚拟网卡信息、OpenVPN服务器的连接模式等多项信息。其中,所述用户标识可以是能够唯一表征用户的字符或者数字。不同用户的用户标识互不相同。所述用户IP地址池可以是IP地址的集合,该IP地址池中的IP地址可以分配给用户的各个客户端使用。所述用户路由策略,可以用于限定用户发送的数据报文的路由方式。所述虚拟网卡信息,可以用于在VPN实例中为对应的用户创建虚拟网卡。所述连接模式可以根据实际应用场景的不同而灵活设置,例如在本实施方式中,用户的客户端与OpenVPN服务器的连接模式可以是hub模式,而OpenVPN服务器之间的连接模式可以是tun模式。当然,在实际应用中,所述配置文件中还可以包含更多的信息。例如,所述配置文件中还可以包括服务端证书等公共配置信息。在本实施方式中,对于同一个用户而言,可以具备一份或者多份连接信息,每一份连接信息均可以包含上述例举的各项信息。
请参阅图2,本申请提供的数据传输方法,可以包括以下步骤。
S1:加载所述VPN实例的配置文件,并基于所述配置文件,在所述VPN实例中针对所述用户创建与所述连接信息的数量相匹配的一个或者多个虚拟网卡。
在一个实施方式中,当OpenVPN服务器启动后,为了加快对用户的客户端发来的报文进行处理,可以创建多个工作线程,从而可以通过所述多个工作线程,并行处理用户的各个客户端发来的外网数据报文,从而提高报文的处理效率。
在一个实施方式中,OpenVPN服务器还可以加载所述VPN实例的配置文件,并解析其中的内容。然后,可以根据其中的用户的连接信息,针对所述用户创建与所述连接信息的数量相匹配的一个或者多个虚拟网卡。例如在图1中,对于OpenVPN服务器A而言,其可以同时向用户A1和用户A2提供服务。以用户A1为例,连接信息中可以包括三份连接信息,其中一份连接信息表征的模式是hub模式,另外两份连接信息表征的模式是tun模式。那么,根据hub模式的连接信息,可以创建用于与用户进行数据交互的虚拟网卡1,而针对tun模式的连接信息,可以创建两个与其它OpenVPN服务器进行数据交互的虚拟网卡2和虚拟网卡3。例如,虚拟网卡2可以与OpenVPN服务器B进行数据交互,而虚拟网卡3可以与OpenVPN服务器C进行数据交互。
由图1可见,同一个VPN实例可以对不同的用户提供服务,在一个实施方式中,为了区分不同用户的数据流量,在VPN实例中针对不同的用户创建对应的虚拟网卡之后,可以在所述VPN实例中创建与所述用户的数量相等的若干个网络隔离空间,并将各个所述用户的虚拟网卡添加至所述若干个网络隔离空间中,以使得同一个用户的虚拟网卡位于相同的网络隔离空间中,并且同一个网络隔离空间内,仅存在一个用户的一个或者多个虚拟网卡。例如在图1中,用户A1的三个虚拟网卡可以添加于网络隔离空间A1中,用户A2的两个虚拟网卡可以添加于网络隔离空间A2中。这样,通过网络隔离空间实现资源隔离,可以避免不同用户的虚拟网卡之间互相影响。
根据应用场景的不同,虚拟网卡的形式也可以不同。例如,所述虚拟网卡可以是tun网卡,或者是tap网卡。这样,每个用户在VPN实例中便可以具备自身对应的一个或者多个虚拟网卡,不同用户对应的虚拟网卡也各不相同。
S3:基于所述一份或者多份连接信息,与其它的一个或者多个OpenVPN服务器分别建立VPN隧道,其中,所述虚拟网卡与创建的所述VPN隧道一一绑定。
在本实施方式中,在为不同的用户创建不同的虚拟网卡后,当前的OpenVPN服务器便可以与其它的OpenPVN服务器建立通信连接。具体地,当前的OpenVPN服务器可以向其它的OpenVPN服务器发送连接建立请求,该请求中可以携带用户的用户标识。这样,其它的OpenVPN服务器接收到该请求后,可以根据其中携带的用户标识,在配置文件中查询到该用户标识对应的连接信息。后续,根据查询得到的连接信息,两个OpenVPN服务器之间可以进行通信协商,从而确定出数据加解密方法、路由策略、使用的虚拟网卡等各项信息。在完成通信协商后,便可以在两个OpenVPN服务器之间建立起VPN隧道。该VPN隧道可以作为连接实例,该连接实例中可以包含上述通信协商过程中产生的各项信息。这样,针对每份连接信息而言,都可以建立对应的VPN隧道。
在实际应用中,在所述VPN实例中可以维护两张数据表,其中一张数据表是用户的连接信息,另一张数据表是建立的连接实例。其中,连接实例可以通过指针指向对应的用户的连接信息,或者可以复制用户的连接信息,并将复制的连接信息在客户端的连接实例的数据表中存储。这样,连接实例和用户的连接信息之间,便可以建立起关联关系,每一份连接信息都具备对应的连接实例。由于在每一份连接信息中都具备虚拟网卡的信息,因此,在根据连接信息建立了对应额VPN隧道后,虚拟网卡与VPN隧道便也具备了一一对应的关系,从而使得创建的虚拟网卡与建立的VPN隧道能够一一绑定。
在本实施方式中,上述的连接实例和用户的连接信息之间的关联关系,可以被OpenVPN服务器内的多个工作线程共享,这样,无论哪个工作线程接收到外网数据报文,都能通过共享的关联关系,正确地对外网数据报文进行处理。
上述OpenVPN服务器之间可以通过tun模式的连接信息建立对应的VPN隧道,而OpenVPN服务器与用户之间,可以通过hub模式的连接信息建立对应的VPN隧道。这样,对于每个虚拟网卡而言,都可以具备各自绑定的VPN隧道,只不过有些虚拟网卡用于实现OpenVPN服务器之间的数据交互,而有些虚拟网卡用于实现OpenVPN服务器与用户之间的数据交互。
S5:接收与所述用户相关的外网数据报文,以及接收SD-WAN控制器针对所述外网数据报文下发的路由策略,并在创建的所述一个或者多个虚拟网卡中确定所述路由策略指向的目标虚拟网卡。
在本实施方式中,与所述用户相关的外网数据报文,可以是用户的客户端直接发来的,也可以是OpenVPN服务器转发的。例如,对于图1中的OpenVPN服务器A而言,其接收到的与用户相关的外网数据报文,便可以是用户的客户端直接发来的。而对于OpenVPN服务器B而言,其接收到的与用户相关的外网数据报文,可以是OpenVPN服务器A转发的。
在本实施方式中,与用户相关的外网数据报文可以具备固定的报文格式。具体地,所述报文格式可以如图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隧道与虚拟网卡具备一一绑定的关系,那么该外网数据报文便可以交由对应的虚拟网卡进行处理。例如,在图1中,用户A1发来的外网数据报文,在识别出对应的VPN隧道后,便可以交由虚拟网卡1来处理。虚拟网卡在对外网数据报文进行处理时,可以获取所述隧道标识指向的VPN隧道的报文处理策略,并按照所述报文处理策略对所述外网数据报文进行处理,得到所述外网数据报文中的内层数据。具体地,所述报文处理策略,可以是用户与OpenVPN服务器建立VPN隧道时,进行通信协商的结果。该通信协商的结果可以存储于VPN隧道的连接实例中。所述报文处理策略可以包含报文的加解密方式和封装/解封装方式。那么,由于外网数据报文是经过加密和封装的,因此,虚拟网卡可以按照所述报文处理策略限定的方式,对所述外网数据报文进行解封装,并提取解封装后的外网数据报文中经过加密的内层数据。通过所述隧道标识指向的VPN隧道的解密秘钥,可以对所述经过加密的内层数据进行解密,以还原所述内层数据的内容。最终,虚拟网卡便可以对外网数据报文处理后,得到对应的内层数据。
在本实施方式中,在得到所述内层数据后,虚拟网卡一方面可以根据连接实例限定的路由策略,将该内层数据转发至其它的虚拟网卡处。此外,还能够根据SD-WAN控制器针对所述外网数据报文下达的路由策略,动态地调节该内层数据的转发对象。具体地,所述SD-WAN控制器下达的路由策略中,可以指明外网数据报文后续的传输路径,在该传输路径中,可以包括各个OpenVPN服务器的标识。这样,处理外网数据报文的虚拟网卡可以解析SD-WAN控制器下达的路由策略,从而确定出下一个目标OpenVPN服务器的标识。由于当前的OpenVPN服务器与目标OpenVPN服务器之间已经建立了VPN隧道,那么当目标OpenVPN服务器确定时,对应的VPN隧道也是确定的。同时,又由于VPN隧道与虚拟网卡之间具备一一绑定的关系,因此,用于接收内层数据的目标虚拟网卡也可以确定。这样,处理外网数据报文的虚拟网卡根据SD-WAN服务器下达的路由策略,便可以在当前VPN实例内创建的所述一个或者多个虚拟网卡中确定所述路由策略指向的目标虚拟网卡,并可以将所述内层数据发送至所述目标虚拟网卡处。
S7:通过所述目标虚拟网卡对所述外网数据报文进行处理后,将完成处理的外网数据报文通过所述目标虚拟网卡绑定的目标VPN隧道发送至对应的OpenVPN服务器处。
在本实施方式中,在所述目标虚拟网卡接收到根据外网数据报文解析得到的内层数据后,可以获取所述目标虚拟网卡绑定的目标VPN隧道的报文处理策略。同样地,该报文处理策略也可以存储于目标VPN隧道的连接实例中。该报文处理策略可以限定报文加密方式和封装方式。因此,目标虚拟网卡可以按照所述目标VPN隧道的报文处理策略,对所述内层数据进行加密和封装后,得到完成处理的外网数据报文。这样,当前的VPN实例对于接收到的外网数据报文,可以由两张虚拟网卡分别进行解封装、解密以及加密、封装的流程,从而得到完成处理的外网数据报文,该完成处理的外网数据报文可以被发送至所述SD-WAN控制器下达的路由策略指向的OpenVPN服务器处。具体地,所述目标虚拟网卡可以将所述完成处理的外网数据报文从所述外网接口标识表征的外网接口发出,并通过所述目标VPN隧道到达对应的OpenVPN服务器处。
这样,每个OpenVPN服务器都可以通过统一的外网接口来接收或者发出外网数据报文,而在每个OpenVPN服务器内,可以通过创建的虚拟网卡,对外网数据报文进行处理和转发,从而能够根据SD-WAN服务器下达的路由策略,动态地更改外网数据报文的传输路径。
在一个实施方式中,VPN实例还可以动态地对用户进行删除或者添加。具体地,若针对所述VPN实例添加新的用户,可以在所述VPN实例的配置文件中添加所述新的用户的连接信息,所述新的用户的连接信息用于在所述VPN实例中创建所述新的用户的虚拟网卡。若接收到指向所述VPN实例中已存在的目标用户的删除指令,可以将所述目标用户的虚拟网卡从所述VPN实例中删除,并从所述VPN实例的配置文件中将所述目标用户的连接信息删除。
本申请还提供一种OpenVPN服务器,OpenVPN服务器中启用一个VPN实例,所述VPN实例的配置文件中至少包括用户的一份或者多份连接信息。请参阅图4,所述OpenVPN服务器包括:
虚拟网卡创建单元,用于加载所述VPN实例的配置文件,并基于所述配置文件,在所述VPN实例中针对所述用户创建与所述连接信息的数量相匹配的一个或者多个虚拟网卡;
VPN隧道建立单元,用于基于所述一份或者多份连接信息,与其它的一个或者多个OpenVPN服务器分别建立VPN隧道,其中,所述虚拟网卡与创建的所述VPN隧道一一绑定;
路由单元,用于接收与所述用户相关的外网数据报文,以及接收SD-WAN控制器针对所述外网数据报文下发的路由策略,并在创建的所述一个或者多个虚拟网卡中确定所述路由策略指向的目标虚拟网卡;
报文传输单元,用于通过所述目标虚拟网卡对所述外网数据报文进行处理后,将完成处理的外网数据报文通过所述目标虚拟网卡绑定的目标VPN隧道发送至对应的OpenVPN服务器处。
在一个实施方式中,所述外网数据报文中包括VPN头部信息,所述VPN头部信息中至少包括用于填写隧道标识的指定字段;
相应地,所述报文传输单元包括:
字段识别模块,用于从所述外网数据报文的VPN头部信息中提取出所述指定字段,并确定所述指定字段内的隧道标识指向的VPN隧道;
报文处理模块,用于获取所述隧道标识指向的VPN隧道的报文处理策略,并按照所述报文处理策略对所述外网数据报文进行处理,得到所述外网数据报文中的内层数据。
在一个实施方式中,所述报文传输单元还包括:
内层数据传输模块,用于将所述内层数据发送至所述目标虚拟网卡处,并获取所述目标虚拟网卡绑定的目标VPN隧道的报文处理策略;
内层数据处理模块,用于按照所述目标VPN隧道的报文处理策略,对所述内层数据进行加密和封装后,得到完成处理的外网数据报文。
在一个实施方式中,所述VPN实例的配置文件中还包括所述OpenVPN服务器的外网接口标识;
相应地,所述报文传输单元还包括:
外网接口发送模块,用于将所述完成处理的外网数据报文从所述外网接口标识表征的外网接口发出,并通过所述目标VPN隧道到达对应的OpenVPN服务器处。
在一个实施方式中,所述OpenVPN服务器还包括:
资源隔离单元,用于若所述用户的数量为至少两个,在所述VPN实例中针对各个所述用户创建对应的虚拟网卡后,在所述VPN实例中创建与所述用户的数量相等的若干个网络隔离空间,并将各个所述用户的虚拟网卡添加至所述若干个网络隔离空间中,以使得同一个用户的虚拟网卡位于相同的网络隔离空间中,并且同一个网络隔离空间内,仅存在一个用户的一个或者多个虚拟网卡。
请参阅图5,本申请还提供一种OpenVPN服务器,所述OpenVPN服务器包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,实现上述的数据传输方法。
请参阅图6,在本申请中,上述实施例中的技术方案可以应用于如图6所示的计算机终端10上。计算机终端10可以包括一个或多个(图中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输模块106。本领域普通技术人员可以理解,图6所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图6中所示更多或者更少的组件,或者具有与图6所示不同的配置。
存储器104可用于存储应用软件的软件程序以及模块,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
由上可见,本申请提供的技术方案,在同一个OpenVPN服务器中,只需启用一个VPN实例。在该VPN实例的配置文件中,可以包括用户的一份或者多份连接信息。这一份或者多份连接信息,可以对应着一个或者多个虚拟网卡。这样,根据所述连接信息,便可以在VPN实例中创建对应的虚拟网卡。这些虚拟网卡可以用于与其它不同的OpenVPN服务器进行数据交互。具体地,当前的OpenVPN服务器可以根据上述的连接信息,与其它的一个或者多个OpenVPN进行通信协商,从而与各个其它的OpenVPN服务器分别建立VPN隧道。上述创建的虚拟网卡,与建立的VPN隧道可以一一绑定。这样,当OpenVPN服务器接收到用户的外网数据报文后,可以根据SD-WAN控制器实时下发的路由策略,确定出该路由策略指向的目标虚拟网卡。然后,通过该目标虚拟网卡对外网数据报文进行处理后,便可以通过该目标虚拟网卡绑定的目标VPN隧道,将完成处理的外网数据报文发送至对应的其它OpenVPN服务器处。这样,通过在一个VPN实例中创建多个虚拟网卡,并将虚拟网卡与VPN隧道进行绑定的方式,可以对动态下达的路由策略进行处理,并且可以按照动态下达的路由策略对外网数据报文进行转发。由此可见,本申请提供的技术方案,并不需要启用多个VPN实例,从而在减少OpenVPN服务器整体负载的情况下,还能实现外网数据报文的动态路由。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (15)
1.一种SD-WAN系统中OpenVPN服务器之间的数据传输方法,其特征在于,OpenVPN服务器中启用一个VPN实例,所述VPN实例的配置文件中至少包括用户的一份或者多份连接信息;所述方法包括:
加载所述VPN实例的配置文件,并基于所述配置文件,在所述VPN实例中针对所述用户创建与所述连接信息的数量相匹配的一个或者多个虚拟网卡;
基于所述一份或者多份连接信息,与其它的一个或者多个OpenVPN服务器分别建立VPN隧道,其中,所述虚拟网卡与创建的所述VPN隧道一一绑定;
接收与所述用户相关的外网数据报文,以及接收SD-WAN控制器针对所述外网数据报文下发的路由策略,并在创建的所述一个或者多个虚拟网卡中确定所述路由策略指向的目标虚拟网卡;
通过所述目标虚拟网卡对所述外网数据报文进行处理后,将完成处理的外网数据报文通过所述目标虚拟网卡绑定的目标VPN隧道发送至对应的OpenVPN服务器处。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述OpenVPN服务器启动后,创建多个工作线程,以通过所述多个工作线程,并行处理所述至少两个用户的数据报文;其中,所述多个工作线程,共享所述用户的连接信息和所述用户的客户端的连接实例之间的关联关系。
3.根据权利要求1所述的方法,其特征在于,所述连接信息中包括用户的用户标识、用户的路由策略以及OpenVPN服务器的连接模式;其中,不同用户的用户标识互不相同,所述OpenVPN服务器的连接模式包括tun模式。
4.根据权利要求1所述的方法,其特征在于,所述外网数据报文中包括VPN头部信息,所述VPN头部信息中至少包括用于填写隧道标识的指定字段;
相应地,在接收与所述用户相关的外网数据报文之后,所述方法还包括:
从所述外网数据报文的VPN头部信息中提取出所述指定字段,并确定所述指定字段内的隧道标识指向的VPN隧道;
获取所述隧道标识指向的VPN隧道的报文处理策略,并按照所述报文处理策略对所述外网数据报文进行处理,得到所述外网数据报文中的内层数据。
5.根据权利要求4所述的方法,其特征在于,按照所述报文处理策略对所述外网数据报文进行处理包括:
对所述外网数据报文进行解封装,并提取解封装后的外网数据报文中经过加密的内层数据;
通过所述隧道标识指向的VPN隧道的解密秘钥,对所述经过加密的内层数据进行解密,以还原所述内层数据的内容。
6.根据权利要求4所述的方法,其特征在于,通过所述目标虚拟网卡对所述外网数据报文进行处理包括:
根据所述下发的路由策略将所述内层数据发送至所述目标虚拟网卡处,并获取所述目标虚拟网卡绑定的目标VPN隧道的报文处理策略;
按照所述目标VPN隧道的报文处理策略,对所述内层数据进行加密和封装后,得到完成处理的外网数据报文。
7.根据权利要求1或6所述的方法,其特征在于,所述VPN实例的配置文件中还包括所述OpenVPN服务器的外网接口标识;
相应地,将完成处理的外网数据报文通过所述目标虚拟网卡绑定的目标VPN隧道发送至对应的OpenVPN服务器处包括:
将所述完成处理的外网数据报文从所述外网接口标识表征的外网接口发出,并通过所述目标VPN隧道到达对应的OpenVPN服务器处。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若针对所述VPN实例添加新的用户,在所述VPN实例的配置文件中添加所述新的用户的连接信息,所述新的用户的连接信息用于在所述VPN实例中创建所述新的用户的虚拟网卡;
若接收到指向所述VPN实例中已存在的目标用户的删除指令,将所述目标用户的虚拟网卡从所述VPN实例中删除,并从所述VPN实例的配置文件中将所述目标用户的连接信息删除。
9.根据权利要求1所述的方法,其特征在于,若所述用户的数量为至少两个,在所述VPN实例中针对各个所述用户创建对应的虚拟网卡后,所述方法还包括:
在所述VPN实例中创建与所述用户的数量相等的若干个网络隔离空间,并将各个所述用户的虚拟网卡添加至所述若干个网络隔离空间中,以使得同一个用户的虚拟网卡位于相同的网络隔离空间中,并且同一个网络隔离空间内,仅存在一个用户的一个或者多个虚拟网卡。
10.一种OpenVPN服务器,其特征在于,OpenVPN服务器中启用一个VPN实例,所述VPN实例的配置文件中至少包括用户的一份或者多份连接信息;所述OpenVPN服务器包括:
虚拟网卡创建单元,用于加载所述VPN实例的配置文件,并基于所述配置文件,在所述VPN实例中针对所述用户创建与所述连接信息的数量相匹配的一个或者多个虚拟网卡;
VPN隧道建立单元,用于基于所述一份或者多份连接信息,与其它的一个或者多个OpenVPN服务器分别建立VPN隧道,其中,所述虚拟网卡与创建的所述VPN隧道一一绑定;
路由单元,用于接收与所述用户相关的外网数据报文,以及接收SD-WAN控制器针对所述外网数据报文下发的路由策略,并在创建的所述一个或者多个虚拟网卡中确定所述路由策略指向的目标虚拟网卡;
报文传输单元,用于通过所述目标虚拟网卡对所述外网数据报文进行处理后,将完成处理的外网数据报文通过所述目标虚拟网卡绑定的目标VPN隧道发送至对应的OpenVPN服务器处。
11.根据权利要求10所述的OpenVPN服务器,其特征在于,所述外网数据报文中包括VPN头部信息,所述VPN头部信息中至少包括用于填写隧道标识的指定字段;
相应地,所述报文传输单元包括:
字段识别模块,用于从所述外网数据报文的VPN头部信息中提取出所述指定字段,并确定所述指定字段内的隧道标识指向的VPN隧道;
报文处理模块,用于获取所述隧道标识指向的VPN隧道的报文处理策略,并按照所述报文处理策略对所述外网数据报文进行处理,得到所述外网数据报文中的内层数据。
12.根据权利要求11所述的OpenVPN服务器,其特征在于,所述报文传输单元还包括:
内层数据传输模块,用于根据所述下发的路由策略将所述内层数据发送至所述目标虚拟网卡处,并获取所述目标虚拟网卡绑定的目标VPN隧道的报文处理策略;
内层数据处理模块,用于按照所述目标VPN隧道的报文处理策略,对所述内层数据进行加密和封装后,得到完成处理的外网数据报文。
13.根据权利要求10或12所述的OpenVPN服务器,其特征在于,所述VPN实例的配置文件中还包括所述OpenVPN服务器的外网接口标识;
相应地,所述报文传输单元还包括:
外网接口发送模块,用于将所述完成处理的外网数据报文从所述外网接口标识表征的外网接口发出,并通过所述目标VPN隧道到达对应的OpenVPN服务器处。
14.根据权利要求10所述的OpenVPN服务器,其特征在于,所述OpenVPN服务器还包括:
资源隔离单元,用于若所述用户的数量为至少两个,在所述VPN实例中针对各个所述用户创建对应的虚拟网卡后,在所述VPN实例中创建与所述用户的数量相等的若干个网络隔离空间,并将各个所述用户的虚拟网卡添加至所述若干个网络隔离空间中,以使得同一个用户的虚拟网卡位于相同的网络隔离空间中,并且同一个网络隔离空间内,仅存在一个用户的一个或者多个虚拟网卡。
15.一种OpenVPN服务器,其特征在于,所述OpenVPN服务器包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,实现如权利要求1至9中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910273226.1A CN111786869B (zh) | 2019-04-04 | 2019-04-04 | 一种服务器之间的数据传输方法及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910273226.1A CN111786869B (zh) | 2019-04-04 | 2019-04-04 | 一种服务器之间的数据传输方法及服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111786869A true CN111786869A (zh) | 2020-10-16 |
CN111786869B CN111786869B (zh) | 2022-04-22 |
Family
ID=72755542
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910273226.1A Active CN111786869B (zh) | 2019-04-04 | 2019-04-04 | 一种服务器之间的数据传输方法及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111786869B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114338278A (zh) * | 2021-12-29 | 2022-04-12 | 北京天融信网络安全技术有限公司 | 隧道通信方法、装置、设备及介质 |
CN114422214A (zh) * | 2021-12-31 | 2022-04-29 | 深信服科技股份有限公司 | 一种访问信息处理方法、装置、设备及计算机存储介质 |
CN115001977A (zh) * | 2022-04-11 | 2022-09-02 | 北京华耀科技有限公司 | 建立虚拟专网的方法、系统及虚拟专网客户端设备 |
CN115567211A (zh) * | 2022-10-10 | 2023-01-03 | 广州大学 | 多机器人plc控制系统加密通信方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101668022A (zh) * | 2009-09-14 | 2010-03-10 | 陈博东 | 一种建立在虚拟机上的虚拟网络隔离系统及实现方法 |
US20130315242A1 (en) * | 2012-05-22 | 2013-11-28 | Huawei Technologies Co., Ltd. | Network Communication Method and Device |
CN104579879A (zh) * | 2014-12-05 | 2015-04-29 | 上海斐讯数据通信技术有限公司 | 一种虚拟专用网络通信系统、连接方法及数据包传输方法 |
CN108111619A (zh) * | 2017-12-28 | 2018-06-01 | 西安抱朴通信科技有限公司 | 一种数据分流方法及装置、计算机设备、存储介质 |
CN108964880A (zh) * | 2018-10-10 | 2018-12-07 | 深信服科技股份有限公司 | 一种数据传输方法及装置 |
-
2019
- 2019-04-04 CN CN201910273226.1A patent/CN111786869B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101668022A (zh) * | 2009-09-14 | 2010-03-10 | 陈博东 | 一种建立在虚拟机上的虚拟网络隔离系统及实现方法 |
US20130315242A1 (en) * | 2012-05-22 | 2013-11-28 | Huawei Technologies Co., Ltd. | Network Communication Method and Device |
CN104579879A (zh) * | 2014-12-05 | 2015-04-29 | 上海斐讯数据通信技术有限公司 | 一种虚拟专用网络通信系统、连接方法及数据包传输方法 |
CN108111619A (zh) * | 2017-12-28 | 2018-06-01 | 西安抱朴通信科技有限公司 | 一种数据分流方法及装置、计算机设备、存储介质 |
CN108964880A (zh) * | 2018-10-10 | 2018-12-07 | 深信服科技股份有限公司 | 一种数据传输方法及装置 |
Non-Patent Citations (2)
Title |
---|
DI CHANG-AN等: ""Design of Fault Diagnosis Instrument for Speed Control System Based on Virtual Instrument"", 《 2010 FIRST ACIS INTERNATIONAL SYMPOSIUM ON CRYPTOGRAPHY, AND NETWORK SECURITY, DATA MINING AND KNOWLEDGE DISCOVERY, E-COMMERCE AND ITS APPLICATIONS, AND EMBEDDED SYSTEMS》 * |
诸晔等: ""基于OpenVPN的虚拟专用网关键技术研究与实现"", 《计算机安全》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114338278A (zh) * | 2021-12-29 | 2022-04-12 | 北京天融信网络安全技术有限公司 | 隧道通信方法、装置、设备及介质 |
CN114422214A (zh) * | 2021-12-31 | 2022-04-29 | 深信服科技股份有限公司 | 一种访问信息处理方法、装置、设备及计算机存储介质 |
CN114422214B (zh) * | 2021-12-31 | 2023-12-29 | 深信服科技股份有限公司 | 一种访问信息处理方法、装置、设备及计算机存储介质 |
CN115001977A (zh) * | 2022-04-11 | 2022-09-02 | 北京华耀科技有限公司 | 建立虚拟专网的方法、系统及虚拟专网客户端设备 |
CN115001977B (zh) * | 2022-04-11 | 2024-02-13 | 北京华耀科技有限公司 | 建立虚拟专网的方法、系统及虚拟专网客户端设备 |
CN115567211A (zh) * | 2022-10-10 | 2023-01-03 | 广州大学 | 多机器人plc控制系统加密通信方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111786869B (zh) | 2022-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111786869B (zh) | 一种服务器之间的数据传输方法及服务器 | |
CN111786867B (zh) | 一种数据传输方法及服务器 | |
CN109450852B (zh) | 网络通信加密解密方法及电子设备 | |
CN106376003B (zh) | 检测无线局域网连接及无线局域网数据发送方法及其装置 | |
US9967738B2 (en) | Methods and arrangements for enabling data transmission between a mobile device and a static destination address | |
US7917939B2 (en) | IPSec processing device, network system, and IPSec processing program | |
EP3720100A1 (en) | Service request processing method and device | |
CN106878199B (zh) | 一种接入信息的配置方法和装置 | |
CN111786868B (zh) | 服务器之间的数据传输方法及strongswan服务器 | |
CN103580980A (zh) | 虚拟网络自动发现和自动配置的方法及其装置 | |
US11870701B2 (en) | Data transmission method, switch, and site | |
CA2935435A1 (en) | Secure network communication | |
US11418951B2 (en) | Method for identifying encrypted data stream, device, storage medium and system | |
CN107135190B (zh) | 基于传输层安全连接的数据流量归属识别方法及装置 | |
CN107181605B (zh) | 报文检测方法及系统、内容提取装置、流量匹配装置 | |
CN111786870B (zh) | 数据传输方法及strongswan服务器 | |
EP4287550A1 (en) | Packet processing method, client end device, server end device, and computer-readable medium | |
CN103746768A (zh) | 一种数据包的识别方法及设备 | |
CN111835613B (zh) | 一种vpn服务器的数据传输方法及vpn服务器 | |
CN107809387B (zh) | 一种报文传输的方法、设备及网络系统 | |
CN115225414B (zh) | 基于ipsec的加密策略匹配方法、装置及通信系统 | |
CN116566763A (zh) | 网络系统、通信方法、网络节点和存储介质 | |
CN111669310B (zh) | 一种pptp vpn中网络隔离空间的批量处理方法及pptp vpn服务器 | |
CN105610599B (zh) | 用户数据管理方法及装置 | |
CN109194558B (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 |