System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() MQTT承载VPN的方法及系统技术方案_技高网

MQTT承载VPN的方法及系统技术方案

技术编号:44328082 阅读:3 留言:0更新日期:2025-02-18 20:36
本发明专利技术提供MQTT承载VPN的方法,包括以下步骤:步骤S110,在服务器上搭建MQTT服务,作为消息传递的核心组件;步骤S120,VPN客户端通过gw2mq发布有关数据至MQTT服务;步骤S130,gw2mq从MQTT订阅到有关数据发送至VPN服务端;步骤S140,VPN服务端的数据通过gw2mq返回到MQTT,VPN客户端通过gw2mq订阅到数据,这样一来就通过MQTT创建了一个网络隧道;步骤S150,搭建MQTT承载Wi reguard网络,所述步骤S110中MQTT是一个基于客户端‑服务器的消息发布/订阅传输协议,通过利用MQTT承载VPN流量,通过MQTT的发布‑订阅模式及认证授权机制有效管理数据传输。

【技术实现步骤摘要】

本专利技术涉及通信,具体为mqtt承载vpn的方法及系统。


技术介绍

1、vpn的英文全称是“virtualprivatenetwork”,即“虚拟专用网络”,是一种通过公共网络安全连接私有网络的技术,vpn技术可以加密数据流,确保数据在传输过程中的机密性和完整性。通过vpn,用户可以远程访问公司内部网络资源,或者在公共网络上创建安全的通信通道,在一些实际场景中,会出现客户端两端都没有公网ip的情况,这使得直接通信变得困难,为了解决这个问题,每个vpn服务会有自己的解决方案,例如n2n采用supernode节点来中转数据流量,wireguard会把一个节点部署成中转节点来中转数据流量,或者采用一些中继服务器来中转流量,例如turn服务器,turn全称是traversalusingrelaysaroundnat,它是stun协议的扩展。如果两台主机处在不同的nat之后,它们之间想要互相通信,要么通过p2p穿越,要么通过一台带公网ip的机器来中转,turn服务器提供了中继(relay)的功能,帮助主机间进行通信。

2、传统vpn在解决客户端两端没有公网ip问题时,往往需要自己来实现中继服务来中转数据流量,例如n2n借助专有supernode技术来解决,有一定的局限性,难于推广,而wireguard的常规做法是找一个节点作为中转节点,也就是vpn网关,然后所有的节点都和这个网关进行连接,所有节点之间都通过这个网关来进行通信,在节点上需要配置每一个peer的消息,每一个peer都和这个中转节点建立隧道,然后再转发数据流量,这样一来,当peer越来越多时,vpn网关就会变成垂直扩展的瓶颈,通过vpn网关转发流量会带来很高的延迟,如果利用turn服务来做中转流量,导致带宽消耗显著增加,尤其在高流量场景下,导致运营成本增加,并且配置和维护turn服务器较为复杂,尤其是在确保高可用性和负载均衡时,这增加了系统的复杂性和运维成本。


技术实现思路

1、(一)解决的技术问题

2、针对现有技术的不足,本专利技术提供了mqtt承载vpn的方法及系统,解决了现有技术存在局限性难于推广,通过vpn网关转发流量会带来很高的延迟,以及利用turn服务来做中转流量导致配置和维护turn服务器较为复杂的问题。

3、(二)技术方案

4、为实现以上目的,本专利技术通过以下技术方案予以实现:mqtt承载vpn的方法,包括以下步骤:

5、步骤s110,在服务器上搭建mqtt服务,作为消息传递的核心组件;

6、步骤s120,vpn客户端通过gw2mq发布有关数据至mqtt服务;

7、步骤s130,gw2mq从mqtt订阅到有关数据发送至vpn服务端;

8、步骤s140,vpn服务端的数据通过gw2mq返回到mqtt,vpn客户端通过gw2mq订阅到数据,这样一来就通过mqtt创建了一个网络隧道;

9、步骤s150,搭建mqtt承载wireguard网络。

10、优选的,所述步骤s110中mqtt是一个基于客户端-服务器的消息发布/订阅传输协议,因其轻量、简单、开放和易于实现的特点,适用于广泛的应用场景,在实现vpn时,可以将mqtt作为vpn隧道中数据交换的机制,使得数据能够在不同网络环境下的设备之间可靠地传输。

11、优选的,所述步骤s120中gw2mq需要把两个vpn程序之间的数据通过mqtt进行中转,具体的gw2mq可以单独构建或是集成到vpn程序内部。

12、优选的,通过mqtt中转两个vpn程序之间的数据,使用单独构建gw2mq程序时,需要把从网络接口接收到的数据发布到mqtt,同时也可以订阅mqtt的数据并发送回网络接口,使得原本两个vpn程序之间的数据通过mqtt进行中转,从而解决通信双方都没有公网ip时的vpn技术联网问题,具体的gw2mq程序涉及以下步骤:

13、s(1)初始化mqtt客户端库,并与mqtt服务建立连接;

14、在连接的时候从配置文件中获取要连接的mqtt服务地址,以及连接的用户名和密码。这确保了客户端能够正确认证和连接到mqtt服务,设置心跳机制,通过周期性的心跳检查通信信道的通畅性;

15、s(2)处理vpn程序和mqtt之间的通信;

16、根据不同角色处理相应的网络事件,当gw2mq作为tcp或udp服务器时,程序在指定端口上监听连接,并将接收到的数据发布到相应的mqtt话题;作为tcp或udp客户端时,程序连接到指定的vpn服务器,并把相应的mqtt话题的数据发给vpn服务器;

17、s(3)同时处理多个socket连接,并与mqtt进行交互;

18、根据不同的连接设置不同的话题加以区分,可以设置成<vpn_id><source_node><destination_node>的形式,其层级数量和内容可根据实际需要进行调整,不限于此,其中vpn_id为vpn的网络编号用来区分vpn网络,<source_node>用于标识源节点,<destination_node>用于标识目标节点,如果vpn的建立和数据传输是通过不同端口进行交互的,可以将话题扩充为<vpn_id><source_node><destination_node><port_id>的形式,其中的<port_id>为对应的端口;

19、s(4)建立vpn节点地址与socket连接之间的映射关系表,因此需要记录每个节点的连接信息,以便在处理数据时能够迅速找到对应的socket进行数据转发。

20、优选的,通过mqtt中转两个vpn程序之间的数据,使用集成到vpn程序内部时,需要对vpn程序进行修改,具体的包括以下步骤:

21、s①初始化mqtt客户端库:

22、连接到mqtt服务,获取所需的配置信息,设置心跳机制,确保通信信道的通畅性。

23、s②设置发布和订阅话题:

24、可以设置成<vpn_id><source_node><destination_node>的形式,但不限于此。

25、s③修改vpn程序的处理逻辑把原本通过tcp或udp发送的数据,改为通过mqtt发布,接收通过mqtt订阅话题中的数据,并将其返回给vpn程序进行处理。

26、优选的,所述步骤s130中具体的流程根据是否单独构建gw2mq可分为两种情况:

27、单独构建gw2mq:首先将右边的gw2mq程序设置成tcp或udp客户端模式,设置发布话题为“01/b/a”,订阅话题为“01/a/b”并设置要连接的mqtt,随后这样gw2mq程序就能订阅到mqtt有关话题下的数据,并将获取到数据包后把数据发送到本地vpn的服务端口,之后v本文档来自技高网...

【技术保护点】

1.MQTT承载VPN的方法,其特征在于:包括以下步骤:

2.根据权利要求1所述的MQTT承载VPN的方法,其特征在于:所述步骤S110中MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,因其轻量、简单、开放和易于实现的特点,适用于广泛的应用场景,在实现VPN时,可以将MQTT作为VPN隧道中数据交换的机制,使得数据能够在不同网络环境下的设备之间可靠地传输。

3.根据权利要求1所述的MQTT承载VPN的方法,其特征在于:所述步骤S120中gw2mq需要把两个VPN程序之间的数据通过MQTT进行中转,具体的gw2mq可以单独构建或是集成到VPN程序内部。

4.根据权利要求3所述的MQTT承载VPN的方法,其特征在于:通过MQTT中转两个VPN程序之间的数据,使用单独构建gw2mq程序时,需要把从网络接口接收到的数据发布到MQTT,同时也可以订阅MQTT的数据并发送回网络接口,使得原本两个VPN程序之间的数据通过MQTT进行中转,从而解决通信双方都没有公网IP时的VPN技术联网问题,具体的gw2mq程序涉及以下步骤:

5.根据权利要求3所述的MQTT承载VPN的方法,其特征在于:

6.根据权利要求1所述的MQTT承载VPN的方法,其特征在于:所述步骤S130中具体的流程根据是否单独构建gw2mq可分为两种情况:

7.根据权利要求1所述的MQTT承载VPN的方法,其特征在于:所述步骤S140中具体的流程根据是否单独构建gw2mq可分为两种情况:

8.根据权利要求1所述的MQTT承载VPN的方法,其特征在于:所述步骤S150中Wireguard是一款快速现代的VPN,旨在提供易用性和高性能,其协议开源且相对简单,使得代码便于开发和审查。

9.基于MQTT承载VPN的方法提出的MQTT承载VPN的系统,其特征在于:包括MQTT服务模块、gw2mq模块和VPN服务端,所述VPN服务端发送请求数据至gw2mq模块,接着gw2mq模块将请求数据上传到MQTT服务模块从服务器中获取订阅数据,随后gw2mq模块将获取的订阅数据传输到VPN服务端上。

...

【技术特征摘要】

1.mqtt承载vpn的方法,其特征在于:包括以下步骤:

2.根据权利要求1所述的mqtt承载vpn的方法,其特征在于:所述步骤s110中mqtt是一个基于客户端-服务器的消息发布/订阅传输协议,因其轻量、简单、开放和易于实现的特点,适用于广泛的应用场景,在实现vpn时,可以将mqtt作为vpn隧道中数据交换的机制,使得数据能够在不同网络环境下的设备之间可靠地传输。

3.根据权利要求1所述的mqtt承载vpn的方法,其特征在于:所述步骤s120中gw2mq需要把两个vpn程序之间的数据通过mqtt进行中转,具体的gw2mq可以单独构建或是集成到vpn程序内部。

4.根据权利要求3所述的mqtt承载vpn的方法,其特征在于:通过mqtt中转两个vpn程序之间的数据,使用单独构建gw2mq程序时,需要把从网络接口接收到的数据发布到mqtt,同时也可以订阅mqtt的数据并发送回网络接口,使得原本两个vpn程序之间的数据通过mqtt进行中转,从而解决通信双方都没有公网ip时的vpn技术联网问...

【专利技术属性】
技术研发人员:蒋晓宁陈意强余志强方森鹏张蓓
申请(专利权)人:浙江工商大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1