自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

由Facebook事故引發(fā)的BGP工具探索

運(yùn)維 系統(tǒng)運(yùn)維
昨天,F(xiàn)acebook 發(fā)生了由 BGP 引起的離線事故。我對(duì)學(xué)習(xí)更多關(guān)于 BGP 的知識(shí)已經(jīng)隱約感興趣了很長時(shí)間,所以我閱讀了一些文章。這篇博文展示了一些你可以用來查詢 BGP 信息的工具。

[[427428]]

昨天,F(xiàn)acebook 發(fā)生了由 BGP 引起的離線事故。我對(duì)學(xué)習(xí)更多關(guān)于 BGP 的知識(shí)已經(jīng)隱約感興趣了很長時(shí)間,所以我閱讀了一些文章。

我感到很沮喪,因?yàn)闆]有一篇文章告訴我如何在我的電腦上實(shí)際查找與 BGP 有關(guān)的信息,因此我 寫了一條詢問有關(guān)工具的推特

我一如既往地得到了一堆有用的回復(fù),所以這篇博文展示了一些你可以用來查詢 BGP 信息的工具。這篇文章中可能會(huì)有較多的錯(cuò)誤,因?yàn)槲覍?duì) BGP 不是很了解。

我不能發(fā)布 BGP 路由

我從來沒有了解過 BGP 的原因之一是,據(jù)我所知,我沒有在互聯(lián)網(wǎng)上發(fā)布 BGP 路由的權(quán)限。

對(duì)于大多數(shù)網(wǎng)絡(luò)協(xié)議,如果需要,你可以非常輕松地自己實(shí)現(xiàn)該協(xié)議。例如,你可以:

  • 發(fā)行你自己的 TLS 證書
  • 編寫你自己的 HTTP 服務(wù)器
  • 編寫你自己的 TCP 實(shí)現(xiàn)
  • 為你的域名編寫你自己的權(quán)威 DNS 服務(wù)器(我現(xiàn)在正在為一個(gè)小項(xiàng)目嘗試這樣做)
  • 建立你自己的證書機(jī)構(gòu)(CA)

但是對(duì)于 BGP,我認(rèn)為除非你擁有自己的 ASN,否則你不能自己發(fā)布路由(你可以在你的家庭網(wǎng)絡(luò)上實(shí)現(xiàn) BGP,但這對(duì)我來說有點(diǎn)無聊,當(dāng)我做實(shí)驗(yàn)的時(shí)候,我希望它們真的在真正的互聯(lián)網(wǎng)上)。

無論如何,盡管我不能用它做實(shí)驗(yàn),但我仍然認(rèn)為它超級(jí)有趣,因?yàn)槲蚁矚g網(wǎng)絡(luò),所以我將向你展示我找到的一些用來學(xué)習(xí) BGP 的工具。

首先我們來談?wù)?BGP 的一些術(shù)語。我打算很快掠過,因?yàn)槲覍?duì)工具更感興趣,而且網(wǎng)上有很多關(guān)于 BGP 的高水平解釋(比如這篇 cloudflare 的文章)。

AS 是什么?

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

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

下面是我通過做一些實(shí)驗(yàn)對(duì) AS 的一些觀察:

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

什么是 BGP 路由?

互聯(lián)網(wǎng)上有很多的路由器。例如,我的 ISP 就有路由器。

當(dāng)我給我的 ISP 發(fā)送一個(gè)數(shù)據(jù)包時(shí)(例如通過運(yùn)行 ping 129.134.30.0),我的 ISP 的路由器需要弄清楚如何將我的數(shù)據(jù)包實(shí)際送到 IP 地址 129.134.30.0。

路由器計(jì)算的方法是,它有一個(gè)路由表:這是個(gè)有一堆 IP 地址范圍的列表(比如 129.134.30.0/23),以及它知道的到達(dá)該子網(wǎng)的路由。

下面是一個(gè) 129.134.30.0/23 (Facebook 的一個(gè)子網(wǎng))的真實(shí)路由的例子。這不是來自我的 ISP。

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

