Menu
快讀
  • 旅遊
  • 生活
    • 美食
    • 寵物
    • 養生
    • 親子
  • 娛樂
    • 動漫
  • 時尚
  • 社會
  • 探索
  • 故事
  • 科技
  • 軍事
  • 国际
快讀

由 Facebook 事故引發的 BGP 工具探索

2022 年 8 月 16 日 猛哥V

由 Facebook 事故引發的 BGP 工具探索

昨天,Facebook 發生了由 BGP 引起的離線事故。我對學習更多關于 BGP 的知識已經隱約感興趣了很長時間,所以我閱讀了一些文章。

我感到很沮喪,因爲沒有一篇文章告訴我如何在我的電腦上實際查找與 BGP 有關的信息,因此我 寫了一條詢問有關工具的推特。

我一如既往地得到了一堆有用的回複,所以這篇博文展示了一些你可以用來查詢 BGP 信息的工具。這篇文章中可能會有較多的錯誤,因爲我對 BGP 不是很了解。

我不能發布 BGP 路由

我從來沒有了解過 BGP 的原因之一是,據我所知,我沒有在互聯網上發布 BGP 路由的權限。

對于大多數網絡協議,如果需要,你可以非常輕松地自己實現該協議。例如,你可以:

  • 發行你自己的 TLS 證書
  • 編寫你自己的 HTTP 服務器
  • 編寫你自己的 TCP 實現
  • 爲你的域名編寫你自己的權威 DNS 服務器(我現在正在爲一個小項目嘗試這樣做)
  • 建立你自己的證書機構(CA)

但是對于 BGP,我認爲除非你擁有自己的 ASN,否則你不能自己發布路由(你可以在你的家庭網絡上實現 BGP,但這對我來說有點無聊,當我做實驗的時候,我希望它們真的在真正的互聯網上)。

無論如何,盡管我不能用它做實驗,但我仍然認爲它超級有趣,因爲我喜歡網絡,所以我將向你展示我找到的一些用來學習 BGP 的工具。

首先我們來談談 BGP 的一些術語。我打算很快掠過,因爲我對工具更感興趣,而且網上有很多關于 BGP 的高水平解釋(比如這篇 cloudflare 的文章)。

AS 是什麽?

我們首先需要了解的是 AS(“自治系統autonomous system”)。每個 AS:

  1. 由一個組織擁有(通常是一個大型組織,如你的 ISP、政府、大學、Facebook 等)。
  2. 控制一組特定的 IP 地址(例如,我的 ISP 的 AS 包括 247,808 個 IP 地址)。
  3. 有一個編號 ASN(如 1403)。

下面是我通過做一些實驗對 AS 的一些觀察:

  • 一些相當大的科技公司並沒有自己的 AS。例如,我在 BGPView 上查看了 Patreon,就我所知,他們沒有自己的 AS,他們的主要網站(patreon.com,104.16.6.49)在 Cloudflare 的 AS 中。
  • 一個 AS 可以包括許多國家的 IP。Facebook 的 AS(AS32934)肯定有新加坡、加拿大、尼日利亞、肯尼亞、美國和其他國家的 IP 地址。
  • 似乎 IP 地址可以在一個以上的 AS 中。例如,如果我查找 209.216.230.240,它有 2 個 ASN 與之相關:AS6130和AS21581。顯然,當這種情況發生時,更具體的路線會被優先考慮 —— 所以到該 IP 的數據包會被路由到AS21581。

什麽是 BGP 路由?

互聯網上有很多的路由器。例如,我的 ISP 就有路由器。

當我給我的 ISP 發送一個數據包時(例如通過運行 ping 129.134.30.0),我的 ISP 的路由器需要弄清楚如何將我的數據包實際送到 IP 地址129.134.30.0。

路由器計算的方法是,它有一個路由表:這是個有一堆 IP 地址範圍的列表(比如129.134.30.0/23),以及它知道的到達該子網的路由。

下面是一個 129.134.30.0/23(Facebook 的一個子網)的真實路由的例子。這不是來自我的 ISP。

11670 32934 206.108.35.2 from 206.108.35.254 (206.108.35.254) Origin IGP, metric 0, valid, external Community: 3856:55000 Last update: Mon Oct 4 21:17:33 2021

我認爲這是在說通往 129.134.30.0的一條路徑是通過機器206.108.35.2,這是在它的本地網絡上。所以路由器接下來可能會把我的 ping 包發送到206.108.35.2,然後206.108.35.2會知道如何把它送到 Facebook。開頭的兩個數字(11670 32934)是 ASN。

BGP 是什麽?

我對 BGP 的理解非常淺薄,它是一個公司用來公布 BGP 路由的協議。

