7200 Star!開源免費的內網穿透工具
來源:開源前哨
【導語】:inlets 是一個基於 WebSocket 隧道實現的內網穿透工具,可以將本地服務暴露到公網。
簡介
inlets 利用反向代理和 Websocket 隧道,將內部或開發中的服務通過出口節點暴露到公網。出口節點可以是一個 VPS,也可以是任何帶有公網 IPv4 的電腦。
類似的工具還有 Ngrok、Argo Tunnel 等,但這兩者都是閉源的,有其本身的限制,價格不菲,以及對 arm/arm64 的支持有限。Ngrok 還經常會被公司防火牆策略攔截而導致無法使用。而其它開源的隧道工具,基本只考慮到靜態地配置單個隧道。inlets 旨在動態地發現本地服務,通過 Websocket 隧道將它們暴露到公網 IP 或域名,並自動化配置 TLS 證書。
inlets 已完成以下功能:
-
基於客戶端的定義,自動在出口節點創建服務入口
-
通過 DNS / 域名實現單端口、單 Websocket 承載多站點
-
利用 SSL over Websockets 實現鏈路加密(wss://)
-
自動重連
-
通過 Service Account 或 HTTP Basic Auth 實現權限認證
-
通過 HTTP01 challenge 使用 LetsEncrypt Staging 或 Production 簽發證書
-
原生跨平臺支持,包括 ARMHF 和 ARM64 架構
-
提供 Dockerfile 以及 Kubernetes YAML 文件
-
自動發現並實例化 Kubernetes 集羣內 LoadBalancer 類型的 Service - inlets-operator
-
除 HTTP(s) 以外,還支持在隧道內傳輸 Websocket 流量
項目地址:
https://github.com/inlets/inlets
簡單使用
詳細的安裝部署步驟參考官網,小秋這裏簡單介紹一下上手安裝的步驟(也是參考官網的操作),省去了 token 的生成。
安裝 inlets 服務
官網推薦使用 brew 或 curl 安裝:
# 安裝到當前目錄
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 文件並在命令行中執行,下載地址爲:
https://github.com/inlets/inlets/releases
啓動隧道服務端
這一步需要在有公網 IP 的機器上操作,以達到將內網服務映射出網的目的。(小秋沒有這樣的服務器,直接在本機安裝,無法映射出公網,但是也能完成代理映射的過程,而過程都是一樣的。)
下載了 inlets.exe,放到 F 盤下,執行命令啓動:
/f/inlets/inlets.exe server --port=8090
如下圖:
運行 HTTP 服務
使用 Python 內置的 HTTP 服務做測試:
mkdir inlets-test
cd /inlets-test
touch hello-world
python -m http.server 3000
如下圖:
訪問 localhost:3000
啓動 inlets 客戶端
在和 HTTP 服務同一臺機器上啓動 inlets 客戶端,執行以下命令:
/f/inlets/inlets.exe client --remote=192.168.244.1:8090 --upstream=http://127.0.0.1:3000
-
--remote 參數必須設置爲出口節點的 IP
-
--upstream 參數即爲需要暴露的內網服務的 ip 和端口
如下圖:
訪問出口節點:
其他
以上可以說是 inlets 最基本也最常用的功能,inlets 還有更多高級功能,感興趣的童鞋可以試試:
-
支持 Docker 安裝部署
-
單出口節點多服務
-
爲控制平面設定固定端口
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/CaN9JnV5hn5vU8ou94f5GA