java-port-forwarding內(nèi)網(wǎng)端口轉(zhuǎn)發(fā)
java-port-forwarding
Across the intranet we can reach every corner in the world.
通過服務(wù)器,轉(zhuǎn)發(fā)內(nèi)網(wǎng)主機(jī)的TCP數(shù)據(jù)包,由服務(wù)器作為中間人,完成客戶端到主機(jī)端的通信。
為動(dòng)態(tài)IP撥號(hào)上網(wǎng)或無網(wǎng)絡(luò)管理權(quán)限的主機(jī)提供對(duì)外服務(wù),借以實(shí)現(xiàn)內(nèi)網(wǎng)穿透。
加密轉(zhuǎn)發(fā)數(shù)據(jù),可避開路由器對(duì)端口及協(xié)議的封禁。
模塊說明
名詞解說
-
主機(jī)端:需要被轉(zhuǎn)發(fā)服務(wù)的電腦端
-
服務(wù)器端:提供轉(zhuǎn)發(fā)服務(wù)
-
客戶端:任意設(shè)備
比如,出差在外,需要通過手機(jī)(客戶端)訪問位于家中的一臺(tái)臺(tái)式機(jī)(主機(jī)端),可以通過一臺(tái)服務(wù)器,來轉(zhuǎn)發(fā)兩者間的數(shù)據(jù)通信。
commander 服務(wù)器端
-
內(nèi)置SpringBOOT,提供了主機(jī)管理與端口轉(zhuǎn)發(fā)配置,默認(rèn)訪問地址:http://serverip:8888。
-
使用sqlite數(shù)據(jù)庫(kù)
-
在
${server.command.port}上開啟監(jiān)聽,負(fù)責(zé)下發(fā)心跳測(cè)試包及指令到主機(jī)端。 -
在
${server.forward.port}上開啟監(jiān)聽,在服務(wù)器端下發(fā)轉(zhuǎn)發(fā)指令后,主機(jī)端將連接到指令的端口上,然后同時(shí)也連接到服務(wù)器的此端口上,并將兩者的輸入輸出流對(duì)接起來,以完成轉(zhuǎn)發(fā)。
messenger 主機(jī)端
-
無任何依賴
-
可轉(zhuǎn)發(fā)本機(jī)或局域網(wǎng)內(nèi)其它任何機(jī)器的TCP數(shù)據(jù)包
設(shè)置
快速開始
-
按需修改兩個(gè)模塊下的配置文件,比如幾個(gè)端口及主機(jī)端的服務(wù)器地址等。
-
使用Maven打包,
mvn package,將會(huì)在target目錄下分別生成服務(wù)器端original-commander-1.0-SNAPSHOT.jar和主機(jī)端messenger-1.0-SNAPSHOT.jar。 -
在擁有固定IP的服務(wù)器端執(zhí)行
java -jar original-commander-1.0-SNAPSHOT.jar。 -
在主機(jī)端執(zhí)行
java -jar messenger-1.0-SNAPSHOT.jar,如果需要后臺(tái)運(yùn)行,可執(zhí)行javaw -jar messenger-1.0-SNAPSHOT.jar。 -
使用初始賬號(hào)
admin及密碼123456登陸http://serverip:8888/,進(jìn)行主機(jī)端的端口轉(zhuǎn)發(fā)管理。 -
別忘了修改初始登陸密碼。
指令數(shù)據(jù)包結(jié)構(gòu)
-
FA FA FA 協(xié)議頭
-
00 00 00 00 加密后的數(shù)據(jù)體長(zhǎng)度
-
00 00 00 00 主機(jī)ID
-
00 00 指令,最高2位用于描述加密類型,01表示DES加密,后14位表示指令
-
...... DES加密后的數(shù)據(jù)體
轉(zhuǎn)發(fā)數(shù)據(jù)包結(jié)構(gòu)
-
FA FA FA 協(xié)議頭
-
00 00 00 00 數(shù)據(jù)包長(zhǎng)度
-
........... DES加密后的數(shù)據(jù)體
