移动网络为何ping不通自己的公网IP?

我是玩网工哒 2024-03-14 03:17:54

移动网络 ping 不通自己的公网 ip,显示请求超时怎么办?

题主所谓的公网IP,并没有配置在任何主机的TCP/IP协议栈上,所以Ping不通。在浩瀚的互联网上去寻找答案,包括ChatGPT机器人,答案就是“禁Ping了“。可是真相往往并不是这样。

这是手机4G网络分配的内网IP:10.181.2.18

这个内网IP地址配置在手机TCP/IP协议栈上的,所以手机Ping自己的内网IP是没有问题的。

用这个手机访问互联网时呈现的公网IP:223.104.5.212

这个公网IP,是存在于移动网络城域网与核心网边界网关(Edge Gateway)上,准确地说,是以NAT Database的形式存在。

这个IP有没有配置在边界TCP/IP协议栈上?

并没有。既然没有配置,那么不光手机Ping不通,地球上所有的主机都不会Ping通它。

没有配置在TCP/IP协议栈上,手机怎么使用它访问互联网服务器(微信什么)的?

一句话:边界网关在出方向,将IP报文10.181.2.18 ---- > 223.104.5.212 (可能还有TCP/UDP端口号的映射)。

两句话:将以上映射关系保存在NAT Table里。

三句话:边界网关在入方向,查NAT Table,将IP报文223.104.5.212 ---- > 10.181.2.18 (可能还有TCP/UDP端口号的映射)。

通过上文的分析,公网IP配没配在TCP/IP协议栈上并不会影响上网。唯一的影响就是Ping不通它。

问题来了,一个IP地址没有配置在TCP/IP协议栈上,如何将它通过BGP路由协议将它通告给互联网呢?

不知道读者还有印象哇,向BGP advertise路由,这个路由必须存在于Routing Table?

简单,可以使用aggregate命令产生一个聚合静态路由,指向Null接口,比如:

223.104.0.0/16 --------- > Null0

然后向BGP协议通告即可。

现在来Ping 223.104.5.212,会发生什么?

Ping报文到达边界网关,查路由表,相比0.0.0.0/0,汇聚路由223.104.0.0/16更优,故选择之。由于出口对应Null0,这是一个逻辑空接口,直接将Ping报文扔进去,没有了。

接下来看看Ping 8.8.8.8,会发生什么?

Ping报文到达边界网关,查路由表,最佳匹配0.0.0.0/0,指向互联网。

返程流量,先查NAT Table,将公网IP---> 内网IP,可以Ping通。

最后,浩瀚互联网有N多公网IP,它们绝大多数都是Ping不通的,因为它们不提供对公服务。只有哪些需要提供对公服务的公网IP需要提供Ping服务,比如微信、知乎、亚马逊等。而要提供公网IP的Ping服务,这个公网IP一定是配置在TCP/IP协议栈上,而且不要有防火墙阻隔,两者缺一不可。

最后,如果对无线网络感兴趣,欢迎关注后续分享。

作者|车小胖谈网络|公众号

0 阅读:0