一段话先讲结论
每个能在公网被访问的 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/8、100.64.0.0/10、192.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:
$ 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:
$ 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 | NAAS = NA、BGP Prefix = NA。注意右边 Registry = apnic、Allocated = 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 Provider 或 Beijing 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 那一栏空着是正常的。
参考资料
- RFC 4271 — A Border Gateway Protocol 4 (BGP-4)BGP 协议本体: 前缀宣告 / AS-PATH / origin 的定义
- RIPEstat Data API — network-infoRIPE NCC 官方, 自助查任意 IP 的 prefix / origin ASN
- Team Cymru — IP to ASN Mapping业界最常用的 IP→ASN whois 服务, 基于 BGP
- IANA — IPv4 Address Space Registry地址分配 (RIR) 与「是否被路由」是两件事的源头