前述提到,網際網路是以各個自治系統(AS)組成的。每個自治系統,都各自管轄了一些網段。
這些系統之間以 BGP 協定來交換路由資訊,因此這些自治系統本身就能夠知道,哪個封包往哪去,往哪走是最好的。
不過,BGP 協定本身並沒有考慮到「安全」。目前有人提出加強安全的協定了,不過還沒有廣泛地被使用。
這是一個有趣的網站,顯示了目前全球網路上有哪些地方正在發生 BGP Leak/狹持。
BGP 狹持,大概可以分成幾種。
無論如何,這都會影響到網路的路由。要麼一個封包跑到最後是找不到目的地的,要麼就是這封包給別人攔截了。理論上,ISP 等單位都會針對 BGP 的宣告做一些基礎的檢查,限定只能宣告一些正常的網斷。不過,實務上就不一定了。
BGP 狹持也有可能用來搞 DDoS 攻擊。另外,有一種類似的情況,稱為 "BGP Leak"。
BGP Leak 理論上和 BGP 狹持是類似的,不過通常是「善意的錯誤」。例如:操作者不小心手滑,寫錯路由表。
比較常會發生的狀況是,有一個自治系統實際上和兩個 ISP 對接。這個自治系統只是為了其他因素,所以跟兩邊對接,他本身並不想要幫忙在兩間 ISP 之間傳資料。結果操作者不小心告訴兩家 ISP 的其中一邊說,自己有和另一邊接上,結果那邊就很快樂地把很多資料傳過來了。
簡單來說,BGP Leak 比較像是「接錯線」,而 BGP Hijack 則比較像是把線故意接去攻擊者那邊。
完全狹持,即是自治系統在宣告的時候,其 CIDR 值是比別人「更精確一些」(即數字大)的。
由於在選擇路由時,通常是偏好「比較精確」的紀錄的,所以在完全狹持的狀況下,就會把別人的整個網段給蓋掉了。
CIDR 值,在這邊要解釋一下。
使用 CIDR 值,可以用一組 IP 位置來表示「超過一個 IP 位置」。
IPv4 的地址,格式是 255.255.255.255
(十進位)。
有時候會看到 255.255.255.255/24
,這就是帶有 CIDR 值的 IP 位置,這組 IP 代表 255.255.255.0
到 255.255.255.255
。
IPv4 實際上是一組 32 位元值長的數字,CIDR 值代表說,前 n 個位數是「共用」的。
以上面 255.255.255.255/24
的例子來說,寫起來會是這樣:
位數 8 16 24 32
binary 11111111 11111111 11111111 11111111
^ CIDR
dec 255 255 255 255
下一篇會提到: