我有一个应用程序,要求共享 3G 或 4G 网络接入点(相同公共 IP 地址)的用户直接通过他们的本地 IP 地址进行通信,而不是尝试遍历他们的全球 IP 地址,但我的 T-mobile 上的本地网络地址3G 和 4G 网络不像大多数路由器上的普通本地 IP 地址——它们从不以192, 172, 或开头10。相反,它们以其他号码开头 - 例如,我的手机现在显示我的私有 IP 地址是21.48.25.107。当 IP 地址来自蜂窝网络时,如何判断 IP 地址是否为本地地址?
澄清:
我正在为蜂窝应用程序实施点对点 NAT 遍历解决方案。当设备共享公共 IP 地址时,我避免使用公共 IP 地址,因为大多数路由器不支持发夹转换。
发夹是一种行为,当 NAT 设备检测到(公共 IP 地址)目标时,NAT 设备会将数据包从内部网络中的主机(我们称之为主机 A)转发回同一内部网络中的其他主机(主机 B)该数据包实际上是为内部主机(主机 B)创建的映射 IP 地址。这是 NAT 的理想行为,但不幸的是,并非所有 NAT 设备都支持这一点。如果缺少这种行为,位于同一 NAT 后面的两个(内部)主机如果交换它们的公共地址,将无法相互通信。
这就是为什么如果他们共享一个公共 IP 地址,他们必须交换和使用他们的本地 IP 地址。