Merge pull request #23465 from wxy/20211005-Tools-to-explore-BGP

PRF&PUB:20211005 tools to explore bgp
This commit is contained in:
Xingyu.Wang 2021-10-07 09:41:39 +08:00 committed by GitHub
commit c2102305d1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -3,13 +3,15 @@
[#]: author: "Julia Evans https://jvns.ca/"
[#]: collector: "lujun9972"
[#]: translator: "wxy"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-13857-1.html"
由 Facebook 事故引发的 BGP 工具探索
======
![](https://img.linux.net.cn/data/attachment/album/202110/07/093743krr8ftrpvgfrvffx.jpg)
昨天Facebook 发生了由 BGP 引起的离线事故。我对学习更多关于 BGP 的知识已经隐约感兴趣了很长时间,所以我阅读了一些文章。
我感到很沮丧,因为没有一篇文章告诉我如何在我的电脑上实际查找与 BGP 有关的信息,因此我 [写了一条询问有关工具的推特][1]。
@ -25,12 +27,12 @@
* 发行你自己的 TLS 证书
* 编写你自己的 HTTP 服务器
* 编写你自己的 TCP 实现
* 为你的域名编写你自己的权威 DNS 服务器(我现在正在为一个小项目尝试这样做)
*建立你自己的证书机构CA
* 为你的域名编写你自己的权威 DNS 服务器(我现在正在为一个小项目尝试这样做)
* 建立你自己的证书机构CA
但是对于 BGP我认为除非你拥有自己的 ASN否则你不能自己发布路由你*可以*在你的家庭网络上实现 BGP但这对我来说有点无聊当我做实验的时候我希望它们真的在真正的互联网上
无论如何,尽管我不能用它做实验,但我仍然认为它超级有趣,因为我喜欢网络,所以我将向你展示我找到的一些工具来学习 BGP
无论如何,尽管我不能用它做实验,但我仍然认为它超级有趣,因为我喜欢网络,所以我将向你展示我找到的一些用来学习 BGP 的工具
首先我们来谈谈 BGP 的一些术语。我打算很快掠过,因为我对工具更感兴趣,而且网上有很多关于 BGP 的高水平解释(比如这篇 [cloudflare 的文章][2])。
@ -39,14 +41,14 @@
我们首先需要了解的是 AS<ruby>自治系统<rt>autonomous system</rt></ruby>”)。每个 AS
1. 由一个组织拥有(通常是一个大型组织,如你的 ISP、政府、大学、Facebook 等)。
2.控制一组特定的 IP 地址(例如,我的 ISP 的 AS 包括 247,808 个 IP 地址)。
2. 控制一组特定的 IP 地址(例如,我的 ISP 的 AS 包括 247,808 个 IP 地址)。
3. 有一个编号 ASN如 1403
下面是我通过做一些实验对 AS 的一些观察:
* 一些相当大的科技公司并没有自己的 AS。例如我在 BGPView 上查看了 Patreon就我所知他们没有自己的 AS他们的主要网站patreon.com[104.16.6.49][3])在 Cloudflare 的 AS 中。
* 一些相当大的科技公司并没有自己的 AS。例如我在 BGPView 上查看了 Patreon就我所知他们没有自己的 AS他们的主要网站`patreon.com`[104.16.6.49][3])在 Cloudflare 的 AS 中。
* 一个 AS 可以包括许多国家的 IP。Facebook 的 AS[AS32934][4])肯定有新加坡、加拿大、尼日利亚、肯尼亚、美国和其他国家的 IP 地址。
* 似乎 IP 地址可以在一个以上的 AS 中。例如,如果我查找[209.216.230.240][5],它有 2 个 ASN 与之相关AS6130 和 AS21581。显然当这种情况发生时更具体的路线会被优先考虑--所以到该 IP 的数据包会被路由到 AS21581
* 似乎 IP 地址可以在一个以上的 AS 中。例如,如果我查找 [209.216.230.240][5],它有 2 个 ASN 与之相关:`AS6130``AS21581`。显然,当这种情况发生时,更具体的路线会被优先考虑 —— 所以到该 IP 的数据包会被路由到 `AS21581`
### 什么是 BGP 路由?
@ -54,9 +56,9 @@
当我给我的 ISP 发送一个数据包时(例如通过运行 `ping 129.134.30.0`),我的 ISP 的路由器需要弄清楚如何将我的数据包实际送到 IP 地址 `129.134.30.0`
路由器计算的方法是,它有一个**路由表**:有一堆 IP 地址范围的列表(比如 `129.134.30.0/23`),以及它知道的到达该子网的路由。
路由器计算的方法是,它有一个**路由表**这是个有一堆 IP 地址范围的列表(比如 `129.134.30.0/23`),以及它知道的到达该子网的路由。
下面是一个 `129.134.30.0/23` 的真实路由的例子Facebook 的一个子网)。这不是来自我的 ISP。
下面是一个 `129.134.30.0/23` Facebook 的一个子网)的真实路由的例子。这不是来自我的 ISP。
```
11670 32934
@ -70,7 +72,7 @@
### BGP 是什么?
我对 BGP 的理解很不牢靠,但它是一个公司用来公布 BGP 路由的协议。
我对 BGP 的理解非常浅薄,它是一个公司用来公布 BGP 路由的协议。
昨天发生在 Facebook 身上的事情基本上是他们发布了一个 BGP 公告,撤销了他们所有的 BGP 路由,所以世界上的每个路由器都删除了所有与 Facebook 有关的路由,没有流量可以到达那里。
@ -80,7 +82,7 @@
为了使 AS 这个东西不那么抽象,让我们用一个叫做 [BGPView][6]的 工具来看看一个真实的 AS。
我的 ISPEBOX拥有 [AS 1403][7]。下面是 [我的 ISP 拥有的 IP 地址][8]。如果我查找我的计算机的公共 IPv4 地址,我可以看到它是我的 ISP 拥有的IP地址之一它在 `104.163.128.0/17` 块中。
我的 ISPEBOX拥有 [AS 1403][7]。是 [我的 ISP 拥有的 IP 地址][8]。如果我查找我的计算机的公共 IPv4 地址,我可以看到它是我的 ISP 拥有的IP地址之一它在 `104.163.128.0/17` 块中。
BGPView 也有这个图,显示了我的 ISP 与其他 AS 的连接情况。
@ -92,7 +94,7 @@ BGPView 也有这个图,显示了我的 ISP 与其他 AS 的连接情况。
`traceroute``mtr` 都有选项可以告诉你每个 IP 的 ASN。其选项分别是 `traceroute -A``mtr -z`
让我们看看我用 `mtr` 在去 facebook.com 的路上经过了哪些自治系统
让我们看看我用 `mtr` 在去 `facebook.com` 的路上经过了哪些 AS
```
$ mtr -z facebook.com
@ -108,11 +110,11 @@ $ mtr -z facebook.com
10. AS32934 edge-star-mini-shv-01-yyz1.facebook.com
```
这很有意思,看起来我们直接从我的 ISP 的 AS1403到 Facebook 的 AS32934中间有一个“互联网交换”。
这很有意思,看起来我们直接从我的 ISP 的 AS`1403`)到 Facebook 的 AS`32934`),中间有一个“互联网交换”。
我不确定 <ruby>[互联网交换][10]<rt>internet exchange</rt></ruby>IX是什么但我知道它是互联网的一个极其重要的部分。不过这将是以后的事了。我最好的是,它是互联网中实现“对等”的部分,就假设它是一个有巨大的交换机的机房,里面有无限的带宽,一堆不同的公司把他们的电脑放在里面,这样他们就可以互相发送数据包。
> 我不确定 <ruby>[互联网交换][10]<rt>internet exchange</rt></ruby>IX是什么但我知道它是互联网的一个极其重要的部分。不过这将是以后的事了。我猜是它是互联网中实现“对等”的部分就假设它是一个有巨大的交换机的机房里面有无限的带宽一堆不同的公司把他们的电脑放在里面这样他们就可以互相发送数据包。
### mtr 用 DNS 查找 ASN
#### mtr 用 DNS 查找 ASN
我对 `mtr` 如何查找 ASN 感到好奇,所以我使用了 `strace`。我看到它看起来像是在使用 DNS所以我运行了 [dnspeep][11],然后就看到了!
@ -140,7 +142,7 @@ PCH“<ruby>数据包交换所<rt>packet clearing house</rt></ruby>”)是
这里是 PCH 的观察镜: <https://www.pch.net/tools/looking_glass/>
在该网站的 Web 表单中,我选择了多伦多 IX“TORIX”因为 `mtr` 说我是用它来访问 facebook.com 的。
在该网站的 Web 表单中,我选择了多伦多 IX“TORIX”因为 `mtr` 说我是用它来访问 `facebook.com` 的。
#### 操作 1显示 ip bgp 摘要
@ -169,7 +171,7 @@ Total number of neighbors 147
#### 操作 2显示 ip bgp 129.134.30.0
这是选自 `show ip bgp``129.134.30.0`Facebook 的一个 IP 地址)的输出:
这是选自 `show ip bgp``129.134.30.0`Facebook 的一个 IP 地址)的输出:
```
BGP routing table entry for 129.134.30.0/23
@ -217,9 +219,9 @@ Paths: (4 available, best #4, table default)
* <http://www.routeservers.org/>
* <https://lg.he.net/>
似乎有很多这样的观察镜服务,远不止这 3 个列表
似乎有很多这样的观察镜服务,远不止这 3 个列表
这里有一个与这个列表上的一个服务器进行会话的例子route-views.routeviews.org。这次我是通过 telnet 连接的,而不是通过 Web 表单,但输出的格式看起来是一样的。
这里有一个与这个列表上的一个服务器进行会话的例子:`route-views.routeviews.org`。这次我是通过 telnet 连接的,而不是通过 Web 表单,但输出的格式看起来是一样的。
```
$ telnet route-views.routeviews.org
@ -271,15 +273,15 @@ Paths: (23 available, best #2, table default)
* `20912 3257 1299 32934`
* `7660 2516 1299 32934`
我想这些都有不止一个 AS 的原因是,`31.13.80.36` 是 Facebook 在多伦多的 IP 地址,所以这个服务器(可能在美国西海岸,我不确定)不能直接连接到它,它需要先到另一个 AS。所以所有的路由都有一个或多个 ASN
我想这些都有不止一个 AS 的原因是,`31.13.80.36` 是 Facebook 在多伦多的 IP 地址,所以这个服务器(可能在美国西海岸,我不确定)不能直接连接到它,它需要先到另一个 AS。所以所有的路由都有一个或多个 ASN
最短的是 6939“Hurricane Electric”它是一个 “全球互联网骨干”。他们也有自己的 [Hurricane Electric 观察镜][12] 页面。
最短的是 `6939`“Hurricane Electric”它是一个 “全球互联网骨干”。他们也有自己的 [Hurricane Electric 观察镜][12] 页面。
### 工具 4BGPlay
到目前为止,所有其他的工具都只是向我们展示了 Facebook 路由的当前状态,其中一切正常,但这第四个工具让我们看到了这个 Facebook BGP 互联网灾难的历史 这是一个 GUI 工具,所以我将包括一堆屏幕截图。
到目前为止,所有其他的工具都只是向我们展示了 Facebook 路由的当前状态,其中一切正常,但这第四个工具让我们看到了这个 Facebook BGP 互联网灾难的历史这是一个 GUI 工具,所以我将包括一堆屏幕截图。
该工具在 <https://stat.ripe.net/special/bgplay>。我输入了 IP 地址 129.134.30.12Facebook 的一个 IP如果你想一起试试。
该工具在 <https://stat.ripe.net/special/bgplay>。我输入了 IP 地址 `129.134.30.12`Facebook 的一个 IP如果你想一起试试。
首先,让我们看看一切出错之前的状态。我点击了在 10 月 4 日 13:11:28 的时间线,得到了这个结果:
@ -320,7 +322,7 @@ Date and time: 2021-10-04 16:02:33 Collected by: 20-91.206.53.12
如果你想(作为一个业余爱好者)真正发布 BGP 路由,这里有一些评论中的链接:
* [获取你自己的 ASN 的指南][17]
* [dn42][18] 似乎有一个 BGP 的实验场(它不在公共互联网上,但确实有其他人在上面,这似乎比自己在家里做 BGP 实验更有趣
* [dn42][18] 似乎有一个 BGP 的实验场(它不在公共互联网上,但确实有其他人在上面,这似乎比自己在家里做 BGP 实验更有趣
### 目前就这些了
@ -335,7 +337,7 @@ via: https://jvns.ca/blog/2021/10/05/tools-to-look-at-bgp-routes/
作者:[Julia Evans][a]
选题:[lujun9972][b]
译者:[wxy](https://github.com/wxy)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出