蜂窝互联网网络上的本地地址使用哪些 IP 地址范围?

网络工程 路由器 无线的 ipv4
2021-07-04 18:17:54

我有一个应用程序,要求共享 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 地址。

3个回答

它不能回答您的问题,但可以回答您的需要:我担心唯一的选择是让所有对等方在直接连接到 Internet(没有 NAT)的服务器上注册其本地 IP 地址。然后,每个对等点都可以向服务器查询其他人的本地和转换后的 IP 地址。如果他们转换后的公共 IP 地址在同一范围内(分配在同一 AS 中),则他们可以尝试通过其本地 IP 地址进行直接连接。

当然,有了端到端的 IPv6 连接,就不会有问题......

您无法确定将使用哪些本地地址范围,但您可以使用本地链路 IPv6 地址进行本地通信,以防发夹转换不可用。

正确的私有地址是众所周知的。有时地址会添加到列表中,但这种情况很少见。

不幸的是,T-Mobile 似乎正在使用被劫持的地址空间。21.0.0.0/8 分配给“国防部网络信息中心(DNIC)”

检测机器是否在 NAT 后面很容易,只需将客户端为连接报告的本地 IP(使用 getockname api 调用)与服务器为连接报告的远程 IP 进行比较。无论在 NAT 后面使用的本地 IP 地址是众所周知的私有 IP 地址、被劫持的 IP 地址还是合法分配给相关网络的 IP 地址,这都将起作用(有时即使您的客户端具有合法的 IP 地址,也可以使用 NAT公共 IP 地址)

然而,即使两台机器在同一个公共 IP 后面,也不能保证使用它们的本地地址进行通信。同样,无法保证使用 NAT 穿越技术进行通信会起作用。

很遗憾,如果您想要可靠的操作,您将不得不实现通过服务器进行通信的回退。