将 IoT 设备暴露给外部 Internet 时,如何避免端口转发?

物联网 智能家居 联网
2021-06-14 23:07:50

我在问题中收到了一些很好的答案,我需要为 IoT 设备创建自己的个人云吗?我从那里了解到的一件事是我需要将我的集线器或网关“暴露”到外部互联网。建议的解决方案是端口转发

我将此作为一个单独的问题创建,因为仅对所有答案发表评论很难正确跟进,有人可能会迷路。此外,此信息可能对有类似问题的人有用。

我不喜欢必须进入我的路由器配置并配置端口转发的想法,因为这意味着我必须配置一个设备,尽管它是 IoT 基础设施的一部分,但不是“我的”设备之一。它必须尽可能减少对现有家庭网络的破坏。此外,我曾遇到过不知道特定路由器的管理员密码的情况,而且很难获得它。

我确信有办法解决这个问题,即使这意味着拥有一个更强大的 IoT HUB 可能运行 Linux,我只是不知道那会是什么。如果“替代”方式允许避免该端口转发配置,则可以使用更复杂的 HUB。

我说我确信有一种方法可以考虑像团队查看器这样的应用程序不需要配置端口转发。

所以问题是,有没有人知道一种将物联网嵌入式设备“暴露”到外部互联网以便从世界上任何地方访问它而不涉及端口转发的方法?

4个回答

如果您无法转发路由器,则可能不得不求助于打孔

打孔是计算机网络中的一种技术,用于在两方之间建立直接连接,其中一方或双方位于防火墙或使用网络地址转换 (NAT) 的路由器之后。为了打一个洞,每个客户端都连接到一个不受限制的第三方服务器,该服务器临时存储每个客户端的外部和内部地址和端口信息。然后服务器将每个客户端的信息转发给另一个,每个客户端尝试使用该信息建立直接连接;由于使用有效端口号的连接,限制性防火墙或路由器接受并转发每一侧的传入数据包。

路由器上NAT意味着网络外部的客户端无法连接到网络内部设备的开放端口,但它不会限制网络中的设备连接到“代理”。使用一点点间接,您可以在两个设备之间建立直接连接,而无需实际打开任何端口 - 这本质上是 Skype 和 Hamachi 等服务所做的。

当然,这确实需要外部服务器来协调连接,并且您可能希望信任执行打孔的服务器。

Bryan Ford、Pyda Srisuresh 和 Dan Kegel 撰写的跨网络地址翻译器的点对点通信是一本有趣的读物,可提供有关打孔机制及其可靠性的更多信息。

在物联网世界中,设备没有足够的资源来处理来自外部连接的不需要的流量,当然需要处理路由器的任何端口转发和防火墙问题导致了以下方法,您可以在许多物联网后端解决方案中看到:

设备不会接受任何未经请求的网络信息。所有连接和路由都将由设备以仅限出站的方式建立。因此,设备将打开出站连接,因此不需要防火墙/路由器调整,并且只要需要,它就会保持通道打开。

一篇不错的文章:连接设备的“服务辅助通信”,关于物联网世界中的通信问题和解决方案。

尝试端口敲门您仍然需要转发端口,但只有在您发送了一个秘密的 ping 组合(您选择)后,端口才会打开。然后您可以使用另一个秘密的 ping 组合关闭端口。它可以在嵌入式linux上运行,例如带有OpenWrt的wifi路由器。

虽然我不建议您允许从公共 Internet 访问任何 IoT 设备,但您可以使用 IPv6 本机实现这一点。

如果您的 ISP 和本地网络配置为 IPv6,并且您的 IoT 设备支持它,它们可以自动获取可从互联网上任何地方路由的 IPv6 地址(IPv6 消除了对 NAT 和端口转发的需要)。您只需要确保所有状态防火墙(您的路由器)都配置为允许流量传输到每个设备。默认情况下,有些人可能会(不安全地)允许这样做。