脸书有史以来最严重的停机时间。全网瘫痪近七个小时。高管们上推特道歉。在过去的七个小时里,所有的脸书网络都瘫痪了,甚至连内部网也被取消了。Twitter成为了最大的赢家。对于一个互联网巨头来说,这种情况太尴尬了。这是脸书成立以来最严重的网络访问事故。直到离线近7个小时后,脸书、Instagram等众多产品才在美国西部时间下午3点左右恢复正常访问。(目前只有美国恢复正常,全球其他国家和地区还没有。)
整个事件可以概括为:脸书负责BGP变更的工程师过滤掉了包含脸书授权域名服务器的185.89.218.0/23和129.134.30.0/23两个网段,产生了连锁反应。
以下是整个事件的完整前因后果:
脸书工程师,更新BGP路由配置时,过滤掉了185.89.218.0/23和129.134.30.0/23两条路由。这两条路由分别包含512个IP地址,共计1024个IP地址,其中:
85.89.218.0/23代表512个地址,其IP地址从185.89.218.0开始,到185.89.219.255结束。
29.134.30.0/23代表从129.134.30.0到129.134.31.255的512个IP地址。
这意味着互联网上的其它路由器将没有到这些1024 IP地址的路由。我该怎么办?
丢弃!
不幸的是,这1024个IP地址只包含脸书权威DNS服务器的IP地址。这是一件大事。要彻底理解为什么会发生大事,首先要了解DNS是如何工作的。
当用户在浏览器中输入Facebook.com并按回车键时,浏览器需要将facebook.com解析为IP地址,然后建立TCP连接、TLS安全连接和http事务。
通常用户的本地DNS服务器是家庭网关IP,或者是企业网关,或者是企业DNS服务器,比如192.168.1.1、10.0.0.1、172.16.1.1等。和一些用户使用DNS服务器,如1.1.1.1,8.8.8.8和114.114.114.114。但这些DNS服务器只是域名解析的搬运工。当用户请求解析Facebook.com时,他们首先检查缓存中是否有facebook.com和IP地址的条目,如果有,就直接返回给用户。
如果没有,需要这些域名解析的搬运工比如1.1.1.1去根域名服务器(一共13个虚拟IP地址)查询,返回com域名服务器(一级)的IP地址列表。
这个不知疲倦的1.1.1.1搬运工联系了com域名服务器(使用IP地址),com域名服务器将facebook.com域名服务器的IP地址列表返回给1.1.1.1。正是这些服务器才是最权威的数据来源,因为他们真正知道facebook中服务器的域名和ip地址的映射关系。
然而,当搬运工1.1.1.1试图联系facebook.com域名服务器的IP地址列表时,他无法连接,因为互联网上没有facebook.com域名服务器的IP地址列表的路由表。为什么脸书域名服务器的IP地址会从互联网的全球路由表中消失?因为脸书网络工程师过滤掉了(185.89.218.0/23和129.134.30.0/23)。
这样,1.1.1.1无法将facebook.com域名解析返还给用户,用户也无法访问脸书的网站。
为什么脸书在全球有30多亿用户,而这次事件只影响到其中的8000多万?
如前所述,域名解析搬运工如1.1.1.1和8.8.8.8,如果成功解析facebook网站的域名,通常会缓存一段时间,以便下一个用户访问facebook网站时,可以立即将结果返回给用户,从而节省了大量时间,并刷新了缓存计时器。
这意味着,如果一个域搬运工让用户解析facebook域名并一直刷新缓存计时器,那么这个缓存永远不会被删除,永远可以直接返回给用户。因此,即使在互联网上无法访问facebook的权威域名服务器,仍然有许多用户可以通过分布在世界各地的域名解析端口的缓存机制访问脸书网站。毕竟,其他脸书服务器是可路由和可到达的!
当然,如果有域名搬运工,超时后缓存的内容会因为没有刷新域名解析而被删除。当域名搬运工试图联系facebook的权威服务器时,出现了问题。
为什么脸书负责改变BGP的工程师没有在第一时间做回滚?
做更改的工程师通常是在做远程VPN操作,但是做路由更改是一个风险极高的操作,因为一旦路由配置错误,工程师就无法再访问正在远程操作的路由器。为了安全起见,为了不与路由器失去联系,工程师在提交更改代码时将使用确认选项,后跟一个分钟数。例如
提交确认2
这段代码的意思是,配置当前修改提交,两分钟后自动回滚到修改前的版本。不到两分钟,工程师发现远程SSH软件与路由器之间的远程SSH连接仍然没有断开,于是认为当前的修改是可以的,然后再次使用commit命令确认当前的修改,这样修改后的配置才真正生效。
相反,如果工程师在输入命令后立即关闭了自己的远程软件SSH,则说明当前的修改已经导致路由器失去了与互联网的联系,路由出现了问题。好在这个效果只会影响2分钟。2分钟后会自动回滚到修改前的版本。工程师仍然可以再次联系路由器,检查他们的配置出了什么问题。
显然,facebook的工程师并没有试图在两分钟内Ping通脸书内部的权威域名服务器。否则,他们不会提交此更改操作。
为了简化操作,工程师可以Ping通公司最关键的服务器,包括域名服务器、域控制器、时间服务器等。,通过在等待确认时使用自动化脚本来确保它们在提交配置版本之前都没有问题。
来源:车小胖谈网络
“张承辉博客” 宕机是什么意思(我脑子宕机了) https://www.zhangchenghui.com/216851