7200 Star!開源免費(fèi)的內(nèi)網(wǎng)穿透工具
【導(dǎo)語】:inlets 是一個(gè)基于 WebSocket 隧道實(shí)現(xiàn)的內(nèi)網(wǎng)穿透工具,可以將本地服務(wù)暴露到公網(wǎng)。
簡(jiǎn)介
inlets 利用反向代理和 Websocket 隧道,將內(nèi)部或開發(fā)中的服務(wù)通過出口節(jié)點(diǎn)暴露到公網(wǎng)。出口節(jié)點(diǎn)可以是一個(gè) VPS,也可以是任何帶有公網(wǎng) IPv4?的電腦。
類似的工具還有 Ngrok、Argo Tunnel 等,但這兩者都是閉源的,有其本身的限制,價(jià)格不菲,以及對(duì) arm/arm64 的支持有限。Ngrok 還經(jīng)常會(huì)被公司防火墻策略攔截而導(dǎo)致無法使用。而其它開源的隧道工具,基本只考慮到靜態(tài)地配置單個(gè)隧道。inlets 旨在動(dòng)態(tài)地發(fā)現(xiàn)本地服務(wù),通過 Websocket 隧道將它們暴露到公網(wǎng) IP 或域名,并自動(dòng)化配置 TLS 證書。
inlets 已完成以下功能:
基于客戶端的定義,自動(dòng)在出口節(jié)點(diǎn)創(chuàng)建服務(wù)入口 通過 DNS / 域名實(shí)現(xiàn)單端口、單 Websocket 承載多站點(diǎn) 利用 SSL over Websockets 實(shí)現(xiàn)鏈路加密(wss://) 自動(dòng)重連 通過 Service Account 或 HTTP Basic Auth 實(shí)現(xiàn)權(quán)限認(rèn)證 通過 HTTP01 challenge 使用 LetsEncrypt Staging 或 Production 簽發(fā)證書 原生跨平臺(tái)支持,包括 ARMHF 和 ARM64 架構(gòu) 提供 Dockerfile 以及 Kubernetes YAML 文件 自動(dòng)發(fā)現(xiàn)并實(shí)例化 Kubernetes 集群內(nèi) LoadBalancer 類型的 Service - inlets-operator 除 HTTP(s) 以外,還支持在隧道內(nèi)傳輸 Websocket 流量
項(xiàng)目地址:
https://github.com/inlets/inlets
簡(jiǎn)單使用
詳細(xì)的安裝部署步驟參考官網(wǎng),小秋這里簡(jiǎn)單介紹一下上手安裝的步驟(也是參考官網(wǎng)的操作),省去了token的生成。
安裝inlets服務(wù)
官網(wǎng)推薦使用 brew 或 curl 安裝:
#?安裝到當(dāng)前目錄
curl?-sLS?https://get.inlets.dev?|?sh
#?安裝到?/usr/local/bin/
curl?-sLS?https://get.inlets.dev?|?sudo?sh
#?使用brew安裝
brew?install?inlets
小秋在windows上使用,直接下載inlets.exe文件并在命令行中執(zhí)行,下載地址為:
https://github.com/inlets/inlets/releases
啟動(dòng)隧道服務(wù)端
這一步需要在有公網(wǎng)IP的機(jī)器上操作,以達(dá)到將內(nèi)網(wǎng)服務(wù)映射出網(wǎng)的目的。(小秋沒有這樣的服務(wù)器,直接在本機(jī)安裝,無法映射出公網(wǎng),但是也能完成代理映射的過程,而過程都是一樣的。)
下載了 inlets.exe,放到 F 盤下,執(zhí)行命令啟動(dòng):
/f/inlets/inlets.exe?server?--port=8090
如下圖:

運(yùn)行HTTP服務(wù)
使用Python內(nèi)置的HTTP服務(wù)做測(cè)試:
mkdir?inlets-test
cd?/inlets-test
touch?hello-world
python?-m?http.server?3000
如下圖:

訪問localhost:3000

啟動(dòng)inlets客戶端
在和HTTP服務(wù)同一臺(tái)機(jī)器上啟動(dòng)inlets客戶端,執(zhí)行以下命令:
/f/inlets/inlets.exe?client?--remote=192.168.244.1:8090?--upstream=http://127.0.0.1:3000
--remote參數(shù)必須設(shè)置為出口節(jié)點(diǎn)的IP --upstream參數(shù)即為需要暴露的內(nèi)網(wǎng)服務(wù)的ip和端口
如下圖:

訪問出口節(jié)點(diǎn):

其他
以上可以說是 inlets 最基本也最常用的功能,inlets還有更多高級(jí)功能,感興趣的童鞋可以試試:
支持Docker安裝部署 單出口節(jié)點(diǎn)多服務(wù) 為控制平面設(shè)定篤定端口
-?EOF -?
更多優(yōu)秀開源項(xiàng)目(點(diǎn)擊下方圖片可跳轉(zhuǎn))
開源前哨
日常分享熱門、有趣和實(shí)用的開源項(xiàng)目。參與維護(hù)10萬+star 的開源技術(shù)資源庫,包括:Python, Java, C/C++, Go, JS, CSS, Node.js, PHP, .NET 等
關(guān)注后獲取
回復(fù)?資源?獲取 10萬+ star 開源資源
分享、點(diǎn)贊和在看
支持我們分享更多優(yōu)秀開源項(xiàng)目,謝謝!



