CN111049721A - 一种OpenVPN集群及其构建方法、通信方法、系统 - Google Patents
一种OpenVPN集群及其构建方法、通信方法、系统 Download PDFInfo
- Publication number
- CN111049721A CN111049721A CN201911276596.7A CN201911276596A CN111049721A CN 111049721 A CN111049721 A CN 111049721A CN 201911276596 A CN201911276596 A CN 201911276596A CN 111049721 A CN111049721 A CN 111049721A
- Authority
- CN
- China
- Prior art keywords
- vpn
- routing
- gateway
- client
- cluster
- 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
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
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
本发明属于通信技术领域,公开了一种OpenVPN集群,包括多个VPN实例,部分VPN实例与外设的网关通信连接,部分VPN实例与外设的客户端通信连接;所述OpenVPN集群内存储有路由规则和路由表,所述路由规则包括:网关之间以及网关下接的终端设备之间禁止通过VPN实例通信;所述路由表包括任意VPN实例之间的路由路径、客户端和对应的VPN实例之间的路由路径、网关和对应的VPN实例之间的路由路径;各VPN实例按照路由规则、路由表进行数据传输。该OpenVPN集群使客户端连接网关时不受网关数量限制、单一VPN实例的带宽限制,提升网络的稳定性以及性能,同时,本发明还提供一种该OpenVPN集群构建方法、基于该OpenVPN集群通信方法、基于该OpenVPN集群的系统。
Description
技术领域
本发明涉及通信技术领域,具体地说是一种OpenVPN集群及其构建方法、通信方法、系统。
背景技术
申请人成都卫士通信息产业股份有限公司于2014年提出了一项发明专利申请CN201410462379.8,公开了一种负载均衡的SSL VPN设备集群系统及其工作方法,所述系统包括一台作为主控节点的SSL VPN设备、若干作为工作节点的SSL VPN设备;所有SSL VPN设备中设置有组内同步模块、在主控节点SSL VPN设备中还设置有负载管理模块、地址应答器、数据分流器;所述集群统一对外提供一个全局设置的虚拟IP地址,并将该IP地址作为虚拟的单一SSL VPN设备的DNS解析地址;整个SSL VPN设备集群与网络节点及服务器连接。
在该方案中,主控节点用于使整个SSL VPN集群对外建立连接和对内负载均衡,为不同的数据流建立维护SSL安全连接并为客户端代理内部服务器功能的作用;主控节点自身也作为工作节点之一参与具体的数据流处理。
在其说明书中进一步说明了:所述主控节点为每个已分配的网络连接数据流根据源IP地址、目的IP地址、源传输层端口、目的传输层端口、传输层协议五元组建立哈希链表形式的连接状态表,指示该网络连接对应的数据流后续的数据所应该分配到的工作节点。
其具体的操作步骤为:
步骤1:所有SSL VPN设备集群设置各成员设备共享的虚拟IP地址;步骤2:利用组内同步模块在所有SSL VPN设备中选出主控节点;步骤3:每台SSL VPN设备的组内同步模块定期将本台设备的信息传递到主控节点和其他工作节点;步骤4:负载管理模块根据组内各SSL VPN设备安全连接处理能力和实际负载情况的不同进行数据负载的分配;步骤5:主控节点处理接收到的IP数据报文。
可以理解的,该主控节点实际上是起着对于各个SSL VPN负载调节控制者的角色。其并未改变SSL VPN需要同时连接网关设备、客户端的现实情况。
参考附图1,附图1为现有技术中OpenVPN的Server/Client配置模型在Internet上构建专属虚拟网络的示例。
该网络主要用于以下两种场景:
1、网关将采集的数据,通过专属虚拟网络上传到PC端;
2、PC端通过专属虚拟网络,使用ssh控制网关设备或者网关下的智能设备。
整个业务流程描述如下:
步骤1、AppforGateway(即网关管理平台)创建VPN分组(这里即表示一个OpenVPN服务实例)
步骤2、AppforGateway下发VPN服务连接信息
步骤3、网关设备连接VPN服务实例
步骤4、AppforSmartDevice连接VPN服务实例
步骤5、Laptop连接VPN服务实例
步骤6、完成专属虚拟网络构建
此时Laptop可以通过韧性虚拟网络访问网关设备以及网关设备下面的智能设备。智能设备可以通过专属虚拟网络上报设备状态给AppforSmartDevice。同样AppforSmartDevice也可以下发控制指令给SmartDevice
但由于OpenVPNServer是一个单线程的程序,单个VPNServer构建的专属虚拟网络会随着接入的网关(或者智能设备)越来越多,性能下降越来越快。具体缺点不足如下:
网关连接OpenVPNServer的耗时,无法平滑支撑网关和智能设备的扩充;
单个VPNServer所能承载的带宽有限,连接到VPNServer的网关和智能设备数量以及 AppServerforSmatDevice、Laptop都会分流带宽,导致应用场景受限。
申请人北电网络有限公司在2003年提出了一项发明专利申请CN 03819544.5,公开了一种布置方法和一种在运营商的运营商虚拟专用网络(VPN)中分层布置的光纤虚拟专用网络的系统。该系统具有分层虚拟专用网络,该网络被配置为分层网络中的每个VPN作为父或子附属于另一个VPN。每个子VPN有且只有一个父VPN,每个父VPN负责附属于它的子VPN的服务与连接。公开的分层光纤VPN系统在允许一个运营商的运营商向运营商的客户提供管理功能时特别有效。
在该方案中需要有分层的虚拟专用网络,即其将VPN分为子VPN和父VPN,子VPN 和父VPN在层级关系上是固定的,并且父VPN负责附属于它的子VPN的服务与连接,其并不能解决单个VPN实例上的带宽受限的问题。
本申请所要解决的技术问题是:如何降低VPN实例的带宽负担,使VPN系统在面对多个服务或客户端、众多终端设备时能够保持流畅的数据传输。
发明内容
本发明的目的在于提供一种OpenVPN集群,该OpenVPN集群使客户端连接网关时不受网关数量限制、单一VPN实例的带宽限制,提升网络的稳定性以及性能,同时,本发明还提供一种该OpenVPN集群构建方法、基于该OpenVPN集群通信方法、基于该OpenVPN集群的系统。
本发明的具体的技术方案为:一种OpenVPN集群,包括多个VPN实例,部分VPN实例与外设的网关通信连接,部分VPN实例与外设的客户端通信连接;
所述OpenVPN集群内存储有路由规则和路由表,所述路由规则包括:网关之间以及网关下接的终端设备之间禁止通过VPN实例通信;所述路由表包括任意VPN实例之间的路由路径、客户端和对应的VPN实例之间的路由路径、网关和对应的VPN实例之间的路由路径;
各VPN实例按照路由规则、路由表进行数据传输。
在上述OpenVPN集群中,所述多个VPN实例部署在一个宿主机或多个宿主机上;
同一宿主机上的VPN实例之间通过VPN实例的虚拟网卡进行数据传输;
不同宿主机上的VPN实例之间通过宿主机上的以太网卡进行数据传输。
在上述OpenVPN集群中,每一个与外设网关通信连接的VPN实例上连接一个或多个网关,所述网关下接一个或多个终端设备;
每一个与外设的客户端通信连接的VPN实例连接一个或多个客户端。
更为优选地,每一个与外设网关通信连接的VPN实例上连接多个网关,所述网关下接多个终端设备;每一个与外设的客户端通信连接的VPN实例连接一个客户端。
同时,本发明还公开了一种OpenVPN集群的构建方法,包括如下步骤:
步骤1:在一个或多个宿主机上创建多个VPN实例;部分VPN实例与外设的网关通信连接,部分VPN实例与外设的客户端通信连接;
步骤2:创建路由表并将路由表分发给宿主机,所述路由表包括任意VPN实例之间的路由路径、客户端和对应的VPN实例之间的路由路径、网关和对应的VPN实例之间的路由路径;
步骤3:设置路由规则并将路由规则分发给宿主机的iptables,所述路由规则包括:网关之间以及网关下接的终端设备之间禁止通过VPN实例通信、;
步骤1至步骤3完成后即完成了OpenVPN集群的构建,OpenVPN集群中的任意VPN实例根据收到的数据包中所包含的目标地址采用路由表和路由规则进行数据包的传输;所述目标地址为外设的网关下接的终端设备的IP地址或客户端的IP地址。
在上述OpenVPN集群的构建方法中,还包括步骤4;
步骤4:向OpenVPN集群增加VPN实例,并根据该VPN实例通信连接的对象更新路由表;
若该VPN实例通信连接客户端,则在路由表中增加该VPN实例和其他VPN实例之间的路由路径以及该VPN实例和客户端之间的路由路径;
若该VPN实例通信连接网关,则在该路由表中增加该VPN实例和其他VPN实例之间的路由路径以及该VPN实例和网关之间的路由路径。
此外,本发明还公开了一种基于OpenVPN集群的通信方法,所述方法涉及如上所述VPN 集群、网关、网关下接的终端设备、客户端;所述网关、客户端均配置有网关、客户端与对应的VPN实例的路由路径;
所述方法具体为:
步骤10:客户端或网关将数据包按照路由路径发送给对应的VPN实例;所述数据包包括源地址和目标地址;
步骤20:所述VPN实例解析数据包并按照路由表和路由规则将数据包发送到目标地址对应的VPN实例,并通过该VPN实例发送给目标地址所在的客户端或网关、终端设备。
在上述的基于OpenVPN集群的通信方法中,还包括步骤30;
步骤30:向VPN集群内增加VPN实例,并根据该VPN实例通信连接的对象更新路由表;
若该VPN实例通信连接客户端,则在路由表中增加该VPN实例和其他VPN实例之间的路由路径以及该VPN实例和客户端之间的路由路径;
若该VPN实例通信连接网关,则在该路由表中增加该VPN实例和其他VPN实例之间的路由路径以及该VPN实例和网关之间的路由路径。
最后,本发明还公开了一种基于OpenVPN集群的系统,包括如上所述VPN集群、网关、网关下接的终端设备、客户端、网关管理平台;
所述网关管理平台包括如下模块:
VPN实例生成模块:用于在一个或多个宿主机上创建多个VPN实例;
路由表生成模块:创建路由表并将路由表分发给宿主机;
将包含客户端和对应的VPN实例之间的路由路径的路由表分发给对应的客户端;
将包含网关和对应的VPN实例之间的路由路径的路由表分发给对应的网关;
路由规则生成模块:用于设置路由规则并将路由规则分发给宿主机的iptables,所述路由规则包括:网关之间以及网关下接的终端设备之间禁止通过VPN实例通信;
所述终端设备和客户端将包含目标地址和源地址的数据包通过网关、VPN集群发送到目标地址所对应的客户端或通过VPN集群、网关发送到目标地址对应的终端设备。
在上述的基于OpenVPN集群的系统中,所述网关管理平台还包括:
VPN实例管理模块:用于向OpenVPN集群增加VPN实例,并根据该VPN实例通信连接的对象更新路由表;
若该VPN实例通信连接客户端,则在该VPN实例所在的宿主机的路由表中增加该VPN 实例和其他VPN实例之间的路由路径以及该VPN实例和客户端之间的路由路径,并在该客户端配置VPN实例和客户端之间的路由路径;
若该VPN实例通信连接网关,则在该VPN实例和客户端之间的路由路径路由表中增加该VPN实例和其他VPN实例之间的路由路径以及该VPN实例和网关之间的路由路径,并在该网关配置VPN实例和网关之间的路由路径。
在本发明中,所述VPN集群中的VPN实例为VPN服务器、物理VPN、软件VPN、集成在路由器或防火墙上的含有VPN功能的硬件设备;
所述客户端为PC端或移动终端。
与现有技术相比,本发明的有益效果在于:
本发明创建多个VPN服务实例,并逻辑上将多个VPN服务实例视为同一分组(即同一专属虚拟网络)。网关设备按策略连接到具体分组中某一个VPN服务实例。一方面,多个VPN 服务实例可以解决OpenVPN单线程只能使用单核CPU问题。同时多个OpenVPN实例组成的集群可以满足成等上万的网关设备的接入需求。
当现有的集群无法满足网关设备接入需求时,可以继续往集群(虚拟分组)里添加OpenVPN实例,再按一定的策略迁移网关设备到新的OpenVPN实例,使整个集群达到均衡。
创建客户端如App for Smart Device或者Laptop专属的VPN服务实例,解决服务与设备共用VPN服务实例,平均分配带宽问题。
分离Server与Device使用的VPN服务实例,使得多个大流量智能设备汇集到服务时,避免出现带宽不足(分离后只会受限一真实网络带宽)的情况。
附图说明
图1为本背景技术中的现有技术的示意图;
图2为本发明实施例1的结构框图;
图3为本发明实施例1的流程框图;
图4为本发明实施例2的结构框图。
具体实施方式
下面结合具体实施方式,对本发明的技术方案作进一步的详细说明,但不构成对本发明的任何限制。
实施例1
如图2所示,一种基于OpenVPN集群的通信方法,所述方法涉及VPN集群、网关、网关下接的终端设备、客户端,每一个与网关通信连接的VPN实例上连接一个或多个网关,所述网关下接一个或多个终端设备;每一个与客户端通信优选连接的VPN实例连接一个客户端;这样即使存在多个服务所涉及的多个客户端,其无需连接在同一VPN实例上,可克服传统技术中多个客户端连接同一VPN实例导致的带宽严重受限的问题。
VPN集群由一网关管理平台创建,本VPN集群包括多个VPN实例,部分VPN实例与外设的网关通信连接,部分VPN实例与外设的客户端通信连接;
多个VPN实例在实际应用中可在一个宿主机上建立,也可以分布在多个宿主机中。
网关管理平台的主要作用在于:建立VPN实例、建立VPN集群内部的VPN实例的路由规则、路由表,同时也建立VPN实例和该VPN实例所连接的客户端或网关的路由表;将对应的路由表分发给对应的宿主机、网关和客户端。
下面以具体的代码作为例子来表示路由规则和路由表。
参考图2,图2示出了整个通信系统,其包含两个VPN集群,分别为VPN集群100和VPN集群200;其中VPN集群100虚拟分组中VPN服务实例使用的虚拟IP网段在 10.9.64.0/18。在本实施例中,着重讨论VPN集群100的相关路由规则和路由表的建立。
图2中,VPN集群100的VPN实例是分布在两个宿主机上的,分别为宿主机1和宿主机2,各自的IP地址为10.10.1.85和10.10.1.86。
宿主机1上的两个VPN实例的IP地址为10.9.96.1,10.9.80.1,宿主机2上的VPN实例的IP地址为10.9.64.1,各VPN实例的IP地址均为虚拟IP,每个VPN实例均设有虚拟网卡tun。两个宿主机上设有以太网卡eth,宿主机之间通过以太网卡进行通信。
任意VPN实例之间的通信的路由表的路由路径的代码为:
在宿主机10.10.1.85上的路由路径的代码表示为:
[root@localhost~]#ip route list table 100
#数据包发送10.9.64.0/20网段,由eth0网卡出去,经过网关10.10.1.86;
10.9.64.0/20via 10.10.1.86dev eth0
#数据发送到10.9.80.0/20,由本地网卡tun1出去;
10.9.80.0/20dev tun1 scope link
#数据发送到10.9.96.0/20,由本地网卡tun0出去;
10.9.96.0/20dev tun0 scope link
宿主机10.10.1.86上的路由路径的代码表示为:
[root@localhost~]#ip route list table 100
#数据发送到10.9.64.0/20,由本地网上tun0出去;
10.9.64.0/20dev tun0 scope link
#数据包发送10.9.80.0/20网段,由eth0网卡出去,经过网关10.10.1.85;
10.9.80.0/20via 10.10.1.85dev eth0
#数据包发送10.9.96.0/20网段,由eth0网卡出去,经过网关10.10.1.85;
10.9.96.0/20via 10.10.1.85dev eth0
上述的路由路径的代码规定了同一宿主机内部的VPN实例之间数据包传输的路径、不同宿主机之间的VPN实例之间的数据包的传输路径。
此外,网关管理平台同时规定了以下路由规则:
路由规则1:规定VPN实例选择正确的路由表;
代码如下:
[root@localhost~]#ip rule list table 100
#数据包的源地址为10.9.64.0/18网段,目标地址为10.9.64.0/18网段,使用路由表100;
32765:from10.9.64.0/18to 10.9.64.0/18lookup 100
路由规则2:宿主机的数据包的转发功能开启;
修改宿主机系统配置,允许转发,并添加如下的Iptables转发规则,代码如下:
临时个性ip_forward====>echo 1>/proc/sys/net/ipv4/ip_forward或者sysctl-w net.ipv4.ip_forward=1
永久个性ip_forward====>在/etc/sysctl.conf文件中增加一行net.ipv4.ip_forward=1
增加默认转发规则(由于FORWARD链默认未匹配的消息,拒绝转发,需要添加tun网上允许转发)
#接受所有tun+进出包
iptables-AFORWARD-i tun+-j ACCEPT2>/dev/null
iptables-AFORWARD-o tun+-j ACCEPT2>/dev/null
路由规则3:网关之间以及网关下接的终端设备之间禁止通过VPN实例通信;本路由规则3应当添加在路由规则2之前。
禁用VPN Server for Device实例之前相互访问(可选)
在宿主机上添加如下转发禁止规则:
宿主机10.10.1.85
#将所有通过tun开头网卡进入,源地址10.9.96.0/20,目标地址为10.9.64.0/20数据包丢弃
iptables-IFORWARD14-i tun+-s 10.9.96.0/20-d 10.9.64.0/20-j DROP2>/dev/null
#将所有通过tun开头网卡出去,源地址192.168.0.0/16,目标地址为10.9.96.0/20数据包丢弃
iptables-IFORWARD14-o tun+-s 192.168.0.0/16-d 10.9.96/20-j DROP2>/dev/null
宿主机10.10.1.86
#将所有通过tun开头网卡出去,源地址10.9.64.0/20,目标地址为10.9.96.0/20数据包丢弃
iptables-IFORWARD14-i tun+-s 10.9.64.0/20-d 10.9.96.0/20-j DROP2>/dev/null
#将所有通过tun开头网卡出去,源地址192.168.0.0/16,目标地址为10.9.64.0/20数据包丢弃
iptables-IFORWARD14-o tun+-s 192.168.0.0/16-d 10.9.64.0/20-j DROP2>/dev/null
所述网关、客户端均配置有网关、客户端与对应的VPN实例的路由路径;
通过上述的路由表100和路由规则,可以得到以下数据包转发的规律:
1、VPN集群内部的VPN实例之间可通过虚拟网卡tun和以太网卡eth按照规定的路径进行通信;
2、在VPN集群内的VPN实例采用该路由表通信;
3、来自于网关、网关下接的终端设备的数据包不能通过任意一个VPN实例转发到其他网关、网关下接的终端设备,只能通过VPN实例转发到客户端所对应的VPN实例;
4、数据包转发功能在宿主机上开启,即通过上述的ip_forward参数以及在iptables里添加tun+网卡匹配规则来按需转发。
上述的配置是配置给各宿主机的,各VPN实例根据宿主机存储的路由表以及宿主机的 iptables中的路由规则进行VPN集群内的数据包的传输。
完成上述步骤还没有实现客户端和网关之间的数据链路的打通,还需网关管理平台进行下述操作:
分别对VPN Server下面的网关或者PC客户端添加虚拟分组路由:
#发往10.9.64.0/18的数据包,由tun0出去
10.9.64.00.0.0.0255.255.192.0U000 tun0
此时;客户端、网关都配置了与对应的VPN实例之间的路由路径。
客户端10.9.80.128即可以访问网关10.9.96.129和10.9.64.130。
最后,在客户端、VPN集群配置下述相关路由信息即可实现对于网关下接的终端设备的数据通信:
1.在客户端(10.9.80.128)添加192.168.0.0/16网段的路由(目前假设网关下面所有设备的网段都是192.168.0.0/16,但同一虚拟分组的网关下面设备网段是不会交叉或者重复的。下面代码脚本假设有两个网关,其下面的设备网段分别为192.168.0.0/27,192.168.0.32/27。
#发往192.168.0.0/16的数据包,由tun0出去
192.168.0.010.9.80.1255.255.0.0UG000 tun0
2.在宿主机上该VPN虚拟分组添加DHCP网段路由,即192.168.0.0网段对应的VPNServer实例
2.1在10.10.1.85主机上添加192.168网段路由和策略规则
[root@localhost~]#ip route list table 100
#数据包发送10.9.64.0/20网段,由eth0网卡出去,经过网关10.10.1.86
10.9.64.0/20via 10.10.1.86dev eth0
#数据发送到10.9.80.0/20,由本地网卡tun1出去
10.9.80.0/20dev tun1 scope link
#数据发送到10.9.96.0/20,由本地网卡tun0出去
10.9.96.0/20dev tun0 scope link
#数据包发送192.168.0.0/27网段,由tun0网卡出去,经过网关10.9.96.1
192.168.0.0/27via 10.9.96.1dev tun0
#数据包发送192.168.0.32/27网段,由eth0网卡出去,经过网关10.10.1.86
192.168.0.32/27via 10.10.1.86dev eth0
[root@localhost~]#ip rule list table 100
#数据包的源地址为192.168.0.0/16网段,目标地址为10.9.64.0/18网段,使用路由表100
32763:from192.168.0.0/16to 10.9.64.0/18lookup 100
#数据包的源地址为10.9.64.0/18网段,目标地址为192.168.0.0/16网段,使用路由表100
32764:from10.9.64.0/18to 192.168.0.0/16lookup 100
#数据包的源地址为10.9.64.0/18网段,目标地址为10.9.64.0/18网段,使用路由表100
32765:from10.9.64.0/18to 10.9.64.0/18lookup 100
2.1在10.10.1.86主机上添加192.168网段路由和策略规则
[root@localhost~]#ip route list table 100
#数据发送到10.9.64.0/20,由本地网上tun0出去
10.9.64.0/20dev tun0 scope link
#数据包发送10.9.80.0/20网段,由eth0网卡出去,经过网关10.10.1.85
10.9.80.0/20via 10.10.1.85dev eth0
#数据包发送10.9.96.0/20网段,由eth0网卡出去,经过网关10.10.1.85
10.9.96.0/20via 10.10.1.85dev eth0
#数据包发送192.168.0.32/27网段,由tun0网卡出去,经过网关10.9.64.1
192.168.0.32/27via 10.9.64.1dev tun0
[root@localhost~]#ip rule list table 100
#数据包的源地址为192.168.0.0/16网段,目标地址为10.9.64.0/18网段,使用路由表100
32763:from192.168.0.0/16to 10.9.64.0/18lookup 100
#数据包的源地址为10.9.64.0/18网段,目标地址为192.168.0.0/16网段,使用路由表100
32764:from10.9.64.0/18to 192.168.0.0/16lookup 100
#数据包的源地址为10.9.64.0/18网段,目标地址为10.9.64.0/18网段,使用路由表100
32765:from10.9.64.0/18to 10.9.64.0/18lookup 100。
上述的代码规定了不同的目标地址和源地址的路由路径,该路由路径涉及客户端将包含该目标地址的数据包从哪个VPN实例发出以及VPN集群对于数据包中所包含的源地址和目标地址的具体路由路径。
在上述的描述中,我们应当做如下限定:
1.网关下的子网可以通讯(设备子网和控制端子网),前提条件如下:
1)设备子网下的IP可以在虚拟分组里唯一即可;
2)控制子网下的IP段必须在整个RVPN服务中心唯一;
2.控制子网下的IP段不限制,即不同虚拟分组,可以共用IP段;
1)需要在网关侧做NAT,将子网地址映射成网关地址,通过网关地址来确认唯一虚拟分组。
通过网关管理平台进行的上述操作可以得知:
网关管理平台通过向网关、VPN集群、客户端配置相应的路由表,并且为VPN集群内部的VPN实例配置路由规则,可以实现网关下接终端设备和客户端之间的通信连接,终端设备、客户端所发送的数据包必须包含源地址和目标地址的IP。
同时,上述的网关管理平台还可以进行如下操作:
当需要增加终端设备时,且VPN集群内的各VPN实例的带宽均饱和,网关管理平台还需要建立新的VPN实例,并且在路由表中增加该VPN实例和其他VPN实例之间的路由路径以及该VPN实例和终端设备所连接的网关之间的路由路径;该VPN实例依然按照上述的路由规则进行路由。
当有新的服务及客户端加入时,且VPN集群内的各VPN实例的带宽均饱和,网关管理平台还需要建立新的VPN实例,并且在路由表中增加该VPN实例和其他VPN实例之间的路由路径以及该VPN实例和客户端之间的路由路径;该VPN实例依然按照上述的路由规则进行路由。
其可以平滑支撑网关、智能设备、客户端的扩充。
参考图3,所述方法具体为:
步骤10:客户端或网关将数据包按照路由路径发送给对应的VPN实例;所述数据包包括源地址和目标地址;
如果数据包由客户端10.9.80.128发出,其目标地址为192.168.0.0/16网段,数据包要发送到VPN集群,通过VPN实例10.9.80.1的tun0口发出;
如果数据包由网关10.9.96.129发出,网关和下接设备终端属于同一子网,数据包中包含的目标地址为10.9.64.0/18,数据包要发送到VPN集群,通过VPN实例10.9.96.1的tun0口发出。
步骤20:所述VPN实例解析数据包并按照路由表和路由规则将数据包发送到目标地址对应的VPN实例,并通过该VPN实例发送给目标地址所在的客户端或网关、终端设备。
当数据包到达对应的VPN实例后,VPN实例可以解析数据包中的源地址和目标地址,根据数据包中的源地址和目标地址,通过VPN实例进行转发,然后最终到达目标地址所在的客户端或网关、终端设备。
如果数据包由客户端10.9.80.128发出,其目标地址为192.168.0.0/16网段,则根据路由表数据包需要通过VPN实例10.9.80.1发送到VPN实例10.9.96.1,最终通过VPN实例10.9.96.1 发送到目标地址对应的网关10.9.96.129,并通过网关10.9.96.129所在子网发送到对应的目标地址如192.168.0.27。
如果数据包由网关10.9.96.129发出,数据包中包含的目标地址网段为10.9.64.0/18,则根据路由表数据包需要通过VPN实例10.9.96.1发送到VPN实例10.9.80.1,最终通过VPN实例10.9.80.1发送到目标地址客户端10.9.80.128。
步骤30:向VPN集群内增加VPN实例,并根据该VPN实例通信连接的对象更新路由表;
本步骤是在各VPN实例均无足够的带宽且需要增加服务或客户端或智能设备的情况下存在的。
若该VPN实例通信连接客户端,则在路由表中增加该VPN实例和其他VPN实例之间的路由路径以及该VPN实例和客户端之间的路由路径;
若该VPN实例通信连接网关,则在该路由表中增加该VPN实例和其他VPN实例之间的路由路径以及该VPN实例和网关之间的路由路径。
路由规则不变,即新增的VPN实例需要遵守路由规则1以及iptables中的路由规则2和路由规则3。
通过上述的描述可以得到以下结论:
1、相比于传统技术,本VPN集群内的VPN实例之间无层级关系,不论是和网关连接的VPN实例还是和客户端连接的VPN都是属于平级的关系,其共同遵守路由规则,如果系统中存在多个客户端,不同的客户端分配不同的VPN实例,其可保证不同带宽需求的客户端的通信顺畅。
2、本实施例通过网关管理平台对网关、VPN实例、客户端配置路由表以及为VPN集群配置路由规则,可实现集群内的VPN实例的灵活配置,对于VPN实例的增加、减少以及功能变化如VPN实例由和客户端的通信变为和网关的通信的操作,只需要更改路由表即可,由于VPN集群内无层级,所以上述操作会变得平滑,特别是在增加终端设备时,可显著降低新增VPN实例的组网难度。
3、本实施例可部署于一个或多个宿主机上,通过不同的类型的网卡进行通信,可实现分布式的终端设备灵活的连接到VPN集群中和客户端进行通信。
实施例2
参考图4,一种基于OpenVPN集群的系统,包括VPN集群、网关2、网关2下接的终端设备1、客户端4、网关管理平台5;
所述网关管理平台5包括如下模块:
VPN实例3生成模块:用于在一个或多个宿主机上创建多个VPN实例3;
路由表生成模块:创建路由表并将路由表分发给宿主机;
将包含客户端4和对应的VPN实例3之间的路由路径的路由表分发给对应的客户端4;
将包含网关2和对应的VPN实例3之间的路由路径的路由表分发给对应的网关2;
路由规则生成模块:用于设置路由规则并将路由规则分发给宿主机的iptables,所述路由规则包括:网关2之间以及网关2下接的终端设备1之间禁止通过VPN实例3通信;
VPN实例3管理模块:用于向OpenVPN集群增加VPN实例3,并根据该VPN实例3 通信连接的对象更新路由表;
若该VPN实例3通信连接客户端4,则在该VPN实例3所在的宿主机的路由表中增加该VPN实例3和其他VPN实例3之间的路由路径以及该VPN实例3和客户端4之间的路由路径,并在该客户端4配置VPN实例3和客户端4之间的路由路径;
若该VPN实例3通信连接网关2,则在该VPN实例3和客户端4之间的路由路径路由表中增加该VPN实例3和其他VPN实例3之间的路由路径以及该VPN实例3和网关2之间的路由路径,并在该网关2配置VPN实例3和网关2之间的路由路径;
所述终端设备1和客户端4将包含目标地址和源地址的数据包通过网关2、VPN集群发送到目标地址所对应的客户端4或通过VPN集群、网关2发送到目标地址对应的终端设备1。
参考实施例1中的图2所示的简化的系统,其数据传输的方式具体为:
数据包由客户端410.9.80.128发出,其目标地址为192.168.0.0/16网段,则根据路由表数据包需要通过VPN实例310.9.80.1发送到VPN实例310.9.96.1,最终通过VPN实例310.9.96.1 发送到目标地址对应的网关210.9.96.129,并通过网关210.9.96.129所在子网发送到对应的目标地址如192.168.0.27;
数据包由网关210.9.96.129发出,数据包中包含的目标地址为10.9.64.0/18,则根据路由表数据包需要通过VPN实例310.9.96.1发送到VPN实例310.9.80.1,最终通过VPN实例 310.9.80.1发送到目标地址客户端410.9.80.128。
以上所述的仅为本发明的较佳实施例,凡在本发明的精神和原则范围内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种OpenVPN集群,其特征在于,包括多个VPN实例,部分VPN实例与外设的网关通信连接,部分VPN实例与外设的客户端通信连接;
所述OpenVPN集群内存储有路由规则和路由表,所述路由规则包括:网关之间以及网关下接的终端设备之间禁止通过VPN实例通信;所述路由表包括任意VPN实例之间的路由路径、客户端和对应的VPN实例之间的路由路径、网关和对应的VPN实例之间的路由路径;
各VPN实例按照路由规则、路由表进行数据传输。
2.根据权利要求1所述OpenVPN集群,其特征在于,所述多个VPN实例部署在一个宿主机或多个宿主机上;
同一宿主机上的VPN实例之间通过VPN实例的虚拟网卡进行数据传输;
不同宿主机上的VPN实例之间通过宿主机上的以太网卡进行数据传输。
3.根据权利要求1所述OpenVPN集群,其特征在于,每一个与外设网关通信连接的VPN实例上连接一个或多个网关,所述网关下接一个或多个终端设备;
每一个与外设的客户端通信连接的VPN实例连接一个或多个客户端。
4.一种OpenVPN集群的构建方法,其特征在于,包括如下步骤:
步骤1:在一个或多个宿主机上创建多个VPN实例;部分VPN实例与外设的网关通信连接,部分VPN实例与外设的客户端通信连接;
步骤2:创建路由表并将路由表分发给宿主机,所述路由表包括任意VPN实例之间的路由路径、客户端和对应的VPN实例之间的路由路径、网关和对应的VPN实例之间的路由路径;
步骤3:设置路由规则并将路由规则分发给宿主机的iptables,所述路由规则包括:网关之间以及网关下接的终端设备之间禁止通过VPN实例通信;
步骤1至步骤3完成后即完成了OpenVPN集群的构建,OpenVPN集群中的任意VPN实例根据收到的数据包中所包含的目标地址采用路由表和路由规则进行数据包的传输;所述目标地址为外设的网关下接的终端设备的IP地址或客户端的IP地址。
5.根据权利要求4所述OpenVPN集群的构建方法,其特征在于,还包括步骤4;
步骤4:向OpenVPN集群增加VPN实例,并根据该VPN实例通信连接的对象更新路由表;
若该VPN实例通信连接客户端,则在路由表中增加该VPN实例和其他VPN实例之间的路由路径以及该VPN实例和客户端之间的路由路径;
若该VPN实例通信连接网关,则在该路由表中增加该VPN实例和其他VPN实例之间的路由路径以及该VPN实例和网关之间的路由路径。
6.一种基于OpenVPN集群的通信方法,其特征在于,所述方法涉及如权利要求1-3任一所述VPN集群、网关、网关下接的终端设备、客户端;所述网关、客户端均配置有网关、客户端与对应的VPN实例的路由路径;
所述方法具体为:
步骤10:客户端或网关将数据包按照路由路径发送给对应的VPN实例;所述数据包包括源地址和目标地址;
步骤20:所述VPN实例解析数据包并按照路由表和路由规则将数据包发送到目标地址对应的VPN实例,并通过该VPN实例发送给目标地址所在的客户端或网关、终端设备。
7.根据权利要求6所述的基于OpenVPN集群的通信方法,其特征在于,还包括步骤30;
步骤30:向VPN集群内增加VPN实例,并根据该VPN实例通信连接的对象更新路由表;
若该VPN实例通信连接客户端,则在路由表中增加该VPN实例和其他VPN实例之间的路由路径以及该VPN实例和客户端之间的路由路径;
若该VPN实例通信连接网关,则在该路由表中增加该VPN实例和其他VPN实例之间的路由路径以及该VPN实例和网关之间的路由路径。
8.一种基于OpenVPN集群的系统,其特征在于,包括如权利要求1-3任一所述VPN集群、网关、网关下接的终端设备、客户端、网关管理平台;
所述网关管理平台包括如下模块:
VPN实例生成模块:用于在一个或多个宿主机上创建多个VPN实例;
路由表生成模块:创建路由表并将路由表分发给宿主机;
将包含客户端和对应的VPN实例之间的路由路径的路由表分发给对应的客户端;
将包含网关和对应的VPN实例之间的路由路径的路由表分发给对应的网关;
路由规则生成模块:用于设置路由规则并将路由规则分发给宿主机的iptables,所述路由规则包括:网关之间以及网关下接的终端设备之间禁止通过VPN实例通信;
所述终端设备和客户端将包含目标地址和源地址的数据包通过网关、VPN集群发送到目标地址所对应的客户端或通过VPN集群、网关发送到目标地址对应的终端设备。
9.根据权利要求8所述的基于OpenVPN集群的系统,其特征在于,所述网关管理平台还包括:
VPN实例管理模块:用于向OpenVPN集群增加VPN实例,并根据该VPN实例通信连接的对象更新路由表;
若该VPN实例通信连接客户端,则在该VPN实例所在的宿主机的路由表中增加该VPN实例和其他VPN实例之间的路由路径以及该VPN实例和客户端之间的路由路径,并在该客户端配置VPN实例和客户端之间的路由路径;
若该VPN实例通信连接网关,则在该VPN实例和客户端之间的路由路径路由表中增加该VPN实例和其他VPN实例之间的路由路径以及该VPN实例和网关之间的路由路径,并在该网关配置VPN实例和网关之间的路由路径。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911276596.7A CN111049721B (zh) | 2019-12-12 | 2019-12-12 | 一种OpenVPN集群及其构建方法、通信方法、系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911276596.7A CN111049721B (zh) | 2019-12-12 | 2019-12-12 | 一种OpenVPN集群及其构建方法、通信方法、系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111049721A true CN111049721A (zh) | 2020-04-21 |
CN111049721B CN111049721B (zh) | 2021-06-29 |
Family
ID=70236617
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911276596.7A Active CN111049721B (zh) | 2019-12-12 | 2019-12-12 | 一种OpenVPN集群及其构建方法、通信方法、系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111049721B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112039749A (zh) * | 2020-08-31 | 2020-12-04 | 广州鲁邦通物联网科技有限公司 | 基于Nodejs的物联网设备管理方法、系统和存储介质 |
CN112468325A (zh) * | 2020-11-11 | 2021-03-09 | 广州鲁邦通物联网科技有限公司 | 一种可复用的vpn架构和vpn调度方法 |
CN113472753A (zh) * | 2021-06-12 | 2021-10-01 | 广州鲁邦通智能科技有限公司 | 一种多租户网络隔离的方法、数据中心和通信系统 |
CN114095188A (zh) * | 2020-07-31 | 2022-02-25 | 阿里巴巴集团控股有限公司 | 虚拟专用网的处理方法、装置及电子设备 |
CN114157455A (zh) * | 2021-11-16 | 2022-03-08 | 北京达佳互联信息技术有限公司 | 一种数据传输方法、装置、设备以及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101448051A (zh) * | 2008-12-23 | 2009-06-03 | 杭州华三通信技术有限公司 | 一种结合虚拟专用网的语音呼叫方法和边缘设备 |
CN101626338A (zh) * | 2009-08-03 | 2010-01-13 | 杭州华三通信技术有限公司 | 一种实现多虚拟专用网实例的方法和设备 |
US20100080238A1 (en) * | 2008-09-30 | 2010-04-01 | Nortel Networks Limited | Extended Private LAN |
CN101808038A (zh) * | 2010-03-29 | 2010-08-18 | 杭州华三通信技术有限公司 | 一种vpn实例的划分方法和设备 |
CN102223365A (zh) * | 2011-06-03 | 2011-10-19 | 杭州华三通信技术有限公司 | 基于ssl vpn网关集群的用户接入方法及其装置 |
CN106411735A (zh) * | 2016-10-18 | 2017-02-15 | 杭州华三通信技术有限公司 | 一种路由配置方法及装置 |
-
2019
- 2019-12-12 CN CN201911276596.7A patent/CN111049721B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100080238A1 (en) * | 2008-09-30 | 2010-04-01 | Nortel Networks Limited | Extended Private LAN |
CN101448051A (zh) * | 2008-12-23 | 2009-06-03 | 杭州华三通信技术有限公司 | 一种结合虚拟专用网的语音呼叫方法和边缘设备 |
CN101626338A (zh) * | 2009-08-03 | 2010-01-13 | 杭州华三通信技术有限公司 | 一种实现多虚拟专用网实例的方法和设备 |
CN101808038A (zh) * | 2010-03-29 | 2010-08-18 | 杭州华三通信技术有限公司 | 一种vpn实例的划分方法和设备 |
CN102223365A (zh) * | 2011-06-03 | 2011-10-19 | 杭州华三通信技术有限公司 | 基于ssl vpn网关集群的用户接入方法及其装置 |
CN106411735A (zh) * | 2016-10-18 | 2017-02-15 | 杭州华三通信技术有限公司 | 一种路由配置方法及装置 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114095188A (zh) * | 2020-07-31 | 2022-02-25 | 阿里巴巴集团控股有限公司 | 虚拟专用网的处理方法、装置及电子设备 |
CN112039749A (zh) * | 2020-08-31 | 2020-12-04 | 广州鲁邦通物联网科技有限公司 | 基于Nodejs的物联网设备管理方法、系统和存储介质 |
CN112039749B (zh) * | 2020-08-31 | 2022-03-15 | 广州鲁邦通物联网科技股份有限公司 | 基于Nodejs的物联网设备管理方法、系统和存储介质 |
CN112468325A (zh) * | 2020-11-11 | 2021-03-09 | 广州鲁邦通物联网科技有限公司 | 一种可复用的vpn架构和vpn调度方法 |
CN112468325B (zh) * | 2020-11-11 | 2023-07-11 | 广州鲁邦通物联网科技股份有限公司 | 一种可复用的vpn架构和vpn调度方法 |
CN113472753A (zh) * | 2021-06-12 | 2021-10-01 | 广州鲁邦通智能科技有限公司 | 一种多租户网络隔离的方法、数据中心和通信系统 |
CN114157455A (zh) * | 2021-11-16 | 2022-03-08 | 北京达佳互联信息技术有限公司 | 一种数据传输方法、装置、设备以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111049721B (zh) | 2021-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111049721B (zh) | 一种OpenVPN集群及其构建方法、通信方法、系统 | |
US8923296B2 (en) | System and methods for managing network packet forwarding with a controller | |
AU2012312587B2 (en) | System and methods for controlling network traffic through virtual switches | |
CN104202266B (zh) | 一种通信方法、交换机、控制器及通信系统 | |
US8320388B2 (en) | Autonomic network node system | |
EP3063903B1 (en) | Method and system for load balancing at a data network | |
US9374835B2 (en) | Methods and apparatus for enforcing a common user policy within a network | |
US9331941B2 (en) | Traffic flow redirection between border routers using routing encapsulation | |
EP2579514B1 (en) | Method and apparatus for a converged wired/wireless enterprise network architecture | |
US20160337244A1 (en) | Configuration of network elements for automated policy-based routing | |
US10630508B2 (en) | Dynamic customer VLAN identifiers in a telecommunications network | |
CN111988353B (zh) | 兼容IPv4和IPv6互联网服务与负载平衡服务供装系统及其方法 | |
CN110324159B (zh) | 链路配置方法、控制器和存储介质 | |
US11582102B2 (en) | Systems and methods for integrating network switch management with computing resource management | |
US11178041B1 (en) | Service chaining with physical network functions and virtualized network functions | |
Sun et al. | Scalable programmable inbound traffic engineering | |
CN115955456A (zh) | 基于IPv6的企业园区网及组网方法 | |
CN101917414B (zh) | Bgp分类网关设备及利用该设备实现网关功能的方法 | |
US10944665B1 (en) | Auto-discovery and provisioning of IP fabric underlay networks for data centers | |
US11171992B2 (en) | System resource management in self-healing networks | |
KR102092091B1 (ko) | 소프트웨어 정의 네트워크에서 고가용성 및 고신뢰성을 제공하는 방법, 장치 및 컴퓨터 프로그램 | |
JP3520665B2 (ja) | バーチャルネットワーク方式 | |
Vadivelu et al. | Design and performance analysis of complex switching networks through VLAN, HSRP and link aggregation | |
CN117223261A (zh) | 用于增加的吞吐量和可扩展性的系统和方法 | |
CN116980293A (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 | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 511356 Room 501, building 2, No. 63, Yong'an Avenue, Huangpu District, Guangzhou, Guangdong Patentee after: Guangzhou lubangtong Internet of things Technology Co.,Ltd. Address before: 510653 3rd floor, building F, kehuiyuan, 95 Daguan Road, Tianhe District, Guangzhou City, Guangdong Province Patentee before: GUANGZHOU ROBUSTEL TECHNOLOGIES Co.,Ltd. |