我将其创建为一个单独的问题,因为仅凭对所有答案的评论很难进行适当的跟进,否则可能会有些失落。另外,此信息对于有类似问题的人也可能有用。
我不喜欢必须转到路由器配置并配置端口转发的想法,因为这意味着我必须配置尽管是IoT基础设施的一部分,但该设备也不是“我的”设备之一。它必须尽可能减少对现有家庭网络的破坏。另外,在某些情况下,我不知道特定路由器的管理员密码,而且确实很难获得它。
我敢肯定甚至有办法解决如果那意味着拥有可能运行Linux的更强大的IoT HUB,我只是不知道那是什么。如果“替代”方式可以避免端口转发配置,则可以使用更复杂的HUB。
我敢肯定,有一种方法可以考虑像Team Viewer这样的应用程序不需要配置端口转发。
所以问题是,是否有人知道将IoT嵌入式设备“公开”到外部Internet以便从世界上任何地方访问它的方法。不涉及端口转发?
#1 楼
如果无法通过端口转发路由器,则可能必须使用打孔:打孔是计算机网络中的一种技术,用于在两方之间建立直接连接。或两者都位于使用网络地址转换(NAT)的防火墙之后或路由器之后。为了解决这个问题,每个客户端都连接到不受限制的第三方服务器,该服务器临时存储每个客户端的内部和外部地址以及端口信息。然后,服务器将每个客户端的信息中继到另一个客户端,并使用该信息尝试建立直接连接;由于使用有效的端口号进行连接,因此,限制性防火墙或路由器会在每侧接收并转发传入的数据包。
路由器上的NAT意味着网络外部的客户端可以不会连接到网络内部设备的开放端口,但不会限制网络中的设备连接到“代理”。使用一点间接,您可以在两个设备之间建立直接连接,而无需实际打开任何端口-本质上就是Skype和Hamachi之类的服务。
当然,这确实需要外部服务器协调连接,您可能希望信任执行打孔的服务器。
跨网络地址转换器的对等通信,作者Bryan Ford,Pyda Srisuresh和Dan Kegel是一本有趣的文章,提供有关打孔机制及其可靠性的更多信息。
#2 楼
在物联网世界中,设备的资源不足,无法处理来自外部连接的不必要流量,当然,由于需要处理路由器的任何端口转发和防火墙问题,导致以下方法可以在许多物联网后端解决方案中看到:设备将不接受任何未经请求的网络信息。设备将以仅出站方式建立所有连接和路由。
因此设备将打开出站连接,因此无需进行防火墙/路由器调整,只要需要就可以保持通道打开。
关于物联网世界中的通信问题和解决方案。
评论
对于MQTT,设备是客户端(发布者或订阅者或两者),并启动与代理(服务器)的连接。
–Gambit支持
17年1月1日在16:53
“设备的资源不足,无法处理来自出站连接的不必要的流量”那根本没有意义。出站连接只能在网络内部启动。
–克里斯·斯特拉顿(Chris Stratton)
17年12月19日在2:28
@ChrisStratton,如果正在使用NAT,则可以使用端口转发将出站连接直接定向到设备。他们也可以有自己的IP,可以直接从Internet访问。
– shachar
17年12月19日在13:43
您似乎误解了“出站”一词的含义,并错误地将其实际用于“入站”。出站连接是连接到云服务器的物联网设备。入站连接是您的家庭网络外部的东西(例如,当您走在街上时您的电话),试图连接到网络内部的设备。
–克里斯·斯特拉顿(Chris Stratton)
17/12/19在16:54
@ChrisStratton,您是对的,当我写出站时,我的意思是来自外部的流量,该流量基本上是传感器的“入站”连接。我已经修改了答案,谢谢
– shachar
17年12月20日在9:31
#3 楼
尝试敲门。您仍然必须向前转发端口,但是只有在您发送ping的秘密组合(您选择)后,端口才打开。然后,您可以使用另一个秘密的ping组合关闭端口。它可以在嵌入式Linux上运行,例如带有OpenWrt的wifi路由器。#4 楼
虽然我不建议您允许从公共Internet访问任何IoT设备,但是可以使用IPv6在本地实现此目的。他们可以自动获取可从Internet上任何地方路由的IPv6地址(IPv6消除了对NAT和端口转发的需要)。您只需要确保将所有状态防火墙(您的路由器)配置为允许通信到每个设备。有些可能默认情况下(不安全)允许这样做。#5 楼
在家里设置一个VPN服务器,然后从任何地方连接到它。我认为,这比将任何类型的IoT设备暴露于开放Internet都更加安全。
评论
这不只是某种网关吗?
– Helmar♦
17年12月30日在19:55
嗯? VPN是设备与网络之间的点对点(通常是加密的)连接。它使连接设备就像是网络的一部分一样工作。我想您可以将其视为网关...但这是一项服务。
–莫里斯
17年12月31日在5:44
可以,但是该服务仍必须通过家庭路由器(通常通过端口转发或不间断出站连接)。
– Helmar♦
17年12月31日在10:15
是的,您仍然需要将正在运行VPN的端口进行端口转发。但是它比公开单个设备更安全(可能会不太方便,具体取决于您要实现的目标)
–莫里斯
18年1月1日在7:21
评论
精彩!但是,有一个问题,那个第三方服务器或“经纪人”也可以在我家里面吗?并且例如是嵌入式Linux板?因为否则,这种方法将带来更大的问题,即在物联网部署中要包含外部第三方元素。如果嵌入式Linux板不能做到这一点,那将是什么?
– m4l490n
17-2-23在20:27
@ m4l490n:它必须以某种方式位于您的网络之外。我想它可能是某个地方的云服务器,或者如果端口被转发,则可以使用Linux板。只有当您的服务器/设备可以在Internet上的某个地方公开访问时,UDP打孔才有效。这不是理想的选择,但是您无法绕开一个事实,即必须在Internet上公开某些内容才能进行连接。我怀疑您家庭网络中的嵌入式Linux板将无法提供任何优势。您只需要移植它,而不用移植您的物联网设备。
–Aurora0001♦
17-2-23在20:32
优秀的!即使这不是您回答的直接意图,也不是我提出问题的初衷,但我终于了解了云服务器在物联网基础架构中的作用!
– m4l490n
17-2-23在20:46
据我了解,漏洞是虚拟的,不像端口转发中的路由器状态被修改。链接的每一端仅与服务器通信?我相信这将是物联网的典型模型,因为通用网络是多对多的?
– Sean Houlihane
17年2月24日在8:06