02.23 從零開始:樹莓派

沒有公網 IP 的樹莓派玩家如果想在公司或其他地方訪問到家裡的樹莓派,需要藉助

內網穿透 技術,ngrok 就是其中一種比較流行的方案。

ngrok 是一個開源的基於反向代理的內網穿透軟件,誕生至今已經 7 年,在國外有官網和服務器,提供免費的穿透服務。

安裝 ngrok

首先,前往 ngrok 官網 https://ngrok.com/download,下載客戶端。如果是樹莓派 4B,可以下載 Linux(ARM64) 版本,如果是樹莓派 3B 及以前的型號,可以下載 Linux(ARM) 版本。

從零開始:樹莓派_ngrok_內網穿透

如果你是用自己的電腦下載的 ngrok,則要把下載好的 ngrok zip 文件上傳到樹莓派桌面。上傳方法可以參考 教你用樹莓派遠程桌面和電腦互傳文件 - 硬核樹莓派。

或者直接在樹莓派上執行下載指令:

<code>wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-arm64.tgz/<code>

接著,解壓 ngrok zip 包:

<code>unzip ngrok-stable-linux-arm64.tgz/<code>

解壓完成後,當前目錄下會多出一個 ngrok 文件。這個就是 ngrok 的可執行程序了。

從零開始:樹莓派_ngrok_內網穿透

啟動 ngrok 內網穿透

ngrok 執行反向代理的時候會同時啟動一個 4040 端口的監控服務,用於監控網絡連接等情況。我們這裡就先內網穿透到樹莓派本地的 4040 端口,讓我們能從外網打開 ngrok 監控頁面。

首先,執行 ngrok 代理到本地的 4040 端口:

<code>./ngrok http 4040/<code>

指令執行成功後,ngrok 會在屏幕上打印反向代理出來的外網地址:

從零開始:樹莓派_ngrok_內網穿透

接著,用瀏覽器打開上面 https://cf0eba4d.ngrok.io/ 這個地址,就能看到 ngrok 的監控頁面。

從零開始:樹莓派_ngrok_內網穿透

如果你的樹莓派還運行著其他的服務,都可以用類似的方法代理出來。比如:

  • ./ngrok http 80 代理 web 服務
  • ./ngrok tcp 22 代理 ssh 服務

自定義外網域名

默認情況下,ngrok 每次啟動都會生成隨機的外網域名,臨時用一下可以。但如果你想有穩定的域名,就需要上 ngrok 註冊賬戶。

首先,登錄 ngrok 官網(https://dashboard.ngrok.com/login)註冊賬戶。

接著,複製 ngrok 的賬戶設置指令,並在樹莓派上執行。這個指令只需要執行一次即可。

從零開始:樹莓派_ngrok_內網穿透

從零開始:樹莓派_ngrok_內網穿透

然後,加 -subdomain 參數指定子域名啟動 ngrok:

<code>./ngrok http -subdomain=hardcore-rpi 4040/<code>
從零開始:樹莓派_ngrok_內網穿透

如果有自己的域名的話,還可以配置 CNAME 到 ngrok 指定的域名,用自己的域名做反向代理。具體操作看官方文檔:https://ngrok.com/docs#http-custom-domains

必須要注意的是,免費賬戶不能“保留”自己的域名。也就是說,-subdomain 指定的子域名可能和別人衝突而導致用不了。所以要麼升級 ngrok 賬戶保留自己的域名,要麼指定一個較長的不容易衝突的子域名。

國內 ngrok 替代服務

由於眾所周知的原因,ngrok.io 這個域名其實不太穩定,偶爾會連不上,所以國內一些玩家或服務商提供了 大陸版 ngrok 替代服務,比如:

  • NATAPP基於ngrok的國內高速內網穿透服務
  • Ngrok國內免費服務器-小米球ngrok
  • 樹莓派內網穿透方法大全 - 硬核樹莓派
  • inconshreveable/ngrok: Introspected tunnels to localhost
  • ngrok - secure introspectable tunnels to localhost


分享到:


相關文章: