ESC

開始輸入,可搜尋發票、服務、域名、工單,以及 更多...

搜尋... Ctrl+K
IP 與 ASN

IRR 路由物件建立教程:RIPE 資料庫與 RADB 的 route/route6、as-set 及 whois 驗證

6 個步驟 9 分鐘閱讀 18 次閱讀 0
本文目錄

想讓自己的 ASN 廣播的 IP 字首被上遊和 IX 接受,第一步往往是建立 IRR 路由物件。IRR(Internet Routing Registry,網際網路路由註冊庫)記錄“哪個字首由哪個 ASN 發起”,上遊運營商會據此自動生成 BGP 字首過濾器,沒有路由物件的字首通常會被直接過濾。本文講解 RIPE 資料庫中 route / route6 物件的寫法、非 RIPE 地址如何使用 RADB、as-set 的基本概念、上遊如何從 IRR 生成過濾器,以及用 whois 驗證。命令適用於 Debian/Ubuntu 與 CentOS/Rocky/AlmaLinux。

示例使用文件地址 203.0.113.0/24、198.51.100.0/24、2001:db8:1000::/48 和私有 ASN AS64500,請替換為你的實際資源。如果你是從 IMIDC 租用 IP 並用自有 ASN 廣播,請同時參考“用自有 ASN 廣播租用 IP 段(LOA)”與“ROA/RPKI”教程。

步驟 1:確認 IP 段所屬 RIR 與維護者(mnt-by)

route 物件應該建在 IP 段所屬 RIR 的資料庫裡:RIPE 區域地址建在 RIPE DB,APNIC 地址建在 APNIC 庫,ARIN 地址可用 ARIN 自己的 IRR,其他情況或需要補充時常用 RADB。先查詢 inetnum 的維護者以及你的 aut-num:

# install whois: Debian/Ubuntu
apt install -y whois
# CentOS/Rocky/AlmaLinux
dnf install -y whois

# which RIR and maintainer hold the block?
whois -h whois.ripe.net 203.0.113.0/24 | grep -E 'inetnum|netname|mnt-by|mnt-routes|mnt-lower|source'
whois -h whois.ripe.net AS64500 | grep -E 'aut-num|as-name|mnt-by'

在 RIPE 資料庫中建立 route 物件需要兩方授權:IP 段的 mnt-routes(或 mnt-lower / mnt-by)維護者,以及 origin 所指 ASN 的維護者。如果 IP 是向 IMIDC 租用的,字首授權由 IMIDC 的維護者完成,請通過工單提交字首與 ASN,由我們建立或協助授權。

步驟 2:在 RIPE 資料庫中編寫 route / route6 物件

RIPE 資料庫支援網頁編輯(登入 RIPE NCC Access 後在 Database 中選擇“Create an object”)和電子郵件/whois 風格的純文本提交。核心欄位只有幾個:route(字首)、origin(發起 ASN)、mnt-by(你的維護者)、source(資料庫名)。IPv6 使用 route6:

route:          203.0.113.0/24
descr:          Example Networks - leased from IMIDC
origin:         AS64500
mnt-by:         EXAMPLE-MNT
source:         RIPE

route6:         2001:db8:1000::/48
descr:          Example Networks IPv6
origin:         AS64500
mnt-by:         EXAMPLE-MNT
source:         RIPE
  • route / route6:字首必須與實際廣播的長度一致;同時廣播 /23 和兩個 /24 時,需要分別建三個物件。
  • origin:發起該字首的 ASN,如有多個 ASN 廣播同一字首,每個 ASN 各建一個物件。
  • mnt-by:日後修改、刪除該物件所需的維護者。

步驟 3:非 RIPE 地址使用 RADB 建立路由物件

RADB 是由 Merit 運營的公共 IRR,許多北美、亞太的上遊都會查詢它,並且它映象了大量其他 IRR。使用 RADB 需要先申請一個維護者(maintainer)帳戶(RADB 是付費服務),然後通過網頁或郵件提交物件。注意 source 欄位為 RADB:

route:          198.51.100.0/24
descr:          Example Networks
origin:         AS64500
mnt-by:         MAINT-AS64500
source:         RADB
只為你有權廣播的字首建立路由物件。不要為他人地址隨意建立 RADB 物件,部分上遊會結合 RIR 資料和 LOA 交叉核驗,不一致會被拒絕。

步驟 4:用 as-set 管理多個 ASN(可選)

如果你自己還有下遊客戶 ASN,上遊需要知道你可能轉發哪些 ASN 的字首,這時就要用 as-set。命名推薦使用“層級式”寫法(AS號:AS-名稱),members 中列出你自己和下遊的 ASN,也可以巢狀其他 as-set。然後把 as-set 名告訴上遊,並在 aut-num 的 export 策略中引用它。

as-set:         AS64500:AS-CUSTOMERS
descr:          AS64500 and its downstream customers
members:        AS64500
members:        AS64501, AS64502
mnt-by:         EXAMPLE-MNT
source:         RIPE

步驟 5:瞭解上遊如何從 IRR 生成 BGP 字首過濾器

大多數上遊使用 bgpq4 這類工具,按你提交的 ASN 或 as-set 查詢 IRR,展開出所有 route 物件,生成路由器的字首列表,並定時重新整理。你可以自己執行同樣的命令,提前看到上遊會允許哪些字首:

# Debian/Ubuntu
apt install -y bgpq4
# CentOS/Rocky/AlmaLinux (EPEL)
dnf install -y epel-release && dnf install -y bgpq4

# IPv4 prefix list for everything AS64500 originates
bgpq4 -4 -l AS64500-IN AS64500
# IPv6, expanding an as-set, BIRD syntax
bgpq4 -6 -b -l AS64500_V6 AS64500:AS-CUSTOMERS
# aggregate output (-A) for a large as-set
bgpq4 -4 -A -l CUST-IN AS64500:AS-CUSTOMERS

如果輸出裡沒有你的字首,上遊大機率也會過濾掉它。不同上遊重新整理週期不同,從數小時到一天一次不等,更新物件後可以工單通知上遊手動重新整理。

步驟 6:用 whois -h whois.radb.net 驗證路由物件

物件建立後,通過 whois 確認已經生效。RADB 映象了 RIPE、APNIC、ARIN 等多個 IRR,所以查 whois.radb.net 可以大致代表上遊看到的結果(映象同步可能有延遲):

# route object for a prefix (RADB mirrors most IRRs)
whois -h whois.radb.net 203.0.113.0/24
# all route objects with origin AS64500
whois -h whois.radb.net -- '-i origin AS64500'
# RIPE DB only, route and route6
whois -h whois.ripe.net -- '-T route,route6 -i origin AS64500'
# members of an as-set
whois -h whois.radb.net AS64500:AS-CUSTOMERS

常見問題

RIPE 建立 route 物件時提示認證失敗?

通常是缺少 IP 段維護者的授權。租用的 IP 段由 IMIDC 維護,請提交工單提供字首、ASN 和你的 mnt-by 名稱,由我們完成授權或代為建立。

路由物件和 ROA 有什麼區別?

路由物件屬於 IRR,用於上遊生成過濾器,任何有維護者許可權的人都能建立;ROA 屬於 RPKI,由地址持有方通過 RIR 加密簽發,用於路由源驗證。兩者最好同時具備且 ASN 一致。

不再使用的字首需要刪除路由物件嗎?

需要。過期的路由物件會讓他人誤以為該 ASN 仍可廣播該字首,帶來安全隱患。停止廣播或租期結束時請及時刪除,或聯絡我們處理。

如仍無法解決,可提交工單聯絡 IMIDC 7×24 技術支援:https://www.imidc.com/submitticket.php

這篇文章有幫助嗎?

相關教程