为什么用IP查询网得到的公网ip和traceroute找到的网络出口不一致

Abstract

我在电脑上查询的出口IP是58.60..,然后用tracert命令查询ping百度的路径,结果发现路径里面没有同一网段的(即以58.60.开头的),这是为什么?


正文

这个问题,有两种可能:

(1)运营商给客户分配的是公网IP = 58.60.x.x

(2)运营商给用户分配的是非公网IP,当用户的流量进入Internet,使用公网IP = 58.60.x.x做NAT

这两种情况都有可能traceroute时,网络路径上没有任何一跳的IP和58.60.x.x在一个网段内。接下来分析一下这两种情况:

情况一

通常用户使用PPPoE拨号上网,分配的IP 如58.60.x.x/32,使用32位掩码长度,这样有什么好处呢?不浪费IP资源!问同学们一个问题,PPPoE接口是广播接口还是点对点接口类型?

对,是点对点接口,点对点接口需要通信的双方在一个网段吧?不需要!为何是点对点接口?看看封装格式吧:

Ethernet/PPPoE/PPP/IP/IP Payload

由于从局域网发出的所有IP报文,目的MAC都是PPPoE Server的,源MAC都是家庭路由器的,这不是典型的点对点接口特征吗?Okay,运营商用来终结客户端PPPoE的接口需要IP地址吧?当然需要,可以是任意IP,只要该接口配置IP就可以工作,为了节省IP,通常可以借用别的接口的IP,比如 “IP unnumbered”

客户端拨号成功会生成两条路由:

0.0.0.0/0           PPPoE
58.60.x.x/32        PPPoE

当访问Internet时使用0.0.0.0/0路由,由于是点对点接口,压根不关心下一跳的IP是多少,对吗?所以出现题主描述的现象一点也不奇怪。

情况二

当用户的流量前往Internet时,需要做NAT,那公网IP从哪里来?从路由器的接口上借用吗?可以,但是扩展性不够高,毕竟就一个IP。

那如何扩展性高呢?使用一个公网IP资源池,这个池子可以一个IP、也可以任意多个,完全看需求。

Okay,那这些池子里的公网IP需要事先配置在接口上吗?不需要!

既然58.60.x.x压根没有配置在任何接口上,那当你traceroute 时,那这台NAT设备直连的路由器接口IP,完全有可能不是58.60.x.x。那当你traceroute 到NAT设备时,由于58.60.x.x没有配置在任何接口,所以自然不会使用58.60地址来发送traceroute 出错消息!

原文链接:https://mp.weixin.qq.com/s?__biz=MzIxNTM3NDE2Nw==&mid=2247483847&idx=1&sn=6a905897c8255c6a0666b9fda413f47b&chksm=979801ffa0ef88e951ebdf439df2bea8775d8c8119dd021002c638eb9475254a9e898c30aa1a#rd

猜你喜欢

转载自www.cnblogs.com/Kimbing-Ng/p/12431758.html