ASN 查询

某个地址由哪个网络对外宣告,又落在哪个前缀里。

试试:

互联网是怎么决定一个包往哪儿走的

没有地图。没有哪个中央机构知道从一个地址到另一个地址的路线。存在的是大约 75,000 个自治系统——ISP、主机托管商、大学、银行——每一个都向它的邻居通告自己愿意为哪些地址段承载流量,也各自决定要相信听到的哪些通告。

那个协议就是 BGP,而这套安排比「互联网基础设施」这个词组听上去要即兴得多。它之所以能运转,是因为各家网络有商业上的理由守规矩,也因为其中大多数会明智地过滤邻居的通告。

这也正是为什么路由是基于前缀而不是地址来做的。没有人会通告 8.8.8.8;Google 通告的是 8.8.8.0/24,于是全世界每一台路由器只存一条记录,而不是 256 条。上面的查询会显示你的地址实际落在哪个前缀里——往往比你猜的要大。

为什么 /24 是下限

全球路由表大约有一百万条记录,而互联网上的每一台路由器都要把它们全部放在高速内存里。为了让这个数目保持有限,多数运营商会过滤掉 IPv4 中比 /24 更长的通告。

实际效果是:你没法通告寥寥几个地址。/24 是能够传播开来的最小单位,这就是为什么拿到属于自己的地址空间是一件相当有分量的事——注册机构的 IPv4 早在多年前就分完了,所以现在的 /24 只能从转让市场上来,而它的价格一直只朝一个方向走。

AS 告诉你什么,又没告诉你什么

有两件被不断混为一谈的事,值得分开来说。

ASN 查询地理定位
回答的是哪个网络在通告这个地址这个地址大概被用在什么地方
依据实时的 BGP 通告注册数据与时延推断
可靠性精确——它是一个路由事实国家通常对,城市经常错

所以「谁在运营这个地址」是可以有把握地回答的。「这个人在哪里」不是,而这两者却经常被摆出来,好像它们是同一次查询。

VPN 检测就是这么工作的

这一点值得直说,因为它比多数解释所暗示的要平淡得多。一个想知道你是不是在用 VPN 的网站,并不会分析你的流量。它只是查一下你地址的 ASN,然后拿去比对一份主机托管商和已知 VPN 运营商的名单。

住宅宽带是由面向消费者的 ISP 通告的。VPN 出口节点是由数据中心通告的。在这一层上,两者长得毫无相似之处,而这项检查的代价不过是一次数据库查询。

它并非定论——大量正当的商业流量本来就发自数据中心,而有些运营商专门使用住宅地址段来规避这一点。但它解释了为什么 VPN 检测既普遍又便宜,也解释了为什么它和加密强度毫无关系。

路由出错的时候

BGP 没有内建的认证。一个网络去通告它并不拥有的前缀,任何没有过滤它的人都会相信,于是发往那个前缀的流量就去了错误的地方。这种事已经不止一次大规模发生过——某一家运营商的一次配置失误,曾把互联网的大片区域打下线;而蓄意的劫持也被用来截取流量。

已经部署起来的对策是 RPKI:地址持有者用密码学方式签署「哪个 AS 可以通告我的前缀」,而各家网络拒绝那些验证不通过的通告。如今在大型运营商中的采用率已相当可观,这让劫持比十年前实实在在地难了不少。

如果上面的查询为同一个前缀报出好几个 AS 号,那么 anycast 是迄今最可能的解释。只有当涉及的那些网络之间没有任何说得通的关系时,它才值得担心。

相关

至于一个地址的地理那一面——连同它应有的那些准确性告诫——IP 查询覆盖了它。想自己算出一个地址落在哪个前缀里,子网计算器会替你做这套算术。

路由相关问题

什么是自治系统?

指处在单一管理机构之下、自行决定路由策略的一个网络——一家 ISP、一家大型主机商、一所大学、一家银行。每一个都有一个编号,而 BGP 就是它们彼此通告「我愿意为哪些地址段承载流量」的方式。整个互联网大致就是约 75,000 个这样的网络同意互相转发流量,这比多数人以为的要即兴得多。

这和 IP 地理定位查询是一回事吗?

不是,这个区别值得说清楚。ASN 告诉你是哪个网络在通告这个地址,这是一个路由事实,而且精确。地理定位则是在猜这个地址实际被用在什么地方,它是从注册数据和观测到的时延推断出来的,在城市一级经常出错。想知道谁在运营一个地址,ASN 是可靠答案;想知道某个人在哪里,两者都没有人们以为的那么可靠。

为什么同一个地址会显示好几个 AS 号?

通常是 anycast——同一个前缀在多个地点同时通告,Cloudflare、Google DNS 和大多数 CDN 就是这么工作的。也可能意味着一个多宿主网络通过不止一家上游进行通告。偶尔则是路由泄漏或劫持,即有人通告了自己无权通告的前缀;这种情况较少见,而 RPKI 存在的意义正是为了防止它。

能被路由的最小前缀是多大?

实际上是 IPv4 里的 /24。多数运营商会过滤掉比它更长的前缀,以保持全球路由表可控,所以通告一个 /25 即便在技术上合法也传播不出去。这也是为什么买下几个 IP 地址并不足以让你自己去通告它们——你至少需要一个 /24,而且由于注册机构的地址已经分完,你越来越只能到转让市场上去买。

我能看出一个 IP 属于 VPN 还是数据中心吗?

AS 是一个很强的线索。由主机托管商或已知 VPN 运营商通告的地址,几乎肯定不是住宅宽带,而网站检测 VPN 用的正是这一招——拿 ASN 去比对名单。但它并非定论:企业会向主机商购买传输服务,也有些 VPN 运营商使用住宅地址段。它真正说明的是,「这是哪个网络」这个问题,比多数人预想的要好回答得多。

The AS behind an address is how sites tell a datacenter connection from a residential one — it is the usual basis for VPN detection, and it is a lookup anyone can do. See what your own address says

最后审校于 。发现有内容过时了? 告诉我们.