我認(rèn)為這是在說通往 129.134.30.0 的一條路徑是通過機(jī)器 206.108.35.2,這是在它的本地網(wǎng)絡(luò)上。所以路由器接下來可能會(huì)把我的 ping 包發(fā)送到 206.108.35.2,然后 206.108.35.2 會(huì)知道如何把它送到 Facebook。開頭的兩個(gè)數(shù)字(11670 32934)是 ASN。

BGP 是什么?

我對(duì) BGP 的理解非常淺薄,它是一個(gè)公司用來公布 BGP 路由的協(xié)議。

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

好了,現(xiàn)在我們已經(jīng)涵蓋了一些基本的術(shù)語,讓我們來談?wù)勀憧梢杂脕聿榭?AS 和 BGP 的工具吧!

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

為了使 AS 這個(gè)東西不那么抽象,讓我們用一個(gè)叫做 BGPView的 工具來看看一個(gè)真實(shí)的 AS。

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

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

工具 2:traceroute -A 和 mtr -z

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

traceroute 和 mtr 都有選項(xiàng)可以告訴你每個(gè) IP 的 ASN。其選項(xiàng)分別是 traceroute -A 和 mtr -z

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

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

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

我不確定 互聯(lián)網(wǎng)交換internet exchange(IX)是什么,但我知道它是互聯(lián)網(wǎng)的一個(gè)極其重要的部分。不過這將是以后的事了。我猜是,它是互聯(lián)網(wǎng)中實(shí)現(xiàn)“對(duì)等”的部分,就假設(shè)它是一個(gè)有巨大的交換機(jī)的機(jī)房,里面有無限的帶寬,一堆不同的公司把他們的電腦放在里面,這樣他們就可以互相發(fā)送數(shù)據(jù)包。

mtr 用 DNS 查找 ASN

我對(duì) mtr 如何查找 ASN 感到好奇,所以我使用了 strace。我看到它看起來像是在使用 DNS,所以我運(yùn)行了 dnspeep,然后就看到了!

  1. $ sudo dnspeep
  2. ...
  3. 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
  4. ...

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

  1. $ dig txt 1.190.163.104.origin.asn.cymru.com
  2. 1.190.163.104.origin.asn.cymru.com. 13911 IN TXT "1403 | 104.163.160.0/19 | CA | arin | 2014-08-14"
  3. 1.190.163.104.origin.asn.cymru.com. 13911 IN TXT "1403 | 104.163.128.0/17 | CA | arin | 2014-08-14"
  4. 1.190.163.104.origin.asn.cymru.com. 13911 IN TXT "1403 | 104.163.176.0/20 | CA | arin | 2014-08-14"

這很好!讓我們繼續(xù)前進(jìn)吧。

工具 3:數(shù)據(jù)包交換所的觀察鏡

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

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

在該網(wǎng)站的 Web 表單中,我選擇了多倫多 IX(“TORIX”),因?yàn)?nbsp;mtr 說我是用它來訪問 facebook.com 的。

操作 1:顯示 ip bgp 摘要

下面是輸出結(jié)果。我修改了其中的一些內(nèi)容:

  1. IPv4 Unicast Summary:
  2. BGP router identifier 74.80.118.4, local AS number 3856 vrf-id 0
  3. BGP table version 33061919
  4. RIB entries 513241, using 90 MiB of memory
  5. Peers 147, using 3003 KiB of memory
  6. Peer groups 8, using 512 bytes of memory
  7.  
  8. Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
  9. ...
  10. 206.108.34.248 4 1403 484672 466938 0 0 0 05w3d03h 50
  11. ...
  12. 206.108.35.2 4 32934 482088 466714 0 0 0 01w6d07h 38
  13. 206.108.35.3 4 32934 482019 466475 0 0 0 01w0d06h 38
  14. ...
  15.  
  16. Total number of neighbors 147

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

操作 2:顯示 ip bgp 129.134.30.0

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

  1. BGP routing table entry for 129.134.30.0/23
  2. Paths: (4 available, best #4, table default)
  3. Advertised to non peer-group peers:
  4. 206.220.231.55
  5. 11670 32934
  6. 206.108.35.2 from 206.108.35.254 (206.108.35.254)
  7. Origin IGP, metric 0, valid, external
  8. Community: 3856:55000
  9. Last update: Mon Oct 4 21:17:33 2021
  10.  
  11. 11670 32934
  12. 206.108.35.2 from 206.108.35.253 (206.108.35.253)
  13. Origin IGP, metric 0, valid, external
  14. Community: 3856:55000
  15. Last update: Mon Oct 4 21:17:31 2021
  16.  
  17. 32934
  18. 206.108.35.3 from 206.108.35.3 (157.240.58.225)
  19. Origin IGP, metric 0, valid, external, multipath
  20. Community: 3856:55000
  21. Last update: Mon Oct 4 21:17:27 2021
  22.  
  23. 32934
  24. 206.108.35.2 from 206.108.35.2 (157.240.58.182)
  25. Origin IGP, metric 0, valid, external, multipath, best (Older Path)
  26. Community: 3856:55000
  27. Last update: Mon Oct 4 21:17:27 2021

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

魁北克 IX 似乎對(duì) Facebook 一無所知。

我也試過從魁北克 IX(“QIX”,它可能離我更近,因?yàn)槲易≡诿商乩麪柖皇嵌鄠惗啵┳鐾瑯拥氖虑?。?QIX 似乎對(duì) Facebook 一無所知:當(dāng)我輸入129.134.30.0 時(shí),它只是說 “% 網(wǎng)絡(luò)不在表中”。

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

更多的 BGP 觀察鏡

這里還有一些帶觀察鏡的網(wǎng)站,可以從其他角度給你類似的信息。它們似乎都支持相同的 show ip bgp 語法,也許是因?yàn)樗麄冞\(yùn)行的是同一個(gè)軟件?我不太確定。

似乎有很多這樣的觀察鏡服務(wù),遠(yuǎn)不止這 3 個(gè)列表。

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

  1. $ telnet route-views.routeviews.org
  2.  
  3. route-views>show ip bgp 31.13.80.36
  4.  
  5. BGP routing table entry for 31.13.80.0/24, version 1053404087
  6. Paths: (23 available, best #2, table default)
  7. Not advertised to any peer
  8. Refresh Epoch 1
  9. 3267 1299 32934
  10. 194.85.40.15 from 194.85.40.15 (185.141.126.1)
  11. Origin IGP, metric 0, localpref 100, valid, external
  12. path 7FE0C3340190 RPKI State valid
  13. rx pathid: 0, tx pathid: 0
  14. Refresh Epoch 1
  15. 6939 32934
  16. 64.71.137.241 from 64.71.137.241 (216.218.252.164)
  17. Origin IGP, localpref 100, valid, external, best
  18. path 7FE135DB6500 RPKI State valid
  19. rx pathid: 0, tx pathid: 0x0
  20. Refresh Epoch 1
  21. 701 174 32934
  22. 137.39.3.55 from 137.39.3.55 (137.39.3.55)
  23. Origin IGP, localpref 100, valid, external
  24. path 7FE1604D3AF0 RPKI State valid
  25. rx pathid: 0, tx pathid: 0
  26. Refresh Epoch 1
  27. 20912 3257 1299 32934
  28. 212.66.96.126 from 212.66.96.126 (212.66.96.126)
  29. Origin IGP, localpref 100, valid, external
  30. Community: 3257:8095 3257:30622 3257:50001 3257:53900 3257:53904 20912:65004
  31. path 7FE1195AF140 RPKI State valid
  32. rx pathid: 0, tx pathid: 0
  33. Refresh Epoch 1
  34. 7660 2516 1299 32934
  35. 203.181.248.168 from 203.181.248.168 (203.181.248.168)
  36. Origin IGP, localpref 100, valid, external
  37. Community: 2516:1030 7660:9001
  38. path 7FE0D195E7D0 RPKI State valid
  39. rx pathid: 0, tx pathid: 0

這里有幾個(gè)路由的選擇:

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

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

最短的是 6939(“Hurricane Electric”),它是一個(gè) “全球互聯(lián)網(wǎng)骨干”。他們也有自己的 Hurricane Electric 觀察鏡 頁面。

工具 4:BGPlay

到目前為止,所有其他的工具都只是向我們展示了 Facebook 路由的當(dāng)前狀態(tài),其中一切正常,但這第四個(gè)工具讓我們看到了這個(gè) Facebook BGP 互聯(lián)網(wǎng)災(zāi)難的歷史。這是一個(gè) GUI 工具,所以我將包括一堆屏幕截圖。

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

首先,讓我們看看一切出錯(cuò)之前的狀態(tài)。我點(diǎn)擊了在 10 月 4 日 13:11:28 的時(shí)間線,得到了這個(gè)結(jié)果: 

我最初發(fā)現(xiàn)這很讓人不知所措。發(fā)生了什么事?但后來有人在推特上指出,下一個(gè)要看的地方是點(diǎn)擊 Facebook 災(zāi)難發(fā)生后的時(shí)間線(10 月 4 日 18 點(diǎn) 38 分)。 

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

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

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

如果我再點(diǎn)擊“快進(jìn)fast forward”按鈕,我們看到 BGP 路由開始回來了。 

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

如果我再次點(diǎn)擊“快進(jìn)fast forward”按鈕,越來越多的路由開始回來,路由開始恢復(fù)正常。

我發(fā)現(xiàn)在 BGPlay 里看這個(gè)故障真的很有趣,盡管一開始界面很混亂。

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

我在這篇文章的開頭說,你不能改變 BGP 路由,但后來我想起在 2016 年或 2017 年,有一個(gè) Telia 路由問題,給我們的工作造成了一些小的網(wǎng)絡(luò)問題。而當(dāng)這種情況發(fā)生時(shí),了解為什么你的客戶無法到達(dá)你的網(wǎng)站其實(shí)是很有用的,即使它完全不受你控制。當(dāng)時(shí)我不知道這些工具,但我希望能知道!

我認(rèn)為對(duì)于大多數(shù)公司來說,應(yīng)對(duì)由其他人的錯(cuò)誤 BGP 路由造成的中斷,你所能做的就是“什么都不做,等待它得到修復(fù)”,但能夠_自信地_什么都不做是很好的。

一些發(fā)布 BGP 路由的方法

如果你想(作為一個(gè)業(yè)余愛好者)真正發(fā)布 BGP 路由,這里有一些評(píng)論中的鏈接:

  • 獲取你自己的 ASN 的指南
  • dn42 似乎有一個(gè) BGP 的實(shí)驗(yàn)場(它不在公共互聯(lián)網(wǎng)上,但確實(shí)有其他人在上面,這似乎比自己在家里做 BGP 實(shí)驗(yàn)更有趣)

目前就這些了

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

我對(duì)我作為一個(gè)普通人可以得到這么多關(guān)于 BGP 的信息感到驚訝,我一直認(rèn)為它是一個(gè)“秘密的網(wǎng)絡(luò)巫師”這樣的東西,但顯然有各種公共機(jī)器,任何人都可以直接 telnet 到它并用來查看路由表!沒想到! 

 

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2020-04-09 15:26:55

間諜軟件NSOFacebook

2009-03-13 16:39:16

Linux開源改變

2020-05-07 11:00:24

Go亂碼框架

2013-03-05 10:05:52

2015-02-04 14:36:07

格式串漏洞Ghost漏洞安全漏洞

2020-12-09 08:59:59

MongoDB復(fù)合索事故

2013-08-21 12:29:12

Facebook開源

2012-08-31 17:09:31

FacebookHTML5W3C

2022-11-07 19:08:28

transform屬性瀏覽器

2023-02-16 08:55:13

2011-06-10 10:11:44

2009-03-12 15:25:50

firefox火狐

2010-06-02 16:22:58

2013-08-02 14:27:28

2012-04-09 09:53:56

2009-09-07 15:56:16

2024-08-20 21:27:04

docker部署容器

2019-01-16 09:20:42

架構(gòu)設(shè)計(jì)JVM FullGC宕機(jī)事故

2017-09-26 10:00:15

前端JS語法

2015-08-21 14:25:27

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)