BGP 的開頭故事和第一步

前提摘要

我想先說為甚麼我接觸 BGP, Palworld 剛推出的時候,我挺熱衷於這款遊戲,但這個遊戲遊戲是屬於成長進度型遊戲,而且伺服器的特性(負)優化做的挺好的,會因為遊戲內實體物件越多越卡,於是想再開很多的伺服器,但自己總不想一直用 NAT 開 Port 的方式一直延續下去,加上從大概從國中開始就有架設各類遊戲伺服器 (Minecraft),於是想要更多的 IP ,等等更多雜七雜八的理由,因緣際會…就開始尋找 如何租用IP,把 IP Transti 出去。

成為BGP Play的第一步

你需要對網路拓樸,BGP,路由,Linux ,需要一定的認知,建議可以先從 DN42 玩起 (一個虛擬模擬的去中心化網路),雖然 DN42與公網有不小的落差,再來使用 Vultr BGP 服務來做,只需要開一個 6USD 的VM真的很省,而且上游有過濾比較不怕犯錯,而且網路上的 Sample Config 很多,如果玩到比較有規模就需要 Colo(co-location) 設備,然後還有Transit的費用,跟一些新台幣…等等。

ASN是指自治系統,ASN容納了你的 IP 位址空間 (IP Prefix),除非你的 IP 地址是依靠在別人的ASN(代為宣告),否則這個會是需要的,很淺的說BGP需要透過 AS來宣告你的IP 位址 。1

租用 IP

如果你是在台灣想要租用 IP,直接去 Twnic 申請租用步驟挺簡單的(網址:https://ipapply.twnic.tw/index.php),但是申請資格需要有公司抬頭之類的;或者要透過其他方式,可以找 LIR 代為申請 (ASN+IPv6+IPv4)。

為您的ASN申請啟用RPKI (可選)

這一步是可選的,但是建議你申請RPKI,他是用來防止你的IP被盜播出去,或者很不小心盜播到別人的IP,而且某些 Up

該用什麼樣的設備來做

新手第一件事情,除非你財力很雄厚,或者很有心想要踏入BGP的世界,可以購買收Full Table(俗稱全表 意思指全路由)的設備 Juniper MX204 類的設備(20~30萬台幣之間),我的推薦可以先使用 Bird2 、 FRR、Vyos 來做,性能不差,筆者這邊是選擇使用 Bird 來做,原因是他與別的路由軟體不同他是透過寫 Config 檔案來操作,加上網路上範例資源真的很多,比較不會卡關遇到問題,編寫的 Conf 文件會長類似下面這樣。

router id 198.51.100.1;
protocol device {
}
protocol direct {
	ipv4;	
	ipv6;
}
#執行 BIRD 路由表與Linux系統內核的同步
protocol kernel {
	ipv4 {
		import all; #將系統路由至Bird用於其他BGP等交換
		export all; #將學習到的路由導至系統內核
	};
	ipv6 {
		import all; #將系統路由至Bird用於其他BGP等交換
		export all; #將學習到的路由導至系統內核
	};
}

protocol bgp uplink1 {
	description "My BGP uplink"; #只是個描述可以不寫
	local 198.51.100.1 as 65000; #本路由器ID位置 65000是你的ASN
	neighbor 198.51.100.10 as 64496; #鄰居路由器ID位置 64496是對方ASN
	ipv4 {			
		import all; #將接受所有學習到的路由,建議可以寫過濾BOGON_ASNS、BOGON_PREFIXES
		export all; #將發出所有路由給鄰居,正常不會也不要這樣寫,要過濾切記,
	};


Bird我強烈建議使用 Bird2.X 他是較新的版本,只差在IPv4跟IPv6可以寫在同一個Conf檔案裡,關於 Bird 如果需要看中文文檔 可以參考:https://bird.xmsl.dev/

找人Transit或Peer

前面做好了之後,通常你需要找業者或者人幫你把你的IP Transit出去,Transit業者很多,入門的最省的做法就是 Vultr 開 Ticket 申請BGP Session,缺點是在台灣連要走海底電纜,加上可能沒有速度保證,在進階一點點就是進機房然後實體線接入,在台灣我推薦接入的第一個IX,這裡我蠻推薦可以找 STUIX ,你可以在IX內Peer其他用戶,或者是你可以跟其他成員買Transit,裡面有許多的巨頭網路業者,比如 Google、Cloudflare、AWS等等,Transit 也可以找天空數位在台灣有很合理的價格買到優質的 Transit ,也熱衷於ISP機房。

備註一些名詞解釋

BGP:邊界網關協議,你可以當作在網際網路中用來交換路由的一種非常常見的方式。
Peer:僅僅雙方兩邊交換路由, A<->B。通常不需要為此有費用(種花之類除外)。
Transit:繼承Peer的特點,A <-> B 但是 B會幫你傳給 C,D,E… 幫你把你的IP傳輸出去,B就是您的Upstream上游。
Downstream:下游,假設情況,你今天需要幫其他人Transit那你就是上游,根據上面的例子 在B的角度,A是B的下游。
IX:網際網路交換點,通常可以在裡面Peer到很多,可以降低成本,並提升資料傳輸的效率,增強連接性,縮短路徑,流量交換。
RS(Router Server):在IX中如果你要Peer沒有RS的情況是 你需要 A<-> B,A <-> C,A <-> D,需要起許多的 BGP Session,如果每個參與者都需要與其他所有參與者直接建立BGP對等關係,配置將非常複雜且難以管理,允許這些網路運營商透過一個共同點來交換路由資訊,大大簡化了網路配置和管理。
RPKI:它旨在通過使用加密證書來確保網路運營商間的路由宣告是可信的。RPKI主要被用於防止路由劫持和誤導路由宣告。
LG(LookingGlass):通常是網頁工具可以透過他,來了解網路是否可達,或在對方路由中,知道特定IP的走向。
開靈車:明明設定好了,卻不會Work可能是系統BUG或者是自身問題。
通靈:猜某些參數或者設定。

可參考文章

以下連結可以參考,會有幫助挺大的

什麼,透過BGP從小型網路到真正的網際網路

BIRD 与 BGP 的新手开场

  1. https://www.cloudflare.com/zh-tw/learning/network-layer/what-is-an-autonomous-system/ ↩︎

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *