为什么用IP查询网查询的自己的外网IP和用tracert命令查询的自己的出口IP不一致?

斜体为读者提问:

我在电脑上查询的出口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

posted @ 2018-12-27 21:32  Adano1  阅读(462)  评论(0编辑  收藏  举报