本地服務註冊,基於子網域名稱->埠對映。公網測試請開啟二級或**網域名稱泛解析
無心跳保活、無多執行緒併發處理
const net =
require
('net');
var nat =
, registry:
,//服務登錄檔
request:
,//請求連線
uid(pre =
'', howmany =
1, len =4)
let bd =
;for
(var i =
0; i < howmany; i++
)return bd.length >
1? bd : bd[0]
;},run()
,/*************** tcp內網穿透 ***************/
nat(
)catch
(err)if
(data.act ==
'regist')}
) socket.natnames=data.name
socket.on(
'close'
,had_error=>)}
)}else
if(data.act ==
'connect'))
socket.on(
'error'
,err=>)}
}}) socket.on(
'error'
,(err)
=>: $
`)})
}).listen
(that.config.servport,()
=>`)
})//建立**通訊伺服器
,/*************** 格式化http請求頭 ***************/
reqparse
(b);
}else}if
(!index)
return
false
;var header = b.
slice(0
, index)
.tostring
('utf8');
//替換connection頭
header = header.
replace
(/(proxy\-)?connection\:.+\r\n/ig,''
).replace
(/keep\-alive\:.+\r\n/i,''
).replace
("\r\n"
,'\r\nconnection: close\r\n');
//替換**格式(去掉網域名稱部分)
//內網穿透客戶端
var nat =
,//伺服器配置
local:
,//本地服務名=>埠對映
retry:
300000
,//異常重連},
connserv()
: nat已連線伺服器`
)var option =
serv.
write
(json
.stringify
(option))}
) serv.
setkeepalive
(true
) serv.on(
'data'
, data =>
catch
(err)if
(data.act ==
'connect'),
()=>))
})request.on(
'error'
,err=>
) response.on(
'error'
,err=>)}
)}})
serv.on(
'error'
, err =>
: nat伺服器連線異常:$`
) serv.
end();
that.
connserv()
})serv.on(
'end',(
)=>
: nat伺服器連線已斷開`
) serv.
end();
that.
connserv()
})},
//定時監測連線狀態&&斷線重連
run()}
, that.config.retry)
}}
NPS內網穿透穿透
最近使用公司的虛擬專用網導致我想自己試試怎麼搞出來的,有兩個行動硬碟想嘗試買個樹莓派來做個遠端可以訪問本地的網盤,就拿電腦測試一下。我看大概有以下種工具 frp nps 蒲公英和花生殼。後兩者都是有部分限制的,但不需要自己有伺服器。前兩個適合有伺服器的,我就嘗試了一下nps,我這裡主要試了 的 具體...
ssh內網穿透
總共有3臺機械人 company 能夠訪問外網,沒用公網ip person 能夠訪問外網,沒有公網ip server 具有公網ip person電腦想在家裡遠端ssh登陸到公司的機器 server sudo apt get install openssh server vim etc ssh ssh...
內網穿透 Sunny Ngrok
背景 其實是想自己做個什麼專案可以讓大家都看得到,本來想的是自己租乙個伺服器再租乙個網域名稱。但是一直沒有什麼好的想法,也就一直沒有租,總想著有了想法之後在租,要不多浪費錢是吧 雖然沒有多少錢 然後就遇到我 偉大 的朋友給我介紹了乙個內網穿透的工具 sunny ngrok 內網穿透工具不只這乙個 還...