TCP內網穿透的實現(xiàn)與原理(nodejs)

Nagent

Nagent是TCP內網穿透實現(xiàn),名稱來源于Nat與Agent的組合。類似frp項目,可以在局域網與互聯(lián)網提供橋梁。

前提是你要有一臺流量服務器并且有一個公網IP。如果沒有,也可以找服務商。

暫不能向frp那樣為HTTP服務,但可以實現(xiàn)簡單的分發(fā)————你只需要在兩臺內網HTTP服務器上運行Nagent客戶端即可。

項目位置:https://github.com/FettLuo/nagent

進度

可以使用

未向特殊協(xié)議優(yōu)化,例如http/s的轉發(fā)

雖然協(xié)議有涉及賬號名與密碼,但未實現(xiàn)

未來希望你或我,向項目添加賬號管理支持,以webservice的形式支持

名詞解釋

客戶端:運行在內網的Nagent客戶端。

服務端:運行在公網服務器上的Nagent服務端。

用戶:互聯(lián)網上的實際用戶。

過程

服務器監(jiān)聽在5670端口(默認)。

客戶端配置好自己的服務端口,也可以指定內網其他計算機。假設本機80端口。

客戶端登錄到服務器,通知服務器我需要監(jiān)聽的外網端口,比如90。

一切正常的話(防火墻沒問題,端口沒被占用等),服務器上90端口的連接即會被導向到內網的80端口服務上。

原理

客戶端與服務器保持著一定數(shù)量的連接,每個連接都需要登錄成功。

用戶連接公網服務器的端口后會從客戶端的列表中彈出一個用于數(shù)據轉發(fā)。

當客戶端第一次收到數(shù)據時,建立與本地服務的連接,并發(fā)送/轉發(fā)數(shù)據。

部署

需要NodeJS

運行為服務端

windows/linux:

node nagent.js -s

linux:

./nagent.js -s

運行為客戶端

windows/linux:

node nagent.js -p 90 -P 80

linux:

./nagent.js -p 90 -P 80

配置

保存下面內容到nagent.js所在的目錄,文件名為nagent.config,方括號內替換為你的參數(shù)。

local_port=[你的本地服務端口]

server_port=5670// 服務端端口號

server_host='[服務端的主機地址,IP或域名均可]'

remote_port=[你需要服務端為你開放的公網端口]

keep_conn_count=10// 同時保持的最大連接數(shù)量

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 兒在外,母親多安康,盼歸鄉(xiāng),只此淚流滿行,跪泣別離再還鄉(xiāng),孩兒尚臨將,一時多失荊州地,臥龍谷,復甲錦衣還,戲吐憂傷!
    大臉猩猩閱讀 316評論 0 0
  • 上午9:21我從醫(yī)院出來在路邊吃著腸粉,久違的明媚陽光,初夏的微熱讓我心情舒暢。今天本來是上晚班的,其實不必早起,...
    Lovelygiraffe晴閱讀 581評論 0 0
  • 這次作業(yè)中,感覺“關鍵詞”和“同階層同屬性”不只是在聽課筆記中的內容,所以二位另列了一個主干,而“聽課筆記”又另列...
    古樂歌德81閱讀 346評論 10 2
  • 遠程 個案問:‘傳統(tǒng)產業(yè),直銷分享,阿卡西閱讀三種產業(yè)哪種代表她最佳利益。’回答:‘直銷分享,阿卡西閱讀比傳統(tǒng)產業(yè)...
    云加靜閱讀 612評論 0 0
  • 菊花飄落,黃葉秋霜。晨鐘暮鼓聲聲。 夜雨來襲,其間夾帶風聲。 稀疏影斜冷冷,緊扣門扉鎖更聲。 日子遠,故人今何在?...
    流一盞燈閱讀 816評論 3 20

友情鏈接更多精彩內容