7200 Star!開源免費的內網穿透工具

【導語】:inlets是一個基於WebSocket隧道實現的內網穿透工具,能夠將本地服務暴露到公網。python

簡介

inlets利用反向代理和Websocket隧道,將內部或開發中的服務經過出口節點暴露到公網。出口節點能夠是一個VPS,也能夠是任何帶有公網IPv4的電腦。git

相似的工具還有Ngrok、Argo Tunnel等,但這二者都是閉源的,有其自己的限制,價格不菲,以及對arm/arm64的支持有限。Ngrok還常常會被公司防火牆策略攔截而致使沒法使用。而其它開源的隧道工具,基本只考慮到靜態地配置單個隧道。inlets 旨在動態地發現本地服務,經過 Websocket 隧道將它們暴露到公網 IP 或域名,並自動化配置 TLS 證書。github

inlets已完成如下功能:windows

  • 基於客戶端的定義,自動在出口節點建立服務入口服務器

    • 經過 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/inletscurl

簡單使用

詳細的安裝部署步驟參考官網,小秋這裏簡單介紹一下上手安裝的步驟(也是參考官網的操做),省去了token的生成。socket

安裝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/inl...

啓動隧道服務端

這一步須要在有公網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

以下圖:

<br/>
訪問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安裝部署
  • 單出口節點多服務
  • 爲控制平面設定篤定端口
開源前哨 平常分享熱門、有趣和實用的開源項目。參與維護 10萬+ Star 的開源技術資源庫,包括:Python、Java、C/C++、Go、JS、CSS、Node.js、PHP、.NET 等。
相關文章
相關標籤/搜索