昨天發生在 Facebook 身上的事情基本上是他們發布了一個 BGP 公告,撤銷了他們所有的 BGP 路由,所以世界上的每個路由器都刪除了所有與 Facebook 有關的路由,沒有流量可以到達那裏。

好了,現在我們已經涵蓋了一些基本的術語,讓我們來談談你可以用來查看 AS 和 BGP 的工具吧!

工具 1:用 BGPView 查看你的 ISP 的 AS

爲了使 AS 這個東西不那麽抽象,讓我們用一個叫做 BGPView的 工具來看看一個真實的 AS。

我的 ISP(EBOX)擁有 AS 1403。這是我的 ISP 擁有的 IP 地址。如果我查找我的計算機的公共 IPv4 地址,我可以看到它是我的 ISP 擁有的IP地址之一:它在104.163.128.0/17塊中。

BGPView 也有這個圖,顯示了我的 ISP 與其他 AS 的連接情況。

由 Facebook 事故引發的 BGP 工具探索

工具 2:traceroute -A 和 mtr -z

好了,我們感興趣的是 AS 。讓我們看看我從哪些 AS 中穿過。

traceroute和mtr都有選項可以告訴你每個 IP 的 ASN。其選項分別是traceroute -A和mtr -z。

讓我們看看我用 mtr在去facebook.com的路上經過了哪些 AS!

$ mtr -z facebook.com 1. AS??? LEDE.lan 2. AS1403 104-163-190-1.qc.cable.ebox.net 3. AS??? 10.170.192.58 4. AS1403 0.et-5-2-0.er1.mtl7.yul.ebox.ca 5. AS1403 0.ae17.er2.mtl3.yul.ebox.ca 6. AS1403 0.ae0.er1.151fw.yyz.ebox.ca 7. AS??? facebook-a.ip4.torontointernetxchange.net 8. AS32934 po103.psw01.yyz1.tfbnw.net 9. AS32934 157.240.38.7510. AS32934 edge-star-mini-shv-01-yyz1.facebook.com

這很有意思,看起來我們直接從我的 ISP 的 AS(1403)到 Facebook 的 AS(32934),中間有一個“互聯網交換”。

我不確定 互聯網交換internet exchange(IX)是什麽,但我知道它是互聯網的一個極其重要的部分。不過這將是以後的事了。我猜是,它是互聯網中實現“對等”的部分,就假設它是一個有巨大的交換機的機房,裏面有無限的帶寬,一堆不同的公司把他們的電腦放在裏面,這樣他們就可以互相發送數據包。

mtr 用 DNS 查找 ASN

我對 mtr如何查找 ASN 感到好奇,所以我使用了strace。我看到它看起來像是在使用 DNS,所以我運行了dnspeep,然後就看到了!

$ sudo dnspeep…TXT 1.190.163.104.origin.asn.cymru.com 192.168.1.1 TXT: 1403 | 104.163.176.0/20 | CA | arin | 2014-08-14, TXT: 1403 | 104.163.160.0/19 | CA | arin | 2014-08-14, TXT: 1403 | 104.163.128.0/17 | CA | arin | 2014-08-14…

所以,看起來我們可以通過查找 1.190.163.104.origin.asn.cymru.com上的txt記錄找到104.163.190.1的 ASN,像這樣:

$ dig txt 1.190.163.104.origin.asn.cymru.com1.190.163.104.origin.asn.cymru.com. 13911 IN TXT “1403 | 104.163.160.0/19 | CA | arin | 2014-08-14″1.190.163.104.origin.asn.cymru.com. 13911 IN TXT “1403 | 104.163.128.0/17 | CA | arin | 2014-08-14″1.190.163.104.origin.asn.cymru.com. 13911 IN TXT “1403 | 104.163.176.0/20 | CA | arin | 2014-08-14”

這很好!讓我們繼續前進吧。

工具 3:數據包交換所的觀察鏡

PCH(“數據包交換所packet clearing house”)是運行大量互聯網交換點的組織。“觀察鏡looking glass”似乎是一個通用術語,指的是讓你從另一個人的計算機上運行網絡命令的 Web 表單。有一些觀察鏡不支持 BGP,但我只對那些能顯示 BGP 路由信息的觀察鏡感興趣。

這裏是 PCH 的觀察鏡: https://www.pch.net/tools/looking_glass/。

在該網站的 Web 表單中,我選擇了多倫多 IX(“TORIX”),因爲 mtr說我是用它來訪問facebook.com的。

操作 1:顯示 ip bgp 摘要

下面是輸出結果。我修改了其中的一些內容:

IPv4 Unicast Summary:BGP router identifier 74.80.118.4, local AS number 3856 vrf-id 0BGP table version 33061919RIB entries 513241, using 90 MiB of memoryPeers 147, using 3003 KiB of memoryPeer groups 8, using 512 bytes of memoryNeighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd…206.108.34.248 4 1403 484672 466938 0 0 0 05w3d03h 50…206.108.35.2 4 32934 482088 466714 0 0 0 01w6d07h 38206.108.35.3 4 32934 482019 466475 0 0 0 01w0d06h 38…Total number of neighbors 147

我的理解是,多倫多 IX(“TORIX”)直接連接到我的 ISP (EBOX,AS 1403)和 Facebook(AS 32934)。

操作 2:顯示 ip bgp 129.134.30.0

這是篩選自 show ip bgp對129.134.30.0(Facebook 的一個 IP 地址)的輸出:

BGP routing table entry for 129.134.30.0/23Paths: (4 available, best #4, table default) Advertised to non peer-group peers: 206.220.231.55 11670 32934 206.108.35.2 from 206.108.35.254 (206.108.35.254) Origin IGP, metric 0, valid, external Community: 3856:55000 Last update: Mon Oct 4 21:17:33 2021 11670 32934 206.108.35.2 from 206.108.35.253 (206.108.35.253) Origin IGP, metric 0, valid, external Community: 3856:55000 Last update: Mon Oct 4 21:17:31 2021 32934 206.108.35.3 from 206.108.35.3 (157.240.58.225) Origin IGP, metric 0, valid, external, multipath Community: 3856:55000 Last update: Mon Oct 4 21:17:27 2021 32934 206.108.35.2 from 206.108.35.2 (157.240.58.182) Origin IGP, metric 0, valid, external, multipath, best (Older Path) Community: 3856:55000 Last update: Mon Oct 4 21:17:27 2021

這似乎是在說,從該 IX 到 Facebook 有 4 條路線。

魁北克 IX 似乎對 Facebook 一無所知。

我也試過從魁北克 IX(“QIX”,它可能離我更近,因爲我住在蒙特利爾而不是多倫多)做同樣的事情。但 QIX 似乎對 Facebook 一無所知:當我輸入129.134.30.0時,它只是說 “% 網絡不在表中”。

所以我想這就是爲什麽我被送到多倫多 IX 而不是魁北克的 IX。

更多的 BGP 觀察鏡

這裏還有一些帶觀察鏡的網站,可以從其他角度給你類似的信息。它們似乎都支持相同的 show ip bgp語法,也許是因爲他們運行的是同一個軟件?我不太確定。

  • http://www.routeviews.org/routeviews/index.php/collectors/
  • http://www.routeservers.org/
  • https://lg.he.net/

似乎有很多這樣的觀察鏡服務,遠不止這 3 個列表。

這裏有一個與這個列表上的一個服務器進行會話的例子:route-views.routeviews.org。這次我是通過 telnet 連接的,而不是通過 Web 表單,但輸出的格式看起來是一樣的。

$ telnet route-views.routeviews.orgroute-views>show ip bgp 31.13.80.36BGP routing table entry for 31.13.80.0/24, version 1053404087Paths: (23 available, best #2, table default) Not advertised to any peer Refresh Epoch 1 3267 1299 32934 194.85.40.15 from 194.85.40.15 (185.141.126.1) Origin IGP, metric 0, localpref 100, valid, external path 7FE0C3340190 RPKI State valid rx pathid: 0, tx pathid: 0 Refresh Epoch 1 6939 32934 64.71.137.241 from 64.71.137.241 (216.218.252.164) Origin IGP, localpref 100, valid, external, best path 7FE135DB6500 RPKI State valid rx pathid: 0, tx pathid: 0x0 Refresh Epoch 1 701 174 32934 137.39.3.55 from 137.39.3.55 (137.39.3.55) Origin IGP, localpref 100, valid, external path 7FE1604D3AF0 RPKI State valid rx pathid: 0, tx pathid: 0 Refresh Epoch 1 20912 3257 1299 32934 212.66.96.126 from 212.66.96.126 (212.66.96.126) Origin IGP, localpref 100, valid, external Community: 3257:8095 3257:30622 3257:50001 3257:53900 3257:53904 20912:65004 path 7FE1195AF140 RPKI State valid rx pathid: 0, tx pathid: 0 Refresh Epoch 1 7660 2516 1299 32934 203.181.248.168 from 203.181.248.168 (203.181.248.168) Origin IGP, localpref 100, valid, external Community: 2516:1030 7660:9001 path 7FE0D195E7D0 RPKI State valid rx pathid: 0, tx pathid: 0

這裏有幾個路由的選擇:

  • 3267 1299 32934
  • 6939 32934
  • 701 174 32934
  • 20912 3257 1299 32934
  • 7660 2516 1299 32934

我想這些都有不止一個 AS 的原因是,31.13.80.36是 Facebook 在多倫多的 IP 地址,所以這個服務器(可能在美國西海岸,我不確定)不能直接連接到它,它需要先到另一個 AS。所以所有的路由都有一個或多個 ASN。

最短的是 6939(“Hurricane Electric”),它是一個 “全球互聯網骨幹”。他們也有自己的Hurricane Electric 觀察鏡頁面。

工具 4:BGPlay

到目前爲止,所有其他的工具都只是向我們展示了 Facebook 路由的當前狀態,其中一切正常,但這第四個工具讓我們看到了這個 Facebook BGP 互聯網災難的曆史。這是一個 GUI 工具,所以我將包括一堆屏幕截圖。

該工具在 https://stat.ripe.net/special/bgplay。我輸入了 IP 地址129.134.30.12(Facebook 的一個 IP),如果你想一起試試。

首先,讓我們看看一切出錯之前的狀態。我點擊了在 10 月 4 日 13:11:28 的時間線,得到了這個結果:

由 Facebook 事故引發的 BGP 工具探索

我最初發現這很讓人不知所措。發生了什麽事?但後來有人在推特上指出,下一個要看的地方是點擊 Facebook 災難發生後的時間線(10 月 4 日 18 點 38 分)。

由 Facebook 事故引發的 BGP 工具探索

很明顯,這張圖有問題:所有的 BGP 路線都不見了!哦,不要!

頂部的文字顯示了最後一條 Facebook BGP 路由的消失:

Type: W > withdrawal Involving: 129.134.30.0/24Short description: The route 50869, 25091, 32934 has been withdrawn.Date and time: 2021-10-04 16:02:33 Collected by: 20-91.206.53.12

如果我再點擊“快進fast forward”按鈕,我們看到 BGP 路由開始回來了。

由 Facebook 事故引發的 BGP 工具探索

第一個宣告的是 137409 32934。但我不認爲這實際上是第一個宣布的,在同一秒內有很多路由宣告(在 2021-10-04 21:00:40),我認爲 BGPlay 內部的排序是任意的。

如果我再次點擊“快進fast forward”按鈕,越來越多的路由開始回來,路由開始恢複正常。

我發現在 BGPlay 裏看這個故障真的很有趣,盡管一開始界面很混亂。

也許了解一下 BGP 是很重要的?

我在這篇文章的開頭說,你不能改變 BGP 路由,但後來我想起在 2016 年或 2017 年,有一個 Telia 路由問題,給我們的工作造成了一些小的網絡問題。而當這種情況發生時,了解爲什麽你的客戶無法到達你的網站其實是很有用的,即使它完全不受你控制。當時我不知道這些工具,但我希望能知道!

我認爲對于大多數公司來說,應對由其他人的錯誤 BGP 路由造成的中斷,你所能做的就是“什麽都不做,等待它得到修複”,但能夠_自信地_什麽都不做是很好的。

一些發布 BGP 路由的方法

如果你想(作爲一個業余愛好者)真正發布 BGP 路由,這裏有一些評論中的鏈接:

  • 獲取你自己的 ASN 的指南
  • dn42似乎有一個 BGP 的實驗場(它不在公共互聯網上,但確實有其他人在上面,這似乎比自己在家裏做 BGP 實驗更有趣)

目前就這些了

我想還有很多 BGP 工具(比如 PCH 有一堆 路由數據的每日快照,看起來很有趣),但這篇文章已經很長了,而且我今天還有其他事情要做。

我對我作爲一個普通人可以得到這麽多關于 BGP 的信息感到驚訝,我一直認爲它是一個“秘密的網絡巫師”這樣的東西,但顯然有各種公共機器,任何人都可以直接 telnet 到它並用來查看路由表!沒想到!

via: https://jvns.ca/blog/2021/10/05/tools-to-look-at-bgp-routes/

作者:Julia Evans選題:lujun9972譯者:wxy校對:wxy

本文由 LCTT原創編譯,Linux中國榮譽推出

相關文章:

  • 中國石油海外油氣業務高質量發展的新聞視角
  • 爲了避免假新聞影響大選,新加坡找到了 Facebook
  • 新加坡最好吃的20家榴蓮攤!新加坡的榴蓮爲什麽比中國的好吃?
  • 美國 GAFA 四大巨頭分析(三):Facebook,社交之王
  • 新加坡國民娛樂項目,養生釣蝦約不約?!盤點新加坡好玩的釣蝦場,周末走起吧!
  • 新加坡Black Friday購物攻略💯 推薦清單 + 促銷合集+消費指南!全副“5”裝,火熱上線!
時尚

發佈留言 取消回覆

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

©2025 快讀 | 服務協議 | DMCA | 聯繫我們