1. 当前位置:网站首页 > 技术教程

为何Ping不通电脑的公网IP?


为什么我知道了自己pc的公网ip,还是ping不通呢?
通过这个网站获得的ip www.ip138.com,并不能ping通。然后我在pc开了一个udp客户端进程,远程服务器也开了一个udp服务端进程,客户端发包给远程,可以收到回应,远程显示请求的ip也是对的。然后我在远程服务器开了一个客户端进程发包给我pc的ip,依旧没有反应。这是为什么呢。我电脑能看百度的网页说明我电脑的ip是有效的,百度也是可以响应。为什么反过来就请求它就卡住了?
为何Ping不通自己的公网IP?
默认读者有NAT的基础知识。如果没有,可以在博客里找NAT章节阅读。

ISP对于出网(outbound)流量,需要在ISP网关上用自己的外网接口(Internet facing interface)的IP地址来替换IP报文的源IP地址,并将创建的替换关系以NAT表的方式下压到硬件FIB表里。当Ping报文的回复报文返回时,在硬件芯片匹配到刚刚生成的FIB表,所以返程流量可以进来,并最终到达你的电脑,那么你就可以Ping通。


为何Ping不通呢?
网关禁止Ping,其实就是一个Inbound方向的ACL Deny过滤列表,这个ACL列表比FIB表更先看到Ping的回复报文。由于拒绝操作,报文被丢弃,所以无法Ping通。

为何可以访问远程UDP服务器,而远程服务器作为客户端却无法访问我电脑上的服务器?
 
NAT网关,默认允许由内网(inside)主动发起的流量,而拒绝由外网(outside)主动发起的流量。
 
什么是内网(inside)主动发起的流量?
你用电脑(inside)访问远程(outside)服务器,流量是内网的电脑触发的。
 
什么是外网(outside)主动发起的流量?
远程服务器作为客户端(outside)访问你的电脑(inside)服务器,流量是外网的电脑触发的。
 
其实已经回答了你的第二个问题。当允许内网(inside)主动发起的流量,潜台词是,同时还允许返程流量。
 
远程服务器如何才能访问你的电脑呢?
需要你的电脑在NAT网关上主动创建一个FIB表,一个FIB表条目其实就是一个小门,这个小门只允许曾经从这个小门出去的人,才能进来。如果不是从这个小门出去的人,对不起,无法进入。
 
这个小门其实就是一张转换表,假设你的电脑IP =192.168.1.2 , 使用2222端口访问服务器IP= 3.3.3.3 ,端口3333。

 
NAT网关生成的NAT表(192.168.1.2/2222, 3.3.3.3/3333)---(1.1.1.1/56789,3.3.3.3/3333)
 
服务器看到的IP报文来自于1.1.1.1/56789。
 
NAT网关上小门的口令就是(1.1.1.1/56789,3.3.3.3/3333)。
 
服务器只要使用(3.3.3.3/3333)做为源IP/端口号,使用(1.1.1.1/56789)做为目的IP/端口号的IP报文,就可以从小门进入。
 
为了让小门永远敞开,需要双方用keep alive周期性刷新,否则小门会在没有流量刷新的情况下而超时删除,那么远程服务器的流量再也无法进入。只有让客户端主动发起流量,再创建一个小门才可以。

本文最后更新于2021-3-10,已超过 3个月没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!
获取更多资讯请加入交流群

    协助本站SEO优化一下,谢谢!
    关键词不能为空
版权说明

本文地址:http://dufengvip.cn/post-498.html
未标注转载均为本站远程,转载请注明文章出处:

联系我们

在线咨询:点击这里给我发消息

QQ交流群:KirinBlog

工作日:9:00-23:00,节假日休息

扫码关注