一種基于動態(tài)代理的遠程訪問控制方法
【專利摘要】本發(fā)明公開一種基于動態(tài)代理的遠程訪問方法,其包括步驟S01:動態(tài)代理初始化映射關系表和端口資源表;步驟S02:利用動態(tài)代理動態(tài)地建立公網IP:PORT到私網IP:PORT的映射關系,并基于Netty建立公網IP:PORT的網絡監(jiān)聽;步驟S03:動態(tài)代理基于Netty的Select輪詢機制監(jiān)聽Accept事件,并建立客戶端與目的主機之間的連接管道;步驟S04:動態(tài)代理基于Netty的Select輪詢機制監(jiān)聽READ和WRITE事件,完成客戶端和目的主機之間的數(shù)據(jù)傳輸;步驟S05:客戶端關閉連接,動態(tài)代理釋放LocalSocket和RemoteSocket,關閉了客戶端與目的主機之間的連接管道;步驟S06:當不再需要訪問私網中某個IP的主機時,動態(tài)代理動態(tài)地刪除公網到私網的映射關系,以及公網IP:PORT的網絡監(jiān)聽;該遠程訪問方法可以保證舊的映射關系不受任何影響而做到業(yè)務無損。
【專利說明】一種基于動態(tài)代理的遠程訪問控制方法
【技術領域】
[0001]本發(fā)明涉及移動云計算【技術領域】,具體涉及一種基于動態(tài)代理的遠程訪問控制方法。
【背景技術】
[0002]遠程訪問是一種用戶通過遠程訪問客戶端連接并訪問遠程主機的機制,在同一個私有網絡中,不需要任何配置就能做到遠程訪問,而大多數(shù)時候,我們需要的是在不同私有網絡中實現(xiàn)遠程訪問。如Userl和User分別處于不同的局域網,Userl需要遠程訪問User2所在的主機,這種場景則需要配置才能做到遠程訪問。一般的實現(xiàn)方案是基于一個固定的公網IP和PORT,事先建立從公網IP = PORT到私網IP:PORT的映射關系,即在公網IP = PORT和私網IP:P0RT之間建立虛鏈路,這樣外部網絡就可以基于這個公網IP使用遠程訪問工具實現(xiàn)對私有網絡中某個主機的遠程訪問。
[0003]但是,上述場景的遠程訪問機制有兩個致命的缺點,一是不夠靈活,當我們需要訪問某臺主機的時候,我們必須事先建立公網IP:P0RT到私網IP = PORT的映射關系,然后我們才能基于這個公網IP:P0RT遠程訪問私有網絡中的主機。我們更希望擁有的是一種在需要遠程訪問私有網絡中某個主機的時候,可以動態(tài)的建立映射關系的遠程訪問控制機制;其次是業(yè)務中斷,當新添加的映射關系需要起作用時,我們必須停止掉已有的服務機制,然后再重新啟動服務機制,這時新的映射關系才會起作用,這樣則無法保證業(yè)務無損。
【發(fā)明內容】
[0004]為了解決現(xiàn)有技術的不足,本發(fā)明的目的在于提供一種基于動態(tài)代理的遠程訪問方法,使用者在使用之前開啟動態(tài)代理,當需要訪問私有網絡中的目的主機時,使用者基于動態(tài)代理動態(tài)的建立公網IP:P0RT和私網IP = PORT的映射關系,而且可以保證舊的映射關系不受任何影響,做到業(yè)務無損。
[0005]本發(fā)明提供一種基于動態(tài)代理的遠程訪問方法,其包括以下步驟:
[0006]步驟SOl:動態(tài)代理初始化映射關系表和端口資源表;
[0007]步驟S02:當需要訪問私網中某個IP的主機時,利用動態(tài)代理動態(tài)地建立公網IPiPORT到私網IP = PORT的映射關系,并將該映射關系保存至動態(tài)代理的映射關系表中,同時,動態(tài)代理基于Netty建立公網IP = PORT的網絡監(jiān)聽;
[0008]步驟S03:動態(tài)代理基于Netty的Select輪詢機制監(jiān)聽Accept事件,并建立客戶端與目的主機之間的連接管道;
[0009]步驟S04:動態(tài)代理基于Netty的Select輪詢機制監(jiān)聽READ和WRITE事件,完成客戶端和目的主機之間的數(shù)據(jù)傳輸;
[0010]步驟S05:客戶端關閉連接,動態(tài)代理釋放LocalSocket和RemoteSocket,關閉了客戶端與目的主機之間的連接管道;
[0011]步驟S06:當不再需要訪問私網中某個IP的主機時,動態(tài)代理動態(tài)地刪除公網IP:PORT到私網IP:PORT的映射關系,以及公網IP:PORT的網絡監(jiān)聽。
[0012]基于上述技術方案的公開,本發(fā)明提供一種基于動態(tài)代理的遠程訪問方法具有以下有益效果:
[0013]本發(fā)明公開的一種基于動態(tài)代理的遠程訪問方法,使用者在使用之前,開啟動態(tài)代理,當需要訪問私有網絡中的某個主機時,使用者基于動態(tài)代理,動態(tài)的建立公網IPiPORT和私網IP = PORT的映射關系,而且可以保證舊的映射關系不受任何影響,做到業(yè)務無損。
【專利附圖】
【附圖說明】
[0014]圖1為本發(fā)明提出的一種基于動態(tài)代理的遠程訪問方法的流程原理圖。
【具體實施方式】
[0015]如圖1所示,基于云平臺CloudStack的應用程序——此應用程序可以動態(tài)的創(chuàng)建私有網絡,并且在私有網絡中創(chuàng)建或者部署目的主機。我們希望在另外一個私有網絡中也能訪問動態(tài)部署的目的主機,而且不影響已經能訪問的目的主機之間的數(shù)據(jù)傳輸,下面結合這個具體的應用場景來描述一下基于動態(tài)代理實現(xiàn)的【具體實施方式】。
[0016]步驟SOl:動態(tài)代理初始化映射關系表和端口資源表,映射關系表用于維護公網IPiPORT和私網IP = PORT的映射關系,映射關系表采用Map樹形結構,方便對映射關系表的動態(tài)操作包括查找,增加,刪除,端口資源表用于維護可用的端口資源,端口資源表采用動態(tài)數(shù)組結構,方便對端口資源的動態(tài)擴展。
[0017]步驟S02:基于CloudStack的應用程序部署目的主機之后,調用動態(tài)代理提供的接口動態(tài)地添加映射關系,動態(tài)代理收到來自應用程序的消息之后,則從動態(tài)代理的端口資源表中分配一個可用的PORT,將該PORT和目的主機IP之間建立公網IP = PORT到私網IP:P0RT的映射關系,并將該映射關系保存至映射關系表中,同時,動態(tài)代理基于Netty建立公網IP = PORT的網絡監(jiān)聽,成功之后,則返回映射關系IP:P0RT給應用程序;
[0018]步驟S03:動態(tài)代理基于Netty的Select輪詢機制監(jiān)聽Accept事件,并建立客戶端與目的主機之間的連接管道,客戶端基于應用程序獲取的公網IP:P0RT遠程訪問目的主機,動態(tài)代理檢測到來自客戶端的Acc印t事件,動態(tài)代理與客戶端之間建立LocalSocket連接,同時動態(tài)代理查找映射關系表中的映射關系,建立和私網IP:P0RT之間的RemoteSocket連接,同時將LocalSocket的READ和WRITE事件加入Select輪詢機制中;
[0019]步驟S04:動態(tài)代理基于Netty的Select輪詢機制監(jiān)聽READ和WRITE事件,完成客戶端和目的主機之間的數(shù)據(jù)傳輸:客戶端發(fā)送請求數(shù)據(jù)給動態(tài)代理,動態(tài)代理檢測到LocalSocket的READ事件,讀取數(shù)據(jù)寫入RemoteSocket發(fā)送到目的主機,目的主機發(fā)送響應數(shù)據(jù)給動態(tài)代理,動態(tài)代理檢測到RemoteSocket的READ事件,讀取數(shù)據(jù)寫入LocalSocket發(fā)送到客戶端;
[0020]步驟S05:客戶端關閉連接,動態(tài)代理釋放LocalSocket和RemoteSocket,關閉了客戶端與目的主機之間的連接管道;
[0021]步驟S06:基于CloudStack的應用程序銷毀目的主機,調用動態(tài)代理提供的接口動態(tài)刪除映射關系及公網IP:PORT的網絡監(jiān)聽:動態(tài)代理收到消息之后,釋放端口資源表的PORT,刪除該PORT和目的主機之間建立的公網IP = PORT到私網IP = PORT的映射關系,同時刪除Netty建立的公網IP:P0RT的網絡監(jiān)聽,成功之后,返回刪除成功的提示給應用程序。
[0022]上述步驟S02到步驟S06就是一個從映射關系動態(tài)建立,代理轉發(fā)客戶端與目的主機之間的數(shù)據(jù),最后刪除映射關系的完整過程。這個過程是動態(tài)進行的,當基于CloudStack的應用程序動態(tài)部署目的主機,動態(tài)代理就動態(tài)的生成和目的主機之間的映射關系,而且不會影響已有映射關系的數(shù)據(jù)轉發(fā)。
[0023]基于動態(tài)代理的遠程訪問方法是基于Socket的網絡編程實現(xiàn)的,基本原理就是在公網IP:PORT和私網IP:PORT之間建立Socket連接,外部網絡訪問公網IP = PORT時,將產生的數(shù)據(jù)通過Socket再發(fā)送到私網IP:P0RT所在的目的主機,這樣就完成了公網IP:P0RT到私網IP = PORT的映射關系,即訪問公網IP:P0RT的數(shù)據(jù)流最終會被轉發(fā)到私網IP:P0RT,本發(fā)明采用了 Netty作為網絡編程框架,Netty是一個高性能的異步事件網絡框架。
[0024]應該注意到并理解,在不脫離后附的權利要求所要求的本發(fā)明的精神和范圍的情況下,能夠對上述詳細描述的本發(fā)明做出各種修改和改進,因此,要求保護的技術方案的范圍不受所給出的任何特定示范教導的限制。
【權利要求】
1.一種基于動態(tài)代理的遠程訪問方法,其特征在于,其包括以下步驟: 步驟SOl:動態(tài)代理初始化映射關系表和端口資源表; 步驟S02:當需要訪問私網中某個IP的主機時,利用動態(tài)代理動態(tài)地建立公網IP = PORT到私網IP = PORT的映射關系,并將該映射關系保存至動態(tài)代理的映射關系表中,同時,動態(tài)代理基于Netty建立公網IP = PORT的網絡監(jiān)聽; 步驟S03:動態(tài)代理基于Netty的Select輪詢機制監(jiān)聽Accept事件,并建立客戶端與目的主機之間的連接管道; 步驟S04:動態(tài)代理基于Netty的Select輪詢機制監(jiān)聽READ和WRITE事件,完成客戶端和目的主機之間的數(shù)據(jù)傳輸; 步驟S05:客戶端關閉連接,動態(tài)代理釋放LocalSocket和RemoteSocket,關閉了客戶端與目的主機之間的連接管道; 步驟S06:當不再需要訪問私網中某個IP的主機時,動態(tài)代理動態(tài)地刪除公網IP:P0RT至IJ私網IP = PORT的映射關系,以及公網IP = PORT的網絡監(jiān)聽。
【文檔編號】H04L29/06GK103888511SQ201410058216
【公開日】2014年6月25日 申請日期:2014年2月20日 優(yōu)先權日:2014年2月20日
【發(fā)明者】李平南, 劉耀, 羅端紅 申請人:北京哈工大計算機網絡與信息安全技術研究中心, 湖南合天智匯信息技術有限公司, 北京合天智匯信息技術有限公司