我有一个 Raspberry Pi,它可以通过移动提供商访问互联网。我可以在这个 Pi 上安装任何软件,并可以对其进行编程以连接到任何外部主机。
但它没有静态IP。
我可以让这个 Pi 连接到某个外部主机,然后从该主机以“反向”访问 Pi 的命令行吗?这项技术的名称是什么?我应该使用什么软件?
答案1
在我们公司,我们为销售给客户的计算机提供了一种“打电话回家”并使其可用的方法,尽管我们不知道它们最终会使用什么 IP 地址。当服务在他们的机器上启动时,它会连接到我们始终在线的静态 IP Web 服务器机器:
ssh -R 2222:本地主机:22[电子邮件受保护]
客户执行此操作后,我们可以登录到我们的网络服务器并运行
ssh -p 2222 帐户@localhost
这会与 Web 服务器上的端口 2222 建立 SSH 连接,该连接会转发到客户端计算机的端口 22,因此我们通过 ssh 登录到他们的计算机。
答案2
您本质上要问的是“我怎样才能构建一些东西,将 Pi 呈现在可靠的地址下并允许远程连接”。
首先是坏消息:大多数移动提供商不允许连接到其订户 IP 地址上的侦听 TCP 端口。这就排除了“通常的”dyndns 解决方案,该解决方案可能会将域名指向不断变化的 IP 地址。 (事实上,如果您使用的是移动设备、运营商级 NAT 等设备,您甚至可能没有公共 IP 地址。)
因此,您需要将 Pi 自动连接到可以实现这些功能的虚拟网络 – 您确实需要 VPN。
最简单的可能是使用一种免费云托管服务(例如,Oracle Cloud 有非常强大的免费虚拟机,而不是您需要任何强大的东西),在其中设置 Linux,然后设置一个钢丝卫士其上带有 NAT 的端点。然后,您可以通过该网络将虚拟机的任何端口转发到 Pi 的(VPN 内部)IP 地址,并且wireguard 对于更改 IP 地址和断开连接具有很强的弹性,因此这是一个非常稳定的解决方案。我确实将其用于现场传感器。
另外,如果您愿意,您还可以将应该连接到 Pi 的机器添加到同一个 wireguard 网络。这样,他们就可以直接连接到私有 IP 地址,无需公共端口。
好的一点是,wireguard 是现代 Linux 内核的一部分,因此您实际上只需要安装一个非常小的工具来设置密钥和连接;其余的,Linux 可以开箱即用。
我很快发现有很多关于如何设置 Wireguard VPN VM 的指南这个以蔚蓝为中心的指南,没仔细检查过。。