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


分享到:


相關文章: