有两个原因。
(1)首先是更简单的端到端连接。如果源和目标都具有公共IPv4(或IPv6)地址,则它们可以随时沿任何方向相互连接。
192.168.0.52
但是,具有私有IP的IoT 只能在需要时使用NAT来连接到Internet上的任何公共IP,但是Internet的其余部分无法连接到它。有像组装机DNAT和uPNP的是用来让你指定某些传入连接启用,但他们由于实现的突破越来越时下CGNAT因为IPv4的短缺。
一个常见的(所谓的)解决方案是,您的所有(经过NAT转换)的设备都使用公用IP(通常由设备制造商托管)连接到某个中央位置。这使它在技术上可以正常工作,但是涉及到隐私问题(您要提供IoT中的所有数据),安全问题(因为您对它们敞开大门),受到侵害或不满的员工可以做您的IoT设备可以执行和访问的任何操作)和可靠性问题(当制造商停业或决定停止支持旧设备或遭受故障的情况时),您所有(以及其他所有人)功能完善的设备将停止工作。
(2)第二个问题是,它将在将来的某个时候停止工作(即使对于传出连接也是如此)(不是在一两年之内,但是仍然如此。物联网和服务的普及越多,它就会越早开始崩溃)。
那是因为NAT允许私有地址像192.168.0.52
整个Internet 一样到达。它通过将源地址更改192.168.0.52
为路由器的公共IP来实现,但是用池中的空闲端口替换了源端口。
例如,你的第一个连接可能是192.168.0.52:1000
可能是(CG)-NATed到(公网IP) 198.51.100.1:1000
,和你的邻居192.168.0.77:1000
可能会经过NAT来198.51.100.1:1001
。您的第二个连接将从192.168.0.52:1001
NAT到198.51.100.1:1002
etc。
问题是,即使是像打开网页之类的简单事情,也可能会打开数十个连接并使用许多端口(用于DNS查询,用于不同元素的HTTP(S)连接,不同站点上的JS分析等)。
洪流客户端等更昂贵的程序将很容易用完数千个端口。而且,只有65535个端口可用于任何IP。
这意味着您的几个共享相同CGNAT IP的邻居使用的连接份额更大(更多的IoT将意味着更多的连接),并且突然使用了该公共IP 198.51.100.1上的所有65535端口。这意味着无法为您和您的邻居建立新的连接。从更大的角度来看,这意味着有很多人无法使用物联网,而我们所知道的文明正在崩溃:-)
由于我们希望尽可能长时间地延迟这种文明崩溃,因此我们正在过渡到IPv6。如果可能,请通过使用IPv6支持这种文明的持续存在。谢谢!