有两个原因。
(1)首先是更简单的端到端连接。如果源和目标都具有公共 IPv4(当然或 IPv6)地址,则它们可以随时以任何方向相互连接。
但是,您的具有私有 IP 的 IoT192.168.0.52
可以仅使用NAT随时连接到 Internet 上的任何公共 IP,但 Internet 的其余部分无法连接到它。曾经有像DNAT和uPNP这样的工具允许您指定启用某些传入连接,但是由于 IPv4 短缺,由于CGNAT 的实施,它们现在越来越多。
这个问题的一个常见(所谓的)“解决方案”是您的所有(NATed)设备都连接到具有公共 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
然后你的第二个连接将被 NATed 到198.51.100.1:1002
等。
问题是,即使像打开网页这样简单的东西也可能会打开几十个连接并使用十几个端口(用于 DNS 查询、不同元素的 HTTP(S) 连接、不同站点上的 JS 分析等)。
更昂贵的程序,如 torrent 客户端,很容易用掉数千个端口。并且只有65535 个端口可用于任何 IP。
这意味着共享相同 CGNAT IP 的几个邻居使用更大的连接份额(更多的物联网意味着更多的连接),并且突然使用了该公共 IP 198.51.100.1 上的所有 65535 个端口。这意味着无法为您和您的邻居建立新的联系。这在更大的范围内意味着很多人从他们的物联网中被切断,我们所知道的文明崩溃了:-)
由于我们希望尽可能延迟这种文明的崩溃,因此我们正在过渡到IPv6。如果可能,请通过使用 IPv6支持这种文明的继续存在。谢谢!