ASN 初體驗 Part 2
在 ASN 與 IP 發下來後
我們接著需要將擁有的 IP 廣播出去
讓世界知道如果要連過來這些 IP 該怎麼走
要廣播到全世界
我們必須透過 BGP 這個協議 來與他人 (AS) 對等
接著透過不同分級的 AS 將你的路由一路廣播到其他地方
這才算完成 IP 宣告
What is BGP?
全名 Border Gateway Protocol
使用 port 179
用於 AS 之間交換路由表
所以這也是為什麼上一篇說一定要先有 ASN 才能做接下來的動作
因為需要宣告你的 ASN 給對方 (當然這部分可以偽造,只是大多數都會手動驗證該 ASN 是否真的是你擁有)
兩個 host 之間做連接透過 BGP 交換路由表 稱為 peering (對等)
於 AS 內的對等稱為 iBGP (Interior BGP)
跨 AS 的對等則稱為 eBGP (Exterior BGP)
通常大量對等的地方會發生在一個叫做 IX (Internet Exchange) 的地方
IX 裡面會有大量的機器互相用實體線連接對等
或是使用打 tunnel 的方式來跟別人對等 (ex. VPN)
AS 分級
在全球的這樣繁雜的路由交互作用下
AS 不單單只為了宣告自己的路由而用
也有某些 AS 為了要處理他人的路由而存在
大致上分為三個階級
T1
全世界路由能互相轉送的維護者
負責提供給其他階級 AS transit 服務
所有 T1 AS 呈現全連接的星狀網路結構T2
提供給他人 transit
同時也會跟 T1 transit
藉此來讓底下 AS 的路由能送往全世界T3
只送出自己要廣播的路由
而不會 transit 任何他人的路由
那當然我們最一開始只須要當個 T3 菜雞就好 (x
DIY Time
上面大致介紹了相關的概念後
接著就實際來操作一遍吧
想要便宜就能 peering 的話
Vultr 或是 iFog 都有免費提供 BGP 宣告
只要你有租用他們的 VPS 的話
Vultr 最便宜 5 USD /mon
iFog 最便宜 3.5 EUR /mong
Vultr 全世界很多地方都有
iFog 則是專門提供歐洲區域 因此 ping 有點高
那由於這次 demo 的 ASN 是使用 RIPE 核發的
因此根據其規定需在歐洲服務區域內使用
所以當然就選 iFog 啦
地點是 Frankfurt 台灣直連大概 ping 213
Install Service
首先我們需要先使用能夠使用BGP協議的服務
目前大宗有 Bird 和 FRRounting
那今天就先選用 Bird 來做示範
所以就先來安裝吧
系統為 Debian 10
由於 Bird 版本有 1.X
跟 2.X
的差異
設定幾乎大改 等於不兼容
如果要裝 2.X
且 Debian <= 11
請記得先加上 backports 的 apt source
1 | sudo apt install -y bird2 |
安裝完成後
設定檔位於 /etc/bird/
我們需要修改其中的 bird.conf
來宣告 BGP
Peering
我們直接來看設定檔
在這個步驟之前
你需要先跟 iFog 申請好 BGP session
他會要求你提供你的 ASN 以及你想要宣告的 IP Range
審核完後
他會給你一些關於對等的資訊
包括 iFog 的 ASN, neighbor ip 或是建立BGP連線時所需的密碼 (不一定有)
1 | log syslog all; |
在這份設定檔中
首先記得
router id
的部分
通常是填寫這台機器的世界唯一編號 (通常就直接填 VPS 供應商當初給你的 IPv4 就好)接著是
protocol static
的部分
這個是即將會被你往外宣告的 IP Range最後是
protocol bgp
的部分
這邊填的就是對等資訊
包括- 你的 ASN 以及該台機器對方要求跟你溝通的 IP 位址 填在
local
- 對方提供給妳的資訊填在
neighbor
- 最後是 ipv6 區域
我們要透過該 filter 去指定要 export 出去的路由
詳細可以去翻其他教學看看 filter 怎麼寫 這邊不贅述
(filter 非常重要,如果沒寫好不只造成自己路由表大亂,也可能會給對方造成極大的麻煩)
- 你的 ASN 以及該台機器對方要求跟你溝通的 IP 位址 填在
當設定檔完成後
我們需要使用 sudo birdc
進入 Bird 的互動畫面
接著使用 configure
來 reload 剛剛的設定
如果沒噴錯
就可以使用 show protocols
來檢查看看 BGP 連線是否正常
當出現 Established
就代表該 BGP 連線正常運作了
如果還需要更詳細的訊息可以使用 show protocols all [name]
大概長得像下面這樣
Verify
在成功宣告後
通常這些供應商傳路由都非常迅速
應該宣告出去過個幾分鐘就好了
或是可以先使用 iFog 自己的 Looking Glass 服務來檢查
由於我在 Frankfurt 就使用當地的服務吧 iFog lg in Frankfurt
裡面有一些方便工具可以使用
這裡推薦使用 mtr
它同時具備 ping
以及 traceroute
的功能
如果在 server 上使用請裝 mtr-tiny
MacOS 的話就直接 brew install mtr
就好
回到 Looking Glass
這邊就輸入自己擁有的某一個 IP 並且將它給在剛剛那台建立 BGP 的機器上
拿我的舉例
我的機器給了 2a0f:607:1500::2
在我的某個網卡上
那在 LG 上面就輸入這個 IP 看它是否抓的到
看來非常正常的從 iFog 內部連線找到了
通常到了這邊就代表你的路由已經宣告出去
只要 iFog 那邊沒搞事就會正常散播到 T1 AS 那邊讓全世界看見了~
Final
這邊補個我從其他 server mtr 的結果
這是大老 SteveYi 自己的建的 Looking Glass
可以看到它從美國一路往上走走走到了 iFog 那邊
接著才到了我的 Server