KNOWLEDGE

AS / ASN / BGP 路由 — 看懂網際網路骨架

網際網路不是一張網, 而是 8.7 萬+ 個自治網路 (AS) 之間用 BGP 協議互聯拼起來的。AS 號是啥? BGP 怎麼工作? 路由洩漏 / 劫持怎麼發生?

一段話先講明白

"網際網路"實際上是 8.7 萬+ 個獨立網路 (AS, Autonomous System) 之間互相連線拼成的, 每個 AS 有唯一編號 (ASN, 例如 AS13335 = Cloudflare)。這些 AS 之間用 BGP 協議 互相宣告 "我這裡有哪些 IP 網段", 形成全球路由表 (約 100 萬條 IPv4 字首, 20 萬條 IPv6)。你的資料包從家裡到 Google, 通常跨越 4-15 個 AS。下面一步一步講清楚。

一、什麼是 AS — Autonomous System

AS (自治系統) 是一個或一組在統一管理策略下的 IP 網路。一個 AS 內部用什麼路由協議 (OSPF / IS-IS) 是私事, 但 AS 之間用 BGP 公開宣告自己的 IP 字首。

  • 大型 ISP 自己是一個 AS (中國電信 AS4134, 中國聯通 AS4837, 中國移動 AS9808)
  • 大型雲廠商是一個 AS (Google AS15169, Cloudflare AS13335, AWS AS16509)
  • 大學 / 政府 / 大型企業可以擁有自己的 AS
  • 普通家寬使用者的 IP 是從他 ISP 的 AS 裡分出來的, 使用者不需要自己的 AS

1.1 誰分配 ASN

ASN (AS 編號) 由 5 個區域註冊局 (RIR) 管理:

RIR區域典型 ASN 範圍
ARIN北美AS1-AS6655 + 部分
RIPE NCC歐洲 / 中東AS6656-AS9215 + 部分
APNIC亞太AS17676-AS18431 + 部分
LACNIC拉美AS27648-AS28671 + 部分
AFRINIC非洲AS36864-AS37887 + 部分

ASN 早期是 16 位 (0-65535, 1996 年後開始緊張), 現在是 32 位 (0-4294967295, RFC 6793), 全球目前實際用了約 12 萬個。

1.2 ASN 怎麼讀 — 幾種格式

AS13335 // 老格式 (16-bit)
AS393227 // 新格式純數字 (32-bit)
AS6.10 // 老 dot 格式 (= 6×65536+10 = 393226; RFC 5396 已把 asplain 定為首選寫法)

現代用純數字格式即可。"AS" 字首可省, 但寫完整更清晰。

二、BGP — 網際網路的"郵政編碼系統"

BGP (Border Gateway Protocol), 邊界閘道器協議 (RFC 4271), 是 AS 之間唯一的路由協議。每個 AS 通過 BGP 向鄰居 AS 宣告: "下面這些 IP 字首我能到, 經過我能到達後面這些 AS"。

2.1 BGP 通告的核心資訊: 字首 + AS-PATH

BGP 路由表 (RIPE RIS 擷取)
Prefix                Next Hop          AS-PATH
104.16.0.0/13    203.0.113.1   AS3356 AS13335   ← 經 Lumen 到 Cloudflare
104.16.0.0/13    198.51.100.5   AS6939 AS13335   ← 經 HE.net 到 Cloudflare
8.8.8.0/24      203.0.113.1   AS3356 AS15169   ← 到 Google DNS
202.106.0.0/16  198.51.100.5   AS6939 AS4847 AS4134 ← 到中國電信北京

AS-PATH 是從源 AS (字首的擁有者) 到當前路由器經過的所有 AS。從右往左讀 — 最右是源, 最左是鄰居。

2.2 BGP 怎麼選最佳路徑

同一個字首有多條路徑時, BGP 按以下優先順序選 (摘要):

  1. LOCAL_PREF 越大越好 — 本 AS 內部偏好 (誰先用)
  2. AS-PATH 長度越短越好 — 經過的 AS 越少越好
  3. Origin: IGP (內部) > EGP > Incomplete
  4. MED (Multi-Exit Discriminator) 越小越好 — 跨 AS 提示
  5. eBGP > iBGP
  6. IGP cost 越小越好
  7. Router ID 越小越好 (最後 tiebreak)

注意: BGP 不一定選最快路徑。AS-PATH 短 ≠ 物理延遲低。一條經過 1 個 AS 的洲際線路可能比經過 3 個 AS 的同城線路慢。

三、Tier 1 / Tier 2 / Tier 3 — ISP 分層

所有 AS 按"是否需要花錢買上游 transit"分成三層:

層級定義典型代表
Tier 1不向任何人付費, 互相 peering 就能訪問全球AT&T AS7018, Verizon AS701, Lumen/Level3 AS3356, NTT AS2914, Telia AS1299, Tata AS6453, GTT AS3257, 中國電信 AS4134 (部分定義), 中國聯通 AS4837
Tier 2跟少數 Tier 1 peering, 但部分訪問要付費大部分國家級 ISP / 大型雲廠商 (Google AS15169, Microsoft AS8075, Cloudflare AS13335)
Tier 3必須向上遊付費才能訪問其他網路小型本地 ISP / 接入營運商

家寬資料包路徑示意: 你家 → 當地小 ISP (Tier 3) → 省級 / 都會網路 (Tier 2) → 中國電信骨幹 (Tier 1) → 海外 Tier 1 → 目標網路。

四、自己實測 — 從家到 Google 跨了哪些 AS

用 mtr -bz (BSD: traceroute -A) 可以看每一跳的 AS 號:

mtr -bz www.google.com (Linux)
HOST: xxx                Loss%   Snt   Last  Avg   ASN
1.  192.168.1.1                0.0%   10   0.5  0.6   (私網, 無 ASN)
2.  61.183.x.x                 0.0%   10   3.2  3.5   AS4134  中國電信
3.  202.97.x.x                 0.0%   10   5.1  5.4   AS4134  中國電信骨幹
4.  202.97.x.x                 0.0%   10  15.2  16.1  AS4134
5.  202.97.x.x                 0.0%   10  45.3  46.0  AS4134  出境前節點
6.  211.95.x.x                 0.0%   10 156.4 158.2  AS4134  國際出口
7.  72.14.215.x                0.0%   10 158.1 159.8  AS15169 Google 網路
8.  142.250.x.x                0.0%   10 159.8 161.2  AS15169 Google
9.  142.250.x.x (www.google.com)  0.0%   10 160.2 162.0  AS15169

從這個 mtr 可以看出:

  • 家裡 → 電信小區 (AS4134, 跳 2-3): < 10ms
  • 電信骨幹 (AS4134, 跳 4-6): 5-150ms
  • 國際出口跳到 Google (AS15169, 跳 7): 150+ms 突變 ← 出境延遲
  • Google 內部 (AS15169, 跳 8-9): < 5ms

中國家寬到 Google 跨了 2 個 AS, AS-PATH 長度極短, 但物理延遲大 — 這就是我們說的"BGP 不等於物理延遲"。

五、BGP 的兩個安全噩夢 — 路由洩漏 + 路由劫持

5.1 路由洩漏 (Route Leak)

一個 AS 把不該傳給上游的路由錯誤傳給了上游 / 鄰居, 導致全球流量被引向錯誤路徑。典型: 一個 ISP 把客戶路由誤當成自己的路由, 宣告給所有人。

知名事件: 2017 年 11 月 Level3 (AS3356) 一次路由洩漏, 波及 Comcast / Verizon 等大量下游使用者。

5.2 路由劫持 (BGP Hijack)

惡意 AS 宣告不屬於自己的 IP 字首。其他 AS 接受後, 流量被引向劫持者, 可以做 MITM / 拒絕服務 / DNS 汙染。

典型事件:

  • 2008 巴基斯坦 PTCL 宣告 YouTube 字首, 全球 YouTube 流量被引到巴基斯坦, 持續 2 小時
  • 2018 eNet (AS10297) 宣告 Amazon Route 53 的 DNS 字首, 藉此劫持 MyEtherWallet 使用者流量, 持續約 2 小時
  • 2022 俄羅斯 RTCOMM 短暫劫持 Twitter 字首

5.3 防禦 — RPKI 給路由簽名

RPKI (Resource Public Key Infrastructure), RFC 6480 系列, 讓 IP 字首的合法持有者用密碼學簽名"這個字首只能來自這個 AS"。支援 RPKI 的 BGP 路由器收到不簽名 / 簽名錯的路由會丟棄。

全球已有約一半的 IPv4 字首完成 RPKI 簽名, 且比例仍在上升。在 cleanip.io 上查 IP 時, "AS 資訊" 卡里會顯示 RPKI 狀態: valid / invalid / not-found。

六、怎麼查 IP / 域名屬於哪個 ASN

6.1 用 cleanip.io 直接查

直接訪問 https://cleanip.io/8.8.8.8 或 https://cleanip.io/AS15169 — 我們顯示完整的 ASN 資訊、註冊時間、IP 段、上下游、地理分佈。

6.2 用 cleanip.io 的 BGP 視覺化

/asn-graph 給任意 ASN 畫 BGP 拓撲 — 從 Origin 經 Tier 2 到 Tier 1, 一目瞭然誰在 peer 誰。

/asn-history 看 IP / CIDR 的歷史歸屬 — 一個 CIDR 歷史上屬於過哪些 AS, 什麼時候變更。

6.3 命令列工具

terminal — ASN lookup
$ whois -h whois.cymru.com " -v 8.8.8.8"
AS      | IP        | BGP Prefix    | CC | Registry | Allocated  | AS Name
15169   | 8.8.8.8   | 8.8.8.0/24    | US | arin     | 1992-12-01 | GOOGLE, US

$ curl https://api.bgpview.io/ip/8.8.8.8 | jq
{
  "data": {
    "ip": "8.8.8.8",
    "prefixes": [{
      "asn": { "asn": 15169, "name": "Google LLC" },
      "prefix": "8.8.8.0/24"
    }]
  }
}

七、常見 ASN 速查

ASN名稱類型
AS13335CloudflareCDN / DNS
AS15169Google雲 / 搜尋
AS16509Amazon AWS雲
AS8075Microsoft / Azure雲
AS32934Facebook (Meta)社交
AS13414Twitter / X社交
AS2906Netflix影片
AS4134中國電信ISP (Tier 1 部分)
AS4837中國聯通ISP
AS9808中國移動ISP
AS37963阿里巴巴 / 阿里雲雲
AS45102阿里雲國際雲
AS132203騰訊雲雲
AS9009M247 (主流 VPN 主幹)IDC
AS62371Proton AG (ProtonVPN)VPN
AS24940Hetzner德國 VPS
AS16276OVH法國 VPS
AS20473Choopa (Vultr)VPS
AS14061DigitalOceanVPS

八、為什麼這些知識對普通使用者也重要

  • 風控系統判斷 IP 信譽時會看 ASN — 資料中心 ASN (雲廠商 / VPN 廠商) 通常被打低分; 家寬 ASN (中國電信 / 聯通) 信譽更高
  • 跨境業務選 CDN 時, 看目標使用者 ASN 跟 CDN 節點的 AS 距離 — 一篇文章告訴你 cleanip.io 這個 IP 在哪個 AS
  • 遭遇 DDoS 時, ASN 是溯源第一線索 — "攻擊流量大部分來自 AS46562 Performive 資料中心"
  • 選 VPN 時, 看它租的是哪家 IDC 的 ASN — VPN 溯源 裡詳細講

延伸閱讀

mimetic
mimetic
mimetic