KNOWLEDGE

為什麼有些 IP 查不到 ASN?

ASN 不是註冊出來的,而是在 BGP 中宣告出來的。沒有被任何 AS 宣告的地址段,路由表裡就沒有 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/8、100.64.0.0/10、192.0.2.0/24

這兩種容易讓人困惑, 但表現完全不同: 被聚合段覆蓋的 IP 能正常訪問 (大段有路由), 只是查不到自己獨立的 origin ASN; 而從未宣告的 IP 在公網上根本不可達 — 你 ping 它會 100% 丟包, 但 whois 裡照樣查得到登記組織。共同點是: 它們在全球 BGP 表裡都沒有屬於自己的 origin。

三、自己實測 — 用權威 BGP 源驗證「真的沒有」

地理庫查不到 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 = 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, 登記記錄依然存在。

有些資料來源會返回一個 isp 欄位 (例如 China Great Wall Internet Server Provider 或 Beijing Big Data Tech Co.,Ltd.)。這是 whois 登記的組織名, 不是 ASN 的 org。所以你會看到「有名字、沒 ASN 號」的組合 — 完全正常。

名字回答的是「誰登記了這段 IP」; ASN 回答的是「哪個 AS 在路由它」。前者有、後者無, 並不矛盾。

五、對 IP 情報和查詢的影響

商業 IP 庫的 ASN 欄位, 本質上都是 BGP 路由表的快照。當一個 IP 沒有 origin ASN:

  • 所有依賴 BGP 的庫都給不出 ASN — 這是資料來源層面的共同盲區, 不是某一家的疏漏。
  • 能拿到的只有 whois 登記的組織名 (如果有的話)。
  • 基於 ASN 的判定 (營運商類型、是否 IDC、風控聚類) 對這類 IP 會退化, 只能靠組織名 / 地理 / 行為等其它維度。

所以在 CleanIP.io 查到這類 IP 時, 你會看到它的組織名照常顯示, 而 ASN 號留空 — 這是如實反映「這段 IP 在全球路由表裡確實沒有 ASN」, 而不是查詢失敗。遇到這種情況, 看組織名 + 歸屬國 + 風險訊號即可, ASN 那一欄空著是正常的。

參考資料

mimetic
mimetic
mimetic