怎么能知道全网的路由信息?

2016-02-20 17:47:04 +08:00
 anonymoustian

这两天查了一下,这个叫做“网络拓扑发现”;
但是看了一下是通过 SNMP 协议下的网络拓扑发现,我想问问如果对于陌生的互联网, SNMP 能实现吗?
是不是得通过 Ping 或者 Traceroute 测试才可以? 如果运营商禁止 ICMP 的话呢?

4081 次点击
所在节点    信息安全
12 条回复
gamexg
2016-02-20 17:48:57 +08:00
互联网的是 BGP

例子: http://bgp.he.net/AS24482
anonymoustian
2016-02-20 18:00:24 +08:00
@gamexg 能再详细点吗
lhbc
2016-02-20 18:36:06 +08:00
看高春辉写的几篇文章
redsonic
2016-02-20 19:25:47 +08:00
实际上是不可能知道的。就算是 bgp 也只是以 AS 为最小粒度,还是太粗了, ebgp 发出的大部分都是汇聚路由。
icmp 探测是不靠谱的, bgp 靠谱(不然就压根不通)但很粗略。事实上别说全网,就是国内的一个 ISP 的路由或拓扑信息也很难内部找个人说的清。
wdlth
2016-02-20 19:39:53 +08:00
网络路由就像地图导航,只能覆盖到一定规模,能查询道路怎么走,但是看不到的地方就不容易了解了。
举个极端点的例子,像 8.8.8.8 那种 AnyCast 的,全网的路由走到 Google 网络后就看不到 Google 内部拓扑了。
TrustyWolf
2016-02-20 21:04:20 +08:00
首先提醒一下楼主,路由和网络拓扑是完全不同的概念。
公网路由器,特别是大型运营商的边界路由器,都会存有全网的路由。
这些路由是可以查看的,比如 University of Oregon 的 Route Views Project 。
没记错的话目前公网上全部的 IPv4 路由条目大概在 50W-100W 条之间。
然而,除了自身 AS 内部的路由,来自其他网络的路由基本都是汇总路由。
路由的汇总可能是自动的,也可能是手工指定的。
华为和思科等网络设备厂商的认证考试中这些内容都有涉及。
也就是说,其他网络中具体的网络拓扑边界路由器是不可能全部知道的。
设想一下如果全部知道,需要多大的存储空间!
那么,在企业内部中的管理中,如果不知道网络的拓扑,管理会很不方便。
思科使用 Cisco Discovery Protocol (CDP)协议来获取网络拓扑信息。
CDP 协议就是基于 SNMP 的,但只能在思科设备之间使用。
另外,处于安全考虑, ICMP 的回包功能也是可以手动关闭的。
这样你就会发现 trace 中的某些节点显示的是点.点.点...
特别是在 MPLS 网络中,运营商内部故意隐藏拓扑的做法很常见。
So ,结论是,不可能知道全网的拓扑信息。
jasontse
2016-02-20 21:14:35 +08:00
@TrustyWolf
没那么夸张,目前全网 IPv4 路由条目 58 万。
izoabr
2016-02-21 10:49:40 +08:00
也可以通过 snmp 去获取每个设备,每个接口的 arp 邻居信息,然后自己去算拓扑。
不过要求不能有断点,有断点就没法生成一张完整的拓扑,就会好几张拓扑,也可能会有孤立设备。
anonymoustian
2016-02-21 14:31:29 +08:00
@izoabr 但是通过 SNMP 获取的设备,如果不是内部的呢? 比如说我要去探测公网上的其他路由器的邻居信息?
izoabr
2016-02-21 16:48:46 +08:00
@anonymoustian 那没办法,设备你没有相应管理权的话,你看得信息不全面是正常的。
不然什么都透明了,对安全也是一个隐患。
julyclyde
2016-02-22 21:57:28 +08:00
看着像文科考了计算机专业研究生
esxivistawrt
2016-02-23 21:08:20 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/257881

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX