路由跟踪为什么会有两个局域网?

问:

刚开始学习网络,用Best Trace做了一下路由跟踪,看了这个结果不是很明白,有几个问题想请教一下大家,非常感谢各位大神。

1.为什么第1个记录的ip是公网ip, 后面却标示着‘局域网’,这个是和教育网有关吗?

2.第4个记录为什么又多出一个局域网,教育网也是公网ip, 为什么不直接连广州电信,是因为教育网转入公网的原因吗?

3.第10个记录的4个‘*’符号分别是什么意思,是得不到响应的意思吗?为什么会有这种情况?

另外还有一个问题:

用浏览器打开http://ip.cn,上面显示我所在的ip是183.6.160.232, 是广州电信的,但用Best Trace对http://ip.cn作路由跟踪,所得到的记录里面却没有这个ip。

答:

作者:北极
链接:https://www.zhihu.com/question/287956997/answer/458835550
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

我对这个trace的结果有一些不同的看法,从实际网络部署的角度上看,我觉得其它回答说的都不完全正确:

1.为什么第1个记录的ip是公网ip, 后面却标示着‘局域网’,这个是和教育网有关吗?

高度怀疑是你工具的bug,这个IP地址的归属,建议到APNIC上查一下https://wq.apnic.net/static/search.html,APNIC掌管着亚洲地区的IP地址分配,虽然不能精确到宿舍楼这种场景,但大块地址的所有权还是很明确的。

2.第4个记录为什么又多出一个局域网,教育网也是公网ip, 为什么不直接连广州电信,是因为教育网转入公网的原因吗?

这个比较有意思,首先,先说一种最常见的情况:

即使你拥有公网IP地址,你直接访问教育网的话(注意,不是广州电信),你使用trace工具也可能看到局域网IP地址。

trace工具的原理是设置一个较小的TTL,等到超时的时候,会收到一个中间的三层设备的TTL Expired回应。回应的报文里,会包含一个IP地址,trace工具收到这个地址以后,给你显示出来,你就可以看到某一跳的设备地址了。

回应的报文里的IP地址,是中间节点的那个三层设备填充的,这个设备填充的IP地址,是这个设备上的地址,但一个三层设备,可能有多个IP地址

比如下面的这个图,如果回应的报文是三层设备B返回的,那么它实际上有两个IP地址:IP1和IP2,报文里应该填哪个呢?

[你的PC]----[三层设备A]----(IP1)[三层设备B](IP2)------(外网...)

实际情况是,它填哪个都可以。甚至,更极端的情况下,三层设备B上面连接着十几个不同的网段,那么它返回哪个地址都是可以的。

所以,如果它的某个接口上连接着的是一个内网,它返回一个私有地址是完全有可能的

然后就要继续说这个有意思的事情了,题主遇到的是一种更复杂的情况

正常情况下,教育网要访问公网的网站,是要绕行到教育网的总出口的,我印象里总出口是在北京、上海这种地方,可能广州也有,但应该不在华南理工大学。

所以你正常的trace应该走的是:

校园网-教育网广州节点-教育网北京节点-北京联通->...

但实际情况不符。

那只能证明一点:你们学校自己拉了一个公网出口

我记得我念书的时候(2003年),高校一般都严格禁止私自接一个公网出口,但如果不私自接的话,访问公网又太慢了,现在管的严不严就不清楚了。

但如果学校自己拉一个公网出口,配置起来就很麻烦了,首先要解决的就是路由表的问题:如果路由直接互通,那样会干扰整个教育网的路由,广州的其它大学会看到你们学校整个出口,这些学校要想访问公网是走你们这个出口呢?还是走北京的教育网总出口?真要走到你们这里的话,费用怎么算?

所以为了防止互相干扰,一种特别常见的部署方式是双向NAT技术,用图来说话:

                 (教育网至北京)
                    |
[你的PC]----(IP1)[三层设备A](IP2)---(双向NAT网络)---(IP3)[三层设备B](IP4)------(广州电信)

因为担心两边的路由表会影响对方,所以,当两个不同的网络要私拉一个接口的时候,会在边界路由器上(图里的三层设备A/B)做两个NAT,这样的话,两边互相看不到对方的路由表,只能看到一个内网,在边界上设置几组静态路由,就可以实现转发。

根据我这个图,可以得出一些结论:

三层设备A对应着你的图里的第3跳,IP1是你看到的地址:222.201.129.17
三层设备B对应着你的图里的第4跳,IP3是你看到的地址:192.168.66.250
你在网页上看到的你的公网IP:183.6.160.232,对应着是IP4

这样就能解释你这个图里的好几个问题:

为什么中间会有一个内网地址?为什么显示的公网地址(183.6.160.232)在你trace里找不到?为什么你能直接从校园网直接进入广州电信?

都是因为双向NAT的原因

3.第10个记录的4个‘*’符号分别是什么意思,是得不到响应的意思吗?为什么会有这种情况?

可能的情况有很多,比较常见的情况是有安全设置,禁止回应TTL超时的报文,但也不仅限于这一种,安全设置一般在网络接入层的防火墙附近,在公网里不太常见

我更倾向于可能是trace这个工具本身的问题:

trace对于每个节点要发三次,如果三次返回的IP地址都一样,那么就显示出来,但如果不一样,就显示一个星号“*”

在公网上,为了负载平衡的需要,不同节点之间,尤其在骨干网上,可能存在多条等价路径,如果trace工具在这种位置上尝试trace,就会显示“*”,因为每次返回的IP地址是不同的。

考虑到题主遇到“*”的位置正好是骨干网,我更倾向于这里是因为等价路由导致的。

以上是我的判断。

-----------

对了,题主可以做一个实现,你去ping一下183.6.160.232和192.168.66.250,这两个设备的TTL值可能是一样的(如果能ping通的话)。

下面是车小胖的回答:

我认为比较赞同前者北极的回答,中间的那个内网地址,应该是双向NAT搞出来的。

车小胖的提到的两篇链接:

ISP路由器上是不是拥有Internet中所有路由条目?

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

原文链接:https://www.zhihu.com/question/287956997

猜你喜欢

转载自blog.csdn.net/a3192048/article/details/85309071