![如何从互联网访问 IP 设备](https://linux22.com/image/1479402/%E5%A6%82%E4%BD%95%E4%BB%8E%E4%BA%92%E8%81%94%E7%BD%91%E8%AE%BF%E9%97%AE%20IP%20%E8%AE%BE%E5%A4%87.png)
我想从互联网访问 Windows 物联网设备。我想通过以太网将我的设备连接到任何网络。网络已连接到互联网。我没有静态 IP,而且我对我的设备所连接的网络一无所知。
所以我想我可以在该设备上运行一个应用程序来检测新的以太网连接。该应用程序可以将实际 IP 地址和有关网络的信息发送到特定端点。有了这些信息,我想我可以连接到 Windows 物联网设备吗?
是否有可能在不了解网络任何信息的情况下从“外部”自动访问设备?
编辑:
当我将设备插入以太网并且防火墙允许时,我希望设备将指定的数据发送到 Azure Event Hub 等云服务。在云中接收事件并识别新设备后,我也想向设备发送消息。但我不想使用 DNS 或 VPN,也不想使用 Azure IoT Hub,因为我希望能够更改云提供商。
答案1
为了从外部网络连接到 IP 网络中的设备(即跨越路由器边界),而无需了解内部网络的信息,您需要从 IoT 设备启动到外部网络(例如 Internet)中您可以控制的服务器的连接。如果内部网络防火墙允许您的设备这样做(通常是允许的),那么您需要从计算机连接到外部服务器,并且该服务器应该能够将您的通信路由到您的设备。例如,TeamViewer 就是这样工作的。
如果内部网络防火墙不允许您的设备连接到外部服务器,那么您将无法做您想做的事情。
如果您需要通过特定网关连接到互联网(例如,代理服务器),那么您将需要拥有所需的确切凭据,否则您的设备将被限制在内部网络中。
答案2
您可以使用各种动态 DNS 名称服务器应用程序来提供静态名称,以便您可以连接到已知地址。更多信息请参阅 wiki:https://en.wikipedia.org/wiki/Dynamic_DNS
这不会帮助您连接到“一无所知”的网络。这就是 UPNP 的作用所在。您可以使用 UPNP 自动创建到路由器的特定端口映射,这样已知端口就会始终路由到路由器内的 IP 设备。更多详细信息请参见: https://en.wikipedia.org/wiki/Universal_Plug_and_Play#NAT_traversal
如果你把两者结合起来,你应该
a) 有一个固定地址可以连接 b) 路由到设备的地址中有固定端口
不幸的是,名称服务器更新不是即时的,因此如果您依赖 Google 名称服务器,则新的动态地址需要一些时间才能传播。一些动态 DNS 提供商有自己的名称服务器来解决这个问题。这样,您自然会将所有网络流量暴露给他们,因此检查 TOS wrt 数据挖掘是合适的。