本發(fā)明涉及網(wǎng)絡(luò)通信領(lǐng)域,尤其涉及一種基于mqtt和n2nvpn的遠(yuǎn)端設(shè)備管理方法及裝置。
背景技術(shù):
mqtt:messagequeuingtelemetrytransport,消息隊(duì)列遙測(cè)傳輸
n2n:alayertwopeer-to-peervpn,點(diǎn)對(duì)點(diǎn)的vpn
vpn:virtualprivatenetwork,虛擬私有網(wǎng)絡(luò)
openvpn:開(kāi)源的vpn,基于openssl加密庫(kù)的協(xié)議。
mqtt通訊協(xié)議是為大量計(jì)算能力有限,且工作在低寬帶、不可靠的網(wǎng)絡(luò)的遠(yuǎn)程傳感器或者控制通訊設(shè)計(jì)的協(xié)議,它具有如下特性:
1)使用發(fā)布/訂閱消息模式,提供一對(duì)多的消息發(fā)布,解除應(yīng)用程序耦合;
2)對(duì)負(fù)載內(nèi)容屏蔽的消息傳輸;
3)使用tcp/ip提供網(wǎng)絡(luò)連接;
4)有三種消息發(fā)布服務(wù)質(zhì)量:“至多一次”,消息發(fā)布完全依賴底層tcp/ip網(wǎng)絡(luò)。會(huì)發(fā)生消息丟失或重復(fù)。這一級(jí)別可用于如下情況,環(huán)境傳感器數(shù)據(jù),丟失一次讀記錄無(wú)所謂,因?yàn)椴痪煤筮€會(huì)有第二次發(fā)送?!爸辽僖淮巍保_保消息到達(dá),但消息重復(fù)可能會(huì)發(fā)生?!爸挥幸淮巍?,確保消息到達(dá)一次。這一級(jí)別可用于如下情況,在計(jì)費(fèi)系統(tǒng)中,消息重復(fù)或丟失會(huì)導(dǎo)致不正確的結(jié)果。小型傳輸,開(kāi)銷很小(固定長(zhǎng)度的頭部是2字節(jié)),協(xié)議交換最小化,以降低網(wǎng)絡(luò)流量;根據(jù)mqtt的特性,選擇mqtt協(xié)議來(lái)插播消息是一個(gè)非常理想的方法。
openvpn是一個(gè)基于openssl庫(kù)的應(yīng)用層vpn實(shí)現(xiàn)。和傳統(tǒng)vpn相比,它的優(yōu)點(diǎn)是簡(jiǎn)單易用。openvpn允許參與建立vpn的單點(diǎn)使用共享金鑰,電子證書(shū),或者用戶名/密碼來(lái)進(jìn)行身份驗(yàn)證。它大量使用了openssl加密庫(kù)中的sslv3/tlsv1協(xié)議函式庫(kù)。openvpn能在solaris、linux、openbsd、freebsd、netbsd、macosx與windows2000/xp/vista上運(yùn)行,并包含了許多安全性的功能。它并不是一個(gè)基于web的vpn軟件,也不與ipsec及其他vpn軟件包兼容。
n2n是一個(gè)雙層架構(gòu)的vpn,它讓用戶可以在網(wǎng)絡(luò)層上開(kāi)發(fā)p2p應(yīng)用的典型功能,而不是在應(yīng)用層上開(kāi)發(fā)。這意味著用戶可以獲取本地ip一樣的可見(jiàn)度(比如說(shuō),同一個(gè)n2n網(wǎng)絡(luò)內(nèi)的兩臺(tái)pc機(jī)可以相互ping通),并且可以通過(guò)n2n虛擬網(wǎng)內(nèi)的ip地址相互訪問(wèn),而不必關(guān)心當(dāng)前所屬的物理網(wǎng)絡(luò)地址。可以這樣說(shuō),openvpn是把ssl從應(yīng)用層轉(zhuǎn)移到網(wǎng)絡(luò)層實(shí)現(xiàn)(比如說(shuō)實(shí)現(xiàn)https協(xié)議),而n2n則是把p2p的實(shí)現(xiàn)從應(yīng)用層轉(zhuǎn)移到網(wǎng)絡(luò)層。
隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展與萬(wàn)物互聯(lián)的智能化理念的興起,智能設(shè)備(如路由器、智能網(wǎng)關(guān)、監(jiān)控?cái)z像頭等)已開(kāi)始逐漸成為智能家居生活中的重要一環(huán),對(duì)這些產(chǎn)品進(jìn)行云端管理和維護(hù)就逐漸重要起來(lái)。
目前,由于ipv4地址的逐漸枯竭,很多電信運(yùn)營(yíng)商無(wú)法提供獨(dú)立的外部ip供智能設(shè)備使用,或者獨(dú)立ip價(jià)格昂貴,因此導(dǎo)致無(wú)法直接遠(yuǎn)程訪問(wèn)智能終端。
針對(duì)此類情況,通常的處理方式是如下2種:
1)服務(wù)器采用mqtt+自定義協(xié)議中轉(zhuǎn)模式,該模式主要如下實(shí)現(xiàn):
a.建立一個(gè)穩(wěn)定的mqtt服務(wù)器,該服務(wù)器擁有獨(dú)立的外網(wǎng)ip。
b.智能終端的后臺(tái)應(yīng)用,與服務(wù)器通過(guò)mqtt等協(xié)議建立連接,并一直保持該連接。
c.需要遠(yuǎn)程訪問(wèn)智能終端時(shí),本地設(shè)備也通過(guò)mqtt協(xié)議連接服務(wù)器,用廠家自定義的通訊協(xié)議,通過(guò)服務(wù)器的mqtt在智能終端和本地設(shè)備之間進(jìn)行消息中轉(zhuǎn)。
2)服務(wù)器采用mqtt+openvpn模式,該模式主要如下實(shí)現(xiàn):
a.建立一個(gè)穩(wěn)定的mqtt和openvpn服務(wù)器,該服務(wù)器擁有獨(dú)立的外網(wǎng)ip。
b.智能終端的后臺(tái)應(yīng)用,與服務(wù)器通過(guò)mqtt等協(xié)議建立連接,并一直保持該連接。
c.需要遠(yuǎn)程訪問(wèn)智能終端時(shí),本地設(shè)備也通過(guò)mqtt協(xié)議連接服務(wù)器,用mqtt協(xié)議通知智能終端連接到openvpn服務(wù)器,并返回連接后的ip,本地設(shè)備也連接到openvpn服務(wù)器,然后用智能終端的vpnip來(lái)進(jìn)行訪問(wèn)和操作,即像遠(yuǎn)端的智能設(shè)備處于局域網(wǎng)內(nèi)一樣。
采用上述現(xiàn)有技術(shù)存在一下缺陷:mqtt+自定義協(xié)議中轉(zhuǎn)模式,需要預(yù)先定義好交互的接口,如果需要新增接口,則智能設(shè)備的客戶端和服務(wù)器的服務(wù)端都要進(jìn)行同步開(kāi)發(fā)升級(jí),工作量較大;mqtt+openvpn模式,完全依賴于openvpn服務(wù)器中間中轉(zhuǎn)數(shù)據(jù),可能存在遠(yuǎn)端智能設(shè)備和本地設(shè)備的網(wǎng)絡(luò)都很好,只是與openvpn服務(wù)器之間網(wǎng)絡(luò)比較差,導(dǎo)致數(shù)據(jù)交互速度很慢;mqtt+openvpn模式還存在,所有連通到openvpn服務(wù)器的客戶端之間都是可見(jiàn)的,給安全性也帶來(lái)了隱患。
技術(shù)實(shí)現(xiàn)要素:
為了克服現(xiàn)有技術(shù)的不足,本發(fā)明的目的在于提供一種基于mqtt和n2nvpn的遠(yuǎn)端設(shè)備管理方法及裝置,其能解決設(shè)備與服務(wù)器網(wǎng)絡(luò)較慢產(chǎn)生的影響和安全性差的問(wèn)題。
本發(fā)明的目的采用以下技術(shù)方案實(shí)現(xiàn):
一種基于mqtt和n2nvpn的遠(yuǎn)端設(shè)備管理方法,包括以下步驟:
步驟1、在擁有獨(dú)立外網(wǎng)ip的服務(wù)器上搭建mqtt服務(wù)和n2nvpn服務(wù);
步驟2、遠(yuǎn)端智能設(shè)備連接到mqtt服務(wù),遠(yuǎn)端智能設(shè)備發(fā)送訂閱主題a至mqtt服務(wù);
步驟3、本地設(shè)備連接mqtt服務(wù),本地設(shè)備發(fā)送訂閱回應(yīng)主題b至mqtt服務(wù),本地設(shè)備將回應(yīng)主題b、n2n網(wǎng)路名稱和連接vpn命令通過(guò)mqtt服務(wù)發(fā)送給遠(yuǎn)端智能設(shè)備的訂閱主題a;
步驟4、遠(yuǎn)端智能設(shè)備接收到mqtt服務(wù)返回的訂閱主題a后,連接到與n2n網(wǎng)路名稱對(duì)應(yīng)的n2nvpn服務(wù)上,并返回信息給mqtt服務(wù),mqtt服務(wù)將遠(yuǎn)端智能設(shè)備的返回信息返回給回應(yīng)主題b;
步驟5、本地設(shè)備對(duì)接收的回應(yīng)主題b中的返回信息進(jìn)行解析,從而得出遠(yuǎn)端智能設(shè)備的ip;
步驟6、本地設(shè)備連接到與n2n網(wǎng)路名稱對(duì)應(yīng)的n2nvpn服務(wù)上;
步驟7、本地設(shè)備與遠(yuǎn)端設(shè)備之間依據(jù)遠(yuǎn)端智能設(shè)備的ip,并通過(guò)n2nvpn服務(wù)實(shí)現(xiàn)中轉(zhuǎn)握手后,本地設(shè)備與遠(yuǎn)端設(shè)備直接進(jìn)行數(shù)據(jù)交互。
優(yōu)選的,上述步驟4中遠(yuǎn)端智能設(shè)備連接到與n2n網(wǎng)路名稱對(duì)應(yīng)的n2nvpn服務(wù)上具體包括,
步驟401、遠(yuǎn)端智能設(shè)備解析收到的來(lái)自mqtt服務(wù)返回的訂閱主題a,獲取到回應(yīng)主題b、n2n網(wǎng)路名稱和連接vpn命令;
步驟402、遠(yuǎn)端智能設(shè)備利用網(wǎng)路名稱連接到與n2n網(wǎng)路名稱對(duì)應(yīng)的n2nvpn服務(wù)上;
步驟403、n2nvpn服務(wù)使用dhcpserver分配ip給該遠(yuǎn)端智能設(shè)備;
步驟404、遠(yuǎn)端智能設(shè)備將得到的ip發(fā)送mqtt消息給回應(yīng)主題b。
優(yōu)選的,所述訂閱主題a為標(biāo)記遠(yuǎn)端智能設(shè)備的唯一標(biāo)記。
優(yōu)選的,所述訂閱主題a,包括遠(yuǎn)端設(shè)備的序列號(hào)。
優(yōu)選的,所述回應(yīng)主題b為本地設(shè)備的唯一標(biāo)記。
優(yōu)選的,所述回應(yīng)主題b,包括本地設(shè)備的網(wǎng)卡物理地址。
優(yōu)選的,所述n2n網(wǎng)路名稱使用本地設(shè)備的唯一標(biāo)志。
優(yōu)選的,所述n2n網(wǎng)路名稱,包括本地設(shè)備的網(wǎng)卡mac地址。
同時(shí)本發(fā)明技術(shù)方案還公開(kāi)一種基于mqtt和n2nvpn的遠(yuǎn)端設(shè)備管理裝置,包括具有獨(dú)立外網(wǎng)ip的服務(wù)器,所述服務(wù)器上設(shè)置mqtt服務(wù)和n2nvpn服務(wù);
所述mqtt服務(wù):接收來(lái)自遠(yuǎn)端智能設(shè)備的訂閱主題a以及來(lái)自本地設(shè)備的訂閱回應(yīng)主題b,并將來(lái)自本地設(shè)備的回應(yīng)主題b、n2n網(wǎng)路名稱和連接vpn命令發(fā)送給訂閱主題a,以及將n2nvpn服務(wù)分配給遠(yuǎn)端智能設(shè)備的ip信息發(fā)送至訂閱回應(yīng)主題b;
所述n2nvpn服務(wù):為遠(yuǎn)端智能設(shè)備分配ip,并依據(jù)本地設(shè)備連接vpn的請(qǐng)求與分配給遠(yuǎn)端智能設(shè)備的ip實(shí)現(xiàn)本地設(shè)備和遠(yuǎn)端智能設(shè)備的中轉(zhuǎn)握手。
優(yōu)選的,所述訂閱主題a為標(biāo)記遠(yuǎn)端智能設(shè)備的唯一標(biāo)記,所述回應(yīng)主題b為本地設(shè)備的唯一標(biāo)記,所述n2n網(wǎng)路名稱使用本地設(shè)備的唯一標(biāo)志。
本發(fā)明技術(shù)方案采用mqtt+n2nvpn方式,遠(yuǎn)端設(shè)備和本地設(shè)備通過(guò)服務(wù)端建立連接后,數(shù)據(jù)采用p2p的直接訪問(wèn)方式,減輕設(shè)備與服務(wù)端網(wǎng)絡(luò)較慢產(chǎn)生的影響;而連接時(shí)處于不同的網(wǎng)路名稱之間是不可見(jiàn)的,只能看到當(dāng)前所指定連接的設(shè)備,保證了其他設(shè)備的安全。
相對(duì)于openvpn而言,每個(gè)n2n邊節(jié)點(diǎn)可以同時(shí)隸屬于多個(gè)網(wǎng)路,即通過(guò)n2n不同的網(wǎng)路默認(rèn)網(wǎng)絡(luò)是不互通的情況下,每組需要訪問(wèn)的遠(yuǎn)端智能設(shè)備和本地設(shè)備的網(wǎng)絡(luò),與其他組的網(wǎng)絡(luò)之間不互通,不存在openvpn可以互相之間全部訪問(wèn)到的情況,做到了相對(duì)的安全。通過(guò)vpn打通鏈路后,加密是在edge(邊)節(jié)點(diǎn)執(zhí)行的,使用的是開(kāi)放的協(xié)議,用戶自定義的密鑰,數(shù)據(jù)的安全是可控制的,即使該n2nvpn服務(wù)端是第三方提供的服務(wù),也可保證數(shù)據(jù)的安全。然后兩端通過(guò)n2nvpn握手后,數(shù)據(jù)即可以直接傳輸,無(wú)需vpn服務(wù)器的中轉(zhuǎn)。n2n服務(wù)器也就無(wú)從獲取到本地設(shè)備和遠(yuǎn)端設(shè)備之間交互的數(shù)據(jù),有效的保證了數(shù)據(jù)的安全性。
本發(fā)明技術(shù)方案在遠(yuǎn)端設(shè)備管理中采用了mqtt協(xié)議和n2nvpn協(xié)議,簡(jiǎn)單的信息交互采用mqtt直接發(fā)送信息。復(fù)雜的交互或者原交互未考慮到需要擴(kuò)展的,則采用連接n2nvpn,通過(guò)n2n握手后,數(shù)據(jù)直接交互的方式。數(shù)據(jù)加密和數(shù)據(jù)傳輸都是直接在本地,減輕了服務(wù)器的壓力,也減少了服務(wù)器截取數(shù)據(jù)的可能性,保證了數(shù)據(jù)的安全。
附圖說(shuō)明
圖1為本發(fā)明實(shí)施方式所述的基于mqtt和n2nvpn的遠(yuǎn)端設(shè)備管理方法的流程圖;
圖2為本發(fā)明實(shí)施方式所述的基于mqtt和n2nvpn的遠(yuǎn)端設(shè)備管理方法的框圖。
具體實(shí)施方式
下面,結(jié)合附圖以及具體實(shí)施方式,對(duì)本發(fā)明做進(jìn)一步描述:
如圖1和圖2所述,一種基于mqtt和n2nvpn的遠(yuǎn)端設(shè)備管理方法,包括以下步驟:
步驟1、在擁有獨(dú)立外網(wǎng)ip的服務(wù)器上搭建mqtt服務(wù)和n2nvpn服務(wù);
步驟2、遠(yuǎn)端智能設(shè)備連接到mqtt服務(wù),遠(yuǎn)端智能設(shè)備發(fā)送訂閱主題a至mqtt服務(wù);
步驟3、本地設(shè)備連接mqtt服務(wù),本地設(shè)備發(fā)送訂閱回應(yīng)主題b至mqtt服務(wù),本地設(shè)備將回應(yīng)主題b、n2n網(wǎng)路名稱和連接vpn命令通過(guò)mqtt服務(wù)發(fā)送給遠(yuǎn)端智能設(shè)備的訂閱主題a;其中回應(yīng)主題b用于遠(yuǎn)端智能設(shè)備返回信息,可以使用本地設(shè)備的網(wǎng)卡物理地址構(gòu)造唯一性的標(biāo)志;n2n網(wǎng)路名稱用于本地設(shè)備和遠(yuǎn)程智能設(shè)備之間網(wǎng)路的名稱,如果其他n2n客戶端未連接到這個(gè)網(wǎng)路名稱,則無(wú)法訪問(wèn)到該網(wǎng)路下的設(shè)備,因此建議網(wǎng)路名稱也使用本地設(shè)備的網(wǎng)卡mac地址等構(gòu)造的唯一標(biāo)志,保證安全性。
步驟4、遠(yuǎn)端智能設(shè)備接收到mqtt服務(wù)返回的訂閱主題a后,連接到與n2n網(wǎng)路名稱對(duì)應(yīng)的n2nvpn服務(wù)上,并返回信息給mqtt服務(wù),mqtt服務(wù)將遠(yuǎn)端智能設(shè)備的返回信息返回給回應(yīng)主題b;即返回連接后的ip給回應(yīng)主題b;
步驟5、本地設(shè)備對(duì)接收的回應(yīng)主題b中的返回信息進(jìn)行解析,從而得出遠(yuǎn)端智能設(shè)備的ip;
步驟6、本地設(shè)備連接到與n2n網(wǎng)路名稱對(duì)應(yīng)的n2nvpn服務(wù)上;
步驟7、本地設(shè)備與遠(yuǎn)端設(shè)備之間依據(jù)遠(yuǎn)端智能設(shè)備的ip,并通過(guò)n2nvpn服務(wù)實(shí)現(xiàn)中轉(zhuǎn)握手后,本地設(shè)備與遠(yuǎn)端設(shè)備直接進(jìn)行數(shù)據(jù)交互,無(wú)需中轉(zhuǎn)。
優(yōu)選的,步驟4中遠(yuǎn)端智能設(shè)備連接到與n2n網(wǎng)路名稱對(duì)應(yīng)的n2nvpn服務(wù)上具體包括,
步驟401、遠(yuǎn)端智能設(shè)備解析收到的來(lái)自mqtt服務(wù)返回的訂閱主題a,獲取到回應(yīng)主題b、n2n網(wǎng)路名稱和連接vpn命令;
步驟402、遠(yuǎn)端智能設(shè)備利用網(wǎng)路名稱連接到與n2n網(wǎng)路名稱對(duì)應(yīng)的n2nvpn服務(wù)上;
步驟403、n2nvpn服務(wù)使用dhcpserver分配ip給該遠(yuǎn)端智能設(shè)備;
步驟404、遠(yuǎn)端智能設(shè)備將得到的ip發(fā)送mqtt消息給回應(yīng)主題b。
本地設(shè)備也使用相同的n2n網(wǎng)路名稱連接同一個(gè)n2nvpn服務(wù),然后本地設(shè)備和遠(yuǎn)端智能設(shè)備即可使用對(duì)方的vpnip互相訪問(wèn)。
優(yōu)選的,訂閱主題a為標(biāo)記遠(yuǎn)端智能設(shè)備的唯一標(biāo)記。如遠(yuǎn)端設(shè)備的序列號(hào)。
優(yōu)選的,回應(yīng)主題b為本地設(shè)備的唯一標(biāo)記。如本地設(shè)備的網(wǎng)卡物理地址。
優(yōu)選的,n2n網(wǎng)路名稱使用本地設(shè)備的唯一標(biāo)志。如本地設(shè)備的網(wǎng)卡mac地址。
同時(shí)本發(fā)明技術(shù)方案還公開(kāi)一種基于mqtt和n2nvpn的遠(yuǎn)端設(shè)備管理裝置,包括具有獨(dú)立外網(wǎng)ip的服務(wù)器,服務(wù)器上設(shè)置mqtt服務(wù)和n2nvpn服務(wù);
mqtt服務(wù):接收來(lái)自遠(yuǎn)端智能設(shè)備的訂閱主題a以及來(lái)自本地設(shè)備的訂閱回應(yīng)主題b,并將來(lái)自本地設(shè)備的回應(yīng)主題b、n2n網(wǎng)路名稱和連接vpn命令發(fā)送給訂閱主題a,以及將n2nvpn服務(wù)分配給遠(yuǎn)端智能設(shè)備的ip信息發(fā)送至訂閱回應(yīng)主題b;
n2nvpn服務(wù):為遠(yuǎn)端智能設(shè)備分配ip,并依據(jù)本地設(shè)備連接vpn的請(qǐng)求與分配給遠(yuǎn)端智能設(shè)備的ip實(shí)現(xiàn)本地設(shè)備和遠(yuǎn)端智能設(shè)備的中轉(zhuǎn)握手。
優(yōu)選的,訂閱主題a為標(biāo)記遠(yuǎn)端智能設(shè)備的唯一標(biāo)記,回應(yīng)主題b為本地設(shè)備的唯一標(biāo)記,n2n網(wǎng)路名稱使用本地設(shè)備的唯一標(biāo)志。
對(duì)本領(lǐng)域的技術(shù)人員來(lái)說(shuō),可根據(jù)以上描述的技術(shù)方案以及構(gòu)思,做出其它各種相應(yīng)的改變以及形變,而所有的這些改變以及形變都應(yīng)該屬于本發(fā)明權(quán)利要求的保護(hù)范圍之內(nèi)。