KNOWLEDGE WHY SOME IPS HAVE NO ASN

为什么有些 IP 查不到 ASN?

ASN 不是注册出来的, 是在 BGP 里被宣告出来的。没被任何 AS 宣告路由的 IP, 全球路由表里就没有 origin ASN — 只剩 whois 里的一个组织名。

一段话先讲结论

每个能在公网被访问的 IP, 背后都有一个 AS (自治系统) 在 BGP 里「宣告」它, 这个 AS 的编号就是 ASN。关键在于: ASN 不是去哪里「注册」出来的, 而是 在全球 BGP 路由表里被某个 AS 宣告出来的。所以当一段 IP 从未被任何 AS 公布路由 (专网、内部网段、刚分配还没上线、或上游只用更大的聚合段宣告), 它在全球路由表里就没有 origin ASN — MaxMind / IPinfo 这些库自然也查不到, 只能从 whois 拿到一个登记的「组织名」。这不是数据库的 bug, 是这段 IP 本身没有 ASN。

一、ASN 是怎么「挂」到一个 IP 上的

很多人以为 ASN 像门牌号一样是「分配」给 IP 的固定属性。其实它是一条动态的路由事实。一段 IP 要拥有 ASN, 要走完这条链:

  • ① 分配 — IANA 把大块地址给五大 RIR (亚太是 APNIC), RIR 再把 /19/24 这样的前缀 (prefix) 登记给某个组织。这一步只产生 whois 登记, 还没有 ASN。
  • ② 宣告 — 这个组织 (或它的上游 ISP) 用自己的 AS, 通过 BGP 向邻居路由器「宣告」: 「113.48.0.0/19 这段, 走我这里」。
  • ③ origin ASN 诞生 — 宣告这条前缀的那个 AS 的编号, 就成了这段 IP 的 origin ASN。全世界的路由表 (RIB) 里都会记下: 这个前缀的来源是 AS××××。

所以 ASN 的本质是「谁在路由这段 IP」, 而不是「谁拥有这段 IP」。第 ② 步没发生, 第 ③ 步就不存在 — 这段 IP 永远查不到 ASN。

一句话: 没在 BGP 里宣告路由 = 没有 ASN。ASN 是路由表里的事实, 不是注册表里的字段。

二、为什么有些 IP 没有 ASN — 四种常见情况

情况说明典型场景
未公布路由IP 段已分配, 但持有者从不对公网 BGP 宣告 (只在内部 / 专线里用)政企专网、某些 IDC 内部段、行业专用网
聚合宣告上游只用一个更大的段宣告, 子段本身没有独立 origin大运营商把 /24 并进 /16 一起宣告
刚分配未上线RIR 刚把前缀给了组织, 但还没接进 BGP新申请的地址块, 路由还没配好
保留 / 特殊用途不可全球路由的地址 (私有、文档、CGNAT 等)10.0.0.0/8100.64.0.0/10192.0.2.0/24

前两种最容易让人困惑 — IP 明明能 ping 通、whois 也查得到组织, 偏偏没有 ASN。原因就是它在全球 BGP 表里没有自己的 origin: 要么压根没宣告, 要么被裹在更大的聚合段里, 单独这一小段查不出独立的 AS。

三、自己实测 — 用权威 BGP 源验证「真的没有」

地理库 (MaxMind / IPinfo) 查不到 ASN, 不一定代表 IP 真没有 — 也可能只是那个库覆盖不全。要下定论, 得问全球 BGP 路由表本身。两个权威、免费、可自助查的源:

3.1 RIPEstat — 直接读全球路由表

RIPE NCC 的 RIPEstat 聚合了全球 BGP 采集点的数据。查一个 IP 的 origin ASN:

terminal — RIPEstat network-info
$ curl -s "https://stat.ripe.net/data/network-info/data.json?resource=113.48.177.6"

{
  "data": {
    "prefix": "",           // ← 空: 没有任何前缀覆盖它
    "asns":   []            // ← 空: 没有 origin ASN
  }
}

asns: [] — 空数组。全球路由表里没有任何 AS 在宣告这个 IP。这是定性的证据。

3.2 Team Cymru — IP-to-ASN whois 服务

Team Cymru 维护着业界用得最广的 IP→ASN 映射服务, 同样基于 BGP:

terminal — Team Cymru IP-to-ASN
$ whois -h whois.cymru.com " -v 113.48.177.6"

AS    | IP            | BGP Prefix | CC | Registry | Allocated  | AS Name
NA    | 113.48.177.6  | NA         | CN | apnic    | 2008-10-16 | NA

AS = NABGP Prefix = NA。注意右边 Registry = apnicAllocated = 2008-10-16 — 这段 IP 2008 年就被 APNIC 分配给中国了 (所以有归属国 CN), 但从未进入 BGP, 所以 AS 是 NA。「已分配」和「有 ASN」是两件完全不同的事 — 这个例子把两者的区别摆得明明白白。

四、那「China Great Wall Internet Server Provider」这个名字是哪来的?

既然没有 ASN, 为什么 IP 查询结果里还能看到一个公司名? 因为名字和 ASN 来自两套完全不同的数据:

  • ASN / asn_org — 来自 BGP 路由表 (谁在路由这段 IP)。没宣告就没有。
  • whois 的 ISP / 组织名 — 来自 RIR 的 inetnum / 滥用举报库 (谁登记持有这段 IP)。即使没进 BGP, 登记记录依然存在。

像 abuseipdb 这类源会返回一个 isp 字段 (例如 China Great Wall Internet Server ProviderBeijing Big Data Tech Co.,Ltd.)。这是 whois 登记的组织名, 不是 ASN 的 org。所以你会看到「有名字、没 ASN 号」的组合 — 完全正常。

名字回答的是「谁登记了这段 IP」; ASN 回答的是「哪个 AS 在路由它」。前者有、后者无, 并不矛盾。

五、对 IP 情报和查询的影响

MaxMind、IPinfo、ipapi.is 这些商业 IP 库的 ASN 字段, 本质上都是 BGP 路由表的快照。当一个 IP 没有 origin ASN:

  • 所有依赖 BGP 的库都给不出 ASN — 这是数据源层面的共同盲区, 不是某一家的疏漏。
  • 能拿到的只有 whois 登记的组织名 (如果有的话)。
  • 基于 ASN 的判定 (运营商类型、是否 IDC、风控聚类) 对这类 IP 会退化, 只能靠组织名 / 地理 / 行为等其它维度。

所以在 CleanIP.io 查到这类 IP 时, 你会看到它的组织名照常显示, 而 ASN 号留空 — 这是如实反映「这段 IP 在全球路由表里确实没有 ASN」, 而不是查询失败。遇到这种情况, 看组织名 + 归属国 + 风险信号即可, ASN 那一栏空着是正常的。

参考资料

mimetic
mimetic
mimetic