Mne spíše mírně "děsí", že pád jedné služby (DNS Facebooku) v podstatě DDoSoval další, zdánlivě nesouvísející, tj. DNS operátorů. Jestli jsem pochopil z reakce ISP správně, tak DNS prostě neunesly počet nezodpovězených dotazů. které se opakovaly a opakovaly. Je smutným faktem, že prakticky na každé stránce je nějaký objekt, který patří pod Facebook. Dobře nám tak.
nejednalo se o pád jedné služby, ale odstranění všech IP adres facebook z internetu (aspoň v západním světě, v Číně prý něco fungovalo). Jeho jeho IP adresách kromě toho běžěly i DNS servery.
V případě prostředí, které jsem viděl, byl problém následující, využívali bind jako reverzní DNS server. Jakmile skončila cache na záznamy z facebooku, resolver se zkoušel dotazovat autorativních NS, ty ale nebyly na síti dostupné, tak vrátil neplatnou odpověď (nelze podepsat přes DNSSEC a nelze ani cachovat) klientovi. Klientovi to nestačilo a začal posílat nové a nové dotazy. Bind pro každý takový dotaz se znovu a znovu pokoušel ptát.
Výsledkem bylo velice vysoké zatížení bind serverů. Smazání BGP mělo za následek, že se přestal provoz routovat na přímé linky a skončilo vše v trunku na zahraniční upstream, to vedlo k 100 % vytížení upstream linek. Samotná infrastrukturu se začala postupně rozpadat kvůli zatížení zahraničních linek a začala být jedna služba za druhou nedostupná, po deseti minutách již nebylo jasné, co bylo původní příčinou a propálilo se spousty času na řešení důsledků. Já byl k takovému systému zavolán až po 30 minutách, astronomický nárůst cache-miss na bindech a snapshot síťového provozu vedl k podezření na facebook, nebylo ale v tu chvíli jasné, jestli problém je lokální, globální, dočasný, trvalý, facebook nereagoval vůbec na jakoukoliv snahu o komunikaci.
Negativní DNS odpovědi (doména neexistuje) se kešují jen velmi krátkou dobu. Takže se klient ptá na neexistující doménu znovu mnohem dřív, než by se ptal na existující. A to i v případě Facebooku, kde je i platnost pozitivní odpovědi relativně nízká. Trochu tomu přispělo i to, že to lidé zkoušeli stále dokola, mnozí určitě zkoušeli i nějaké triky s vyprázdněním DNS cache. A další problém byl v tom, že DNS servery vůbec neodpovídaly. Za běžného provozu se DNS resolver zeptá, brzy dostane odpověď, tu si zapamatuje a je to vyřízeno. Tentokrát se ale zeptal, 10 sekund marně čekal na odpověď, pak poslal zpět (a krátce nakešoval) „neexistuje“. Nebo-li cimrmanovsky těch dotazů bylo víc, za to ale jejich vyřízení trvalo podstatně déle…
Hmm, tak aktualizace? Jako bych to živě viděl:
16:50: "Tak se odhlásím a dodělám to zítra."
16:51: Systém Windows instaluje aktualizace. 0 % dokončeno. Prosím nevypínejte počítač.
22:51: Všechno pro Vás připravujeme. -- "No konečně :-D"
Každopádně nejvíc vtipné je, že jim prý nejely přístupové karty. Kritická vstupní infrastruktura na IP síti je zjevně jednoduché, ale také dost nespolehlivé řešení.
Vypadá to jako vážné riziko a jsem zvědav, jestli se podaří vymyslet nějaká opatření, jak tomu v budoucnu předejít. Já jsem jen BFU, takže pro mne z toho vyplývá nespoléhat na služby v Internetu, zejména když běží na vzdálených serverech. Založit na takové službě například přístupový systém do objektu pak považuji za lehkomyslnost, která zaslouží trest v podobě nedostupnosti. I kdyby k tomu došlo jen jednou za deset let.
Běžně to je odolné proti nedostupnosti služby v internetu, tady je komplikované, že ta služba způsobila vygenerování obrovského množstsví provozu, což se nečekalo.
řešení jsou (třeba deduplikovat dotazy na NS nebo mít rate limit pro jednotlivé NS), nikoho zatím asi nenapadlo, že nedostupnost nějaké velké služby povede k tomuhle (ono se to stalo v tomhle rozsahu poprvé).
Výhodu mají ti malí, kteří už udělali spousty chyb při konfiguraci, poučili se z nich a postupně si systém vyladili a mají ho pod kontrolou. U těch velkých (aspoň v našem prostředí) se tyhle výpadkové scénáře musí nadefinovat dopředu, protože pak jsou součástí akceptačních testů a je to poměrně neflexibilní.
Stejně tak se dobře (latence se zvýšila, ale nic extra) zachoval třeba Cloudflare nebo Google a jejich veřejné DNS resolvery, buď mají tak obrovský provoz, že jim facebook dělal relativně málo nebo byli schopní nasadit více HW zdrojů daleko rychleji.