【導語】:inlets是一個基於WebSocket隧道實現的內網穿透工具,能夠將本地服務暴露到公網。python
inlets利用反向代理和Websocket隧道,將內部或開發中的服務經過出口節點暴露到公網。出口節點能夠是一個VPS,也能夠是任何帶有公網IPv4的電腦。git
相似的工具還有Ngrok、Argo Tunnel等,但這二者都是閉源的,有其自己的限制,價格不菲,以及對arm/arm64的支持有限。Ngrok還常常會被公司防火牆策略攔截而致使沒法使用。而其它開源的隧道工具,基本只考慮到靜態地配置單個隧道。inlets 旨在動態地發現本地服務,經過 Websocket 隧道將它們暴露到公網 IP 或域名,並自動化配置 TLS 證書。github
inlets已完成如下功能:windows
基於客戶端的定義,自動在出口節點建立服務入口服務器
經過 Service Account 或 HTTP Basic Auth 實現權限認證架構
項目地址:
https://github.com/inlets/inletscurl
詳細的安裝部署步驟參考官網,小秋這裏簡單介紹一下上手安裝的步驟(也是參考官網的操做),省去了token的生成。socket
官網推薦使用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/inl...
這一步須要在有公網IP的機器上操做,以達到將內網服務映射出網的目的。(小秋沒有這樣的服務器,直接在本機安裝,沒法映射出公網,可是也能完成代理映射的過程,而過程都是同樣的)
下載了inlets.exe,放到F盤下,執行命令啓動:
/f/inlets/inlets.exe server --port=8090
以下圖:
使用Python內置的HTTP服務作測試:
mkdir inlets-test cd /inlets-test touch hello-world python -m http.server 3000
以下圖:
<br/>
訪問localhost:3000
在和HTTP服務同一臺機器上啓動inlets客戶端,執行如下命令:
/f/inlets/inlets.exe client --remote=192.168.244.1:8090 --upstream=http://127.0.0.1:3000
以下圖:
訪問出口節點:
以上能夠說是inlets最基本也最經常使用的功能,inlets還有更多高級功能,感興趣的童鞋能夠試試:
開源前哨
平常分享熱門、有趣和實用的開源項目。參與維護 10萬+ Star 的開源技術資源庫,包括:Python、Java、C/C++、Go、JS、CSS、Node.js、PHP、.NET 等。