我有一个 Zoomtel 的蜂窝调制解调器。我通过 pppd 将运行 Debian 的 BeagleBone 嵌入式计算机连接到它。
当我运行 ifconfig 时,我看到了接口 ppp0。但是,这会获取 10 范围内的本地 IP 地址:10.XXX。
现在我不明白这一点。这里不应该是公共 IP 地址吗,因为 BeagleBone 和调制解调器是通过服务提供商直接连接到互联网的,而不是通过路由器。
我的理解是,当我们连接时,ISP(Internet 服务提供商)会为我们分配一个动态公共 IP 地址。为什么我们在运行 ifconfig 时看不到公共 IP 地址,而看不到 10 范围内的私有 IP 地址。这是如何工作的?
答案1
这里不应该是一个公共 IP 地址吗,因为 BeagleBone 和调制解调器通过服务提供商直接连接到互联网,而不是通过路由器后面。
首先,互联网制成在路由器之外……你要找的区别是“不在路由器后面执行 NAT“。家庭网关路由器执行地址转换,而服务提供商的路由器通常不执行。
其次,不幸的是,正如越来越多的 ISP 的情况一样,你的 BeagleBone 和调制解调器不是不再直接连接到互联网。主要是由于 IPv4 地址短缺,您的 ISP 现在执行 NAT在服务提供商方面也是如此。(这称为“CGNAT”,即运营商级 NAT。)它是完全相同的机制,但它通常在多个客户之间共享相同的公共地址。
(事实上,IPv4 地址短缺也是典型家用路由器必须转换地址的原因 - 但以前情况并不那么严重,每个客户一个公共 IPv4 仍然很容易实现。然而现在,一些 ISP 甚至无法承担这一点。)
CGNAT 在移动 ISP 中尤其常见,因为绝大多数客户都没有理由注意到这种变化,并且 ISP 通常至少会为少数需要的人保留一些公共地址。