部分运营商traceroute结果中含有私有IP段,有何利弊?

斜体部分为读者提问

本地网络是上海移动(铁通),访问电信网络查看到的本机IP和PPPoE得到的公网IP不一致。电信看到的是一个其他省市的电信IP,而本机获得的公网IP是上海铁通的。通过tracert会看到经过了几跳使用私有IP段的路由器,尽管所有电信网站均无法Ping通但的确可以访问。(电信网络同样无法Ping通本机获得铁通公网IP)

运营商这样做有何利弊?为何访问国外网站则能正常显示本机IP,也能互相Ping通?

这个问题可以归纳为以下几个小问题。

Q1为何本机通过PPPoE拨号获得的公网IP,但是访问电信网络却显示的是不同的公网IP?

毫无疑问,主机PPPoE拨号获得的公网IP,是真实的公网IP,可以在Internet上自由自在地访问,这个从访问国外网站上的表现可以分析得出。

访问电信网路,使用了两种技术得其中得一种:

1 NAT技术

主机得公网IP,被移动NAT替换成与电信网络直连接口IP(或地址池中一个),这样最终在目的地服务器看来,是和电信网络直连接口IP通信,而不是和主机的公网IP通信。

NAT让电信服务器,以为是和NAT设备通信,自然流量会返回给NAT。这样就可以严格控制返回流量的流经路径。也许不同的网间链路其结算费用不一样,有便宜的,也有昂贵的,为了节省费用,自然会选择便宜的链路。

2透明代理技术

所谓透明代理,是用户没有配置过代理,用户感受不到代理的存在,用户的网页访问被重定向到移动网络的代理服务器,代理服务器再与目的服务器通信。

代理服务器,可以充当缓存服务器,缓存着海量静态资源,如图片、视频,一旦匹配到,直接返回给用户主机,避免再耗费大量的网间流量去电信网络去抓,这样可以节省网间结算费用。

Q2为何traceroute会出现6跳私有IP?

Traceroute报文进入了一个私有IP互联的网络,出现TTL=0时,自然使用私有IP作为源IP发ICMP出错消息。

有同学自然会问,为何这些私有IP没有转换成公网IP?

那是因为使用私有IP的互联接口,压根不会被用来访问互联网。如果用这些私有IP作为源IP,去访问互联网,肯定会NAT成公网IP。

而却可以使用私有IP做为源IP,去发送单向的ICMP Error Message。

Q3为何通过网页可以访问电信的网站,却不可以Ping通?

访问电信网站是基于TCP端口转发,而ping 没有端口,自然不会被代理转发。

NAT情况是,如果移动网络没有为Ping报文做动态NAT,自然无法Ping通。

Q4为何访问国外网站显示的IP ==本机PPPoE拨号获得的公网IP?

国内网间的流量使用了代理服务器或NAT,而访问国外的网站,没有使用这些技术,让用户IP与国外服务器直接通信。

Q5有何利弊?

NAT的存在,破坏了本来端到端通信,NAT如同一个中间人一样存在着,一旦出问题不利于排查问题。

代理服务器,使得本来端到端通信,演变成多个点对点通信的叠加,一旦出问题,端到端都无法Ping通,加大了排查的难度。

Q6从第12跳开始为何都请求超时了?

前11跳一直处于移动网络,自然没有问题。

从12跳开始,将要进入电信网络,由于移动网络没有给traceroute报文做动态NAT映射,或做基于端口的转发,所以traceroute报文全丢了。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180524G10AXQ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券