如何在我的物联网设备上设置静态 IP 并自动在任何网络上工作

How can I set a static IP on my IoT device and have if work on any network automatically

我正在构建一个家庭物联网设备,但我想不出一种方法来设置可在任何网络上运行的静态 IP。我希望能够将此设备发送给之前设置了静态 IP 的任何人,他们所要做的就是连接到互联网并做好准备。

感谢任何帮助!

家用路由器的网关IP不断变化。这就是为什么有 No-IP, DynDNS,... 和类似服务的原因。这也是一个常见的工作解决方案。您的客户需要动态 DNS 提供商或类似服务。这也是安全摄像机的常见解决方案。另一种可能性是 RPi 将信息发送到云或网络外部的另一个存储,并且应用程序可以访问该云。然而,由于隐私,这可能会有问题...

http://www.noip.com/support/knowledgebase/using-security-camera-systems-with-no-ip/ http://www.networkcameracritic.com/?p=124

问题是您希望 externalWAN IP 像 google 或其他大 IP 一样是静态的公司。这是非常昂贵的,并不是每个互联网服务提供商都提供这项服务。另一个问题是运行该应用程序的智能手机的IP也会不断变化。

也许这个 link 中接受的答案有用 http://www.superuser.com/questions/778640/do-you-need-a-static-ip-address-to-setup-a-webserver

为什么需要静态IP?我假设您想在设备上打开端口,然后让用户连接到它。

如果是这样:干脆不做!这是一个主要的安全问题。

为什么? 关闭所有端口可提供零攻击面。如果您打开互联网端口,物联网设备搜索引擎会找到它并尝试对其进行攻击。即使你的协议今天是安全的,即使用户使用安全密码,你怎么能在 5 年内保证这一点?

改为打开从设备到服务器的连接,让用户连接到服务器。这允许集中保护、监控 (IDS) 和安全更新。

考虑使用 Teredo(开源世界中的 Miredo)。以下是从维基百科无耻复制的摘录。

在计算机网络中,Teredo 是一种过渡技术,可为位于 IPv4 Internet 上但没有与 IPv6 网络的本地连接的支持 IPv6 的主机提供完整的 IPv6 连接。与类似的协议不同,它甚至可以在家庭路由器等网络地址转换 (NAT) 设备后面执行其功能。

您可以让您的客户像配置普通物联网设备一样配置机器人。一旦设备启动并 运行,它会自动连接到中继服务器并获取 IPv6 地址。此 IPv6 地址可以是静态的或动态的,无需使用任何第三方即可更新到您的服务器。

这将为您提供服务器和机器人之间的无缝 bi-directional 连接,而无需诉诸端口转发。您可能必须通过使用 PKI 基础结构限制对 IPv6 地址的访问来解决安全问题。

https://www.remlab.net/miredo/ 结帐 Miredo。您甚至可以考虑设置自己的 Miredo server/relay。

这是一个更新,以防有人遇到同样的问题。我最终使用节点包 ip 来更新数据库中每个机器人的 ip。然后每个客户端从数据库中拉取 ip 进行连接。

这是我的代码片段。服务器在 boot.

触发

var ip = require('ip');
var mongo = require('mongodb')
var MongoClient = mongo.MongoClient

var url = 'your_url'
var name = "example"
function updateIP() { // update ip if need be
  var my_ip = ip.address()
  console.log(my_ip)
  MongoClient.connect(url, function(err, db){
    console.log(err)
    var robots = db.collection('robots')
    robots.findAndModify(
       {name: name},
       [['name', 1]],
       {$set: {ip: my_ip}},
       {update: true})
  })
}