我想通过互联网访问我的远程设备(主要是 Raspberry Pi 或类似的单板计算机),而无需对路由器进行任何配置。在大多数情况下,访问用户的路由器很困难/很慢。我尝试避免使用 teamviewer 和 husarnet 等专有服务。
我对网络完全陌生:
- 从哪里开始?
- 我应该关注哪些有趣的项目?
- 你心里有什么想法?
我正在考虑制作我自己的 VPN 服务器。
当我的第一台设备连接到 VPN 后,我可以通过 ssh 连接到也连接到同一 VPN 的远程设备吗?
答案1
我已经在下面回答了你的问题,但在此之前......
我首先要说的是,听起来你正在实施某种物联网设备。在这种情况下,想要 SSH 连接有点不习惯。这可以与数十甚至数百个客户合作。但它很快就会变得难以管理。
通常你应该:
- 将您的操作系统升级部署为完整的映像...因此,没有远程调用
apt-get dist-upgrade
可能会导致设备变砖并迫使您派工程师来修复它们。 - 以类似的方式部署您的应用程序,将其作为一个可自行部署的完整包发送。
- 考虑类似的工具木偶它可以在无人协助的情况下进行维护,并提供一种同时向多个设备发送相同升级的方法。
在这个领域使用过大约 3,000 台设备后,如果可以避免的话,您真的不想养成通过 SSH 登录的习惯。
始终考虑安全性。如果这为黑客进入用户的家庭网络打开了漏洞,那么它可能会结束您的业务。
如果通过 SSH 拨入是您唯一的选择,那么您有几个选择。
反向 SSH 隧道
您可以将设备配置为通过 ssh 连接到远程服务器,并将端口转发回22
设备上的端口。通常,您可以按需执行此操作,因此请在您自己的软件中包含一些触发器来告诉它执行此操作。
设备需要被告知要使用的“远程”端口,然后您需要知道该端口是什么。因此,如果远程端口是1234
,设备将拨出到您的服务器:
ssh -R 1234:localhost:22 remote-server.example.com
然后,您可以自己通过 SSH 连接到远程服务器,并使用前面提到的远程端口从服务器通过 SSH 连接到 IOT 设备:
ssh -p 1234 localhost
这有点复杂,但它有效。您正在建立一个封装在 ssh 连接中的 SSH 连接。但它有效!
永久连接 VPN
正如您提到的,您可以设置 VPN 服务器。我会避免该服务器访问您自己的网络。
您可以在网上找到 OpenVPN 的示例,这很可能是适合这种情况的 VPN 技术。有一些“gotyas”需要避免:
- 用户确实会破解自己的设备。你无法完全阻止这种情况。
- 您不想让您的用户能够窥探您的公司网络。不要让您的 VPN 服务器访问公司网络上的任何内容,使其独立。
- 不要启用 OpenVPN 的
--client-to-client
通信。会让客户互相交谈,而这是你不希望的。但接下来你就需要考虑如何使用这个VPN了?从服务器发起 SSH 连接就可以了。否则,如何将笔记本电脑连接到服务器,使其不是 VPN 客户端。
- 确保您已阅读“自动重新连接”。 VPN 在没有警告的情况下断开连接,客户端需要自动重新连接。
通用即插即用
大多数/所有家庭路由器支持通用即插即用。这将使您的物联网设备在用户的家庭路由器上打开一个端口,让您直接拨入。
这确实有效,但请记住,有些用户禁用此功能,因为他们认为这是一个安全风险。例如:关于该主题的博客讨论这里。