Facebook | Sociální sítě | Výpadek

Anatomie kybernetické apokalypsy krok za krokem. Co se v pondělí stalo ve Facebooku?

  • Včera odpoledne Facebook postihl rozsáhlý výpadek
  • Tentokrát jej experti pečlivě zmapovali
  • Projdeme si ho krok za krokem a vysvětlíme jednotlivé etapy

V pondělí podvečer našeho času se na několik hodin odmlčel Facebook, Instagram, WhatsApp a další služby Zuckerbergova internetového impéria. Společně s ním ale přestala fungovat i hromada dalších webů a problémy měly i některé části infrastruktury mobilních operátorů.

Nebyl to první výpadek Facebooku – podobné řeší i několikrát ročně a občas postihnou i další klíčové hráče včetně Googlu, patří ale k těm nejlépe zdokumentovaným. Pojďme si tedy projít časovou osu, co se zhruba dělo a proč se hroutily i některé další weby, které s firmou Facebook nemají mnoho společného.

V Kalifornii je ráno a síťaři jdou do práce

Je pondělí, 4. října, a v Kalifornii pomalu svítá. San Francisko zahaluje ranní mlha a pár desítek kilometrů jižněji v ústředí Facebooku začíná obvyklá směna síťařů. Dnes mají v plánu provést několik rutinních rekonfigurací systému.

7c5bd50a-ea0a-41b6-a7f5-5673e1a48275
Starší velín Facebooku na jižním okraji sanfranciské zátoky během přistávání

Co je přesně tím systémem? No, k vaší domácí LAN či několikavrstevnaté síti v podniku to má daleko, aby byl totiž Facebook dostupný co nejrychleji ze všech možných koutů světa, používá ohromné množství obsahových a vyrovnávacích serverů prakticky na všech obydlených kontinentech.

Internet je obří síť sítí a jednou z těchto sítí je i Facebook.

Před šestou večerní našeho času se začíná Facebook hroutit

V Evropě tou dobou máme o devět hodin více, pomalu se smráká a míříme z kanceláří a továren domů. Něco se ale děje, náhle se nám nedaří přispět do dalšího flamewaru na Facebooku, přestaly chodit zprávy z WhatsAppu a nemůžeme osrdíčkovat ani fotky čerstvé upečených buchet na instagramovém profilu naší kolegyně.

46501c3f-7e6f-4398-89a9-35c6868d047c
Výpadek Facebooku podle služby Downdetector

Na Twitteru se začíná šířit lavina zpráv s hashtagy #facebookdown a že se něco děje, potvrzuje i pohled na Downdetector.

Že by to byly obvyklé komplikace v DNS?

Čím to může být? Nejčastějším důvodem podobných výpadků jsou problémy v systému DNS, který se na internetu stará o překlad doménového jména na cílovou IP adresu počítače, jenž nám konečně servíruje data.

Často tedy stačí našemu zařízení sdělit, aby se na IP adresy ptalo jiné autority. Ve výchozím stavu je to váš internetový operátor, stejně tak to ale mohou být i služby jako Google Public DNS a 1.1.1.1 od Cloudflaru.

Facebook neodpovídá na dotazy ani skrze odpovídač Google Public DNS:

Tentokrát je to ale jiné, DNS odpovídače Googlu totiž vrací chybu SERVFAIL a jmenné servery Facebooku, které konečně rozhodují, která vnitřní doména patří kterému počítači v jeho obří síti, jsou zcela mrtvé.

Chybový kód DNS SERVFAIL vedle domény facebook.com vrací i další jeho služby. A to jak při dotazu skrze odpovídače Googlu, tak Cloudflaru:

➜  ~ dig @1.1.1.1 facebook.com
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 31322
;facebook.com.			IN	A
➜  ~ dig @1.1.1.1 whatsapp.com
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 31322
;whatsapp.com.			IN	A
➜  ~ dig @8.8.8.8 facebook.com
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 31322
;facebook.com.			IN	A
➜  ~ dig @8.8.8.8 whatsapp.com
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 31322
;whatsapp.com.			IN	A

Facebook na prodej? Kybernetický útok?

Zdá se tedy, že Facebook postihl masivní výpadek právě DNS, což zmate dokonce i některé špatně naprogramované weby doménových registrátorů, podle kterých je adresa facebook.com náhle volně k dispozici.

0f6ea54f-e4b8-4e49-b28c-91bc279e8401
Facebook.com na prodej? Ne, to pravdu ne...

Podobné zprávy jen podpoří spekulace, že Facebook čelí rozsáhlému kybernetickému útoku, který nemá v posledních letech obdoby. Přestávají totiž fungovat také interní systémy firmy pro zaměstnance a podle Sheery Frenkelové z The New York Times se dokonce někteří z nich nedokážou dostat do budovy, protože zkolaboval systém čipových karet.

Některým zaměstnancům přestaly fungovat čipové karty:

Může za to Cloudflare?

Tou dobou se už Facebooku věnuje většina síťových a bezpečnostních expertů a také velké infrastrukturální internetové společnosti jako třeba Cloudflare.

Today at 15:51 UTC, we opened an internal incident entitled „Facebook DNS lookup returning SERVFAIL,“ because we were worried that something was wrong with our DNS resolver 1.1.1.1.

Cloudflare

Jak už jsme si řekli, Cloudfare provozuje jeden z největších veřejných DNS odpovídačů 1.1.1.1 a jeho detekční mechanizmy odhalí výpadek v 17:51 našeho času. Cloudflare je zprvu přesvědčený, že je problém na jeho straně a začne případ okamžitě řešit, záhy však zjistí, že jeho systémy fungují na jedničku.

Problém musí být jinde.

Podivné chování BGP

Cloudflare a další brzy odhalí, že nedošlo k výpadku dílčích serverů Facebooku, ale že do temnoty upadla kritická část infrastruktury firmy. Technický ředitel Cloudflaru John Graham-Cumming na Twitteru píše: „Zhruba pět minut před výpadkem DNS jsme viděli ze strany AS Facebooku ohromné množství zápisu v protokolu BGP.“

Na Redditu se objevuje několik (už smazaných) příspěvků, podle kterých inženýři Facebooku udělali během dopolední rutinní konfigurace sítě fatální chybu, doslova odpojili část vlastní sítě od ostatního internetu, a tak nakonec museli vše opravit přímo v datových centrech a nikoliv na dálku z pohodlí gauče. Právě proto nejspíše oprava zabrala takový čas.

8a733439-ca45-497a-8998-5c636fa813a6
Zhruba v 17:45 našeho času (časová osa v UTC) začal Facebook skrze BGP provádět změny, které vedly k jeho zhroucení. Další vlna komunikace skrze BGP okolo osmé večerní našeho času už nejspíše představuje postupnou opravu celého systému. 

Co je to autonomní systém

Počkat, počkat. Co je to BGP, AS a ASN? Síťaři už mají jasno, pro nás ostatní to vysvětlíme. Internet je ve své podstatě síť sítí. Dejme tomu, že byste svůj domácí LAN propojili s LAN souseda, pak do party přidali ostatní obyvatele domu, pak ten dům propojili s celou ulicí, pak ulice s ulicemi, města s městy, kontinenty s kontenty a máte internet.

Internet, který tvoří vaše maličké sítě AS – Autonomní Systémy.

Jelikož dnes globální internetová vesnice čítá miliardy duší, autonomním systémem ve skutečnosti není vaše koncová domácí síť LAN, ale její nadřazený systém.

08f5f831-50e2-4ce1-99de-a27c90a22183
Internet je síť sítí a těmto dílčím sítím říkáme AS – autonomní systém. AS o sobě vědí a mohou spolu komunikovat

Může to být síť vašeho poskytovatele internetového připojení, síť univerzity, může to být rozsáhlá státní síť pokročilého e-governmentu, anebo to může být síť (či její část) Facebooku.

Bez autonomních systémů by byl internet nepřehledným bludištěm

K čemu je to dobré? Díky těmto autonomním systémům se nám internet rázem zjednodušil. Už jich nejsou miliardy, ale stovky tisíc, a identifikujeme je pomocí 16bitového, respektive 32bitového čísla ASN. Třeba AS13335 (ASN pro Cloudflare).

Pokud máme velké internetové sítě operátorů i poskytovatelů obsahu rozdělené do podobných a relativně homogenních bloků, můžeme mezi nimi mnohem efektivněji posílat pakety dat.

ef9da6ea-b678-40c6-8e49-bc50a8b8e32a
Autonomní systémy zjednodušují orientaci na internetu

Kdybychom neměli autonomní systémy a vy byste chtěli z dovolené na Jadranu navštívit stránky Živě.cz, počítač by se sice pomocí něčeho podobného jako DNS mohl dozvědět, s jakou IP adresou na internetu se má vlastně spojit, aby dostal HTML kód, obrázky a videa, jenže pak by jak zběsilá čivava hopsal mezi jednotlivými uzly internetu tak dlouho, dokud by ji nenašel.

Bylo by to podobné tomu, jako by vám někdo v hospodě po třetím pivu odmontoval cedulky „páni“ a „dámy“ z toalet a vy byste museli zkoušet dveře za dveřmi, než byste se trefili.

Autonomní systémy se domluví pomocí protokolu BGP

Díky tomu, že máme autonomní systémy, to může celé fungovat mnohem jednodušeji a to právě pomocí jejich komunikačního protokolu BGP – Border Gateway Protocol.

Autonomní systémy pomocí tohoto protokolu křičí do okolního světa: „Čau lidi, já jsem autonomní systém Arnošt, spravuji tyto rozsahy koncových IP adres a jsem propojený s těmito dalšími AS!“

641de82b-8049-423e-9383-198e60b884e1
Díky BGP a AS může paket efektivně cestovat tou nejlepší cestou. V tomto případě zelenou, anebo o něco (topologicky) delší červenou cestou skrze více uzlů AS 

Když se všechny nadsítě skrze BGP představí, mohou jednotlivé prvky internetové infrastruktury mnohem efektivněji naplánovat let paketu z kamenité pláže kdesi pod Splitem až do českého datacentra, kde sídlí i naše Živě.cz, aniž by nebohý paket cestoval třeba přes Mongolsko.

Facebook se přestal hlásit

Přesně tímto způsobem se včera podvečer Cloudlfare a další hráči dozvěděli, že je něco špatné, Facebook totiž skrze BGP přestal hulákat do okolí, že vůbec existuje.

Klíčová část Facebooku zmizela z routovacích tabulek protokolu BGP:

route-views>show ip bgp 185.89.218.0/23
% Network not in table
route-views>

route-views>show ip bgp 129.134.30.0/23
% Network not in table
route-views>

Facebook se přitom podle Cloudflaru neodmlčel celý, některé jeho IP adresy byly stále směrovatelné, nicméně výpadek se týkal především IP adres, na kterých běží jeho DNS servery. 

Díky tomu nefungovaly překlady napříč subdoménami včetně Instagramu a dalších, které sice velkou měrou používají služby Amazonu, nicméně pro klíčové operace opět systémy (nefungujícího) Facebooku.

Jiné IP adresy Facebooku byly směrovatelné, bez DNS to ale bylo k ničemu:

route-views>show ip bgp 129.134.30.0   
BGP routing table entry for 129.134.0.0/17, version 1025798334
Paths: (24 available, best #14, table default)
  Not advertised to any peer
  Refresh Epoch 2
  3303 6453 32934
    217.192.89.50 from 217.192.89.50 (138.187.128.158)
      Origin IGP, localpref 100, valid, external
      Community: 3303:1004 3303:1006 3303:3075 6453:3000 6453:3400 6453:3402
      path 7FE1408ED9C8 RPKI State not found
      rx pathid: 0, tx pathid: 0
  Refresh Epoch 1
route-views>

Někde to fungovalo alespoň trošku

Kvůli těmto lapáliím se jeho služby postupně odmlčely, anebo fungovaly jen částečně, protože i když byly jeho hlavní servery fakticky nedostupné, ještě nějaký čas mohly odpovídat alespoň nejrůznější statické cache a vyrovnávací stroje v infrastruktuře CDN.

Nový lajk či zprávu jste sice neodeslali, druhá strana ale v některých případech zobrazila alespoň smysluplnější chybové hlášení o výpadku, protože byla součástí jiného a nepostiženého autonomního systému.

Weby padají neustále, Facebook je jen velký

Včerejší problémy nebyly první ani poslední – Facebook se čas od času a z rozličných důvodů zhroutí i několikrát ročně. Jen je prostě příliš velký, a tak si toho všimne celá globální vesnice. A může být i hůře.

Možná si vzpomínáte, když před pár lety principiálně podobné komplikace zažil v srdci Evropy i Google. A když vypadne právě Google, sněhová koule problémů se nabalí mnohem více a společně s ním se odporoučí i tisíce dalších webů, které od něj stahují třeba klíčové javascriptové knihovny.

8a51e022-1146-4ef7-b567-4b843d92b8ae
Když vypadne Facebook, sekundárně s to projeví na celém internetu. Všimněte si velmi podobného zubu i u mnoha dalších služeb (Downdetector)

V případě Facebooku tak nefungovala třeba jeho hojně rozšířená technologie Facebook Login pro přihlašování na weby třetí strany skrze identitu Facebooku. Jiné internetové společnosti se zase musely vypořádat s odvozenými problémy, zvýšením trafiku, nechtěnými DDoS a tím vším, co se prostě děje pokaždé, když spadne Facebook a my to musíme někde ověřit. A hlavně to někam napsat!

Vítězem včerejšího dne je proto nakonec Twitter, že to všechno ustál. Dokážu si totiž představit, že mu večer poskočila návštěvnost o pár slušných procent. A pár procent v podání Twitteru je sousto, které by položilo i kdejaký velký web.

Diskuze (37) Další článek: Jak sledovat změny na webu. Takhle si naklikáte vlastního hlídacího psa

Témata článku: , , , , , , , , , , , , , , , , , , , , , , , ,