Awaria Facebooka vs protokoły BGP i DNS
2021-10-16 00:15
Serwisy Facebooka doświadczyły poważnej awarii © pixabay.com
Przeczytaj także: Trojan-wandal podszywa się pod znane aplikacje na Androida
Zawsze chodzi o DNS…
System nazw domen (DNS) to pojedynczy punkt awarii systemów internetowych. DNS mapuje nazwy, takie jak facebook.com, na adresy IP, umożliwiając użytkownikom łatwe odwoływanie się do witryn (według nazwy).
W efekcie DNS zapewnia powiązanie nazw z adresami IP – jak książka adresowa. Gdy serwery DNS witryny nie działają, podobne wyszukiwanie nie może się odbyć, a użytkownicy nie będą mogli uzyskać dostępu do witryny. Utrzymanie sprawności, działania i bezpieczeństwa serwerów DNS jest więc kluczowym elementem niezawodności działania strony internetowej.
…chyba, że chodzi o BGP
Pod pojęciem BGP kryje się inna technologia, która jest tak samo ważna jak DNS. Jest to protokół routingu (jeden z wielu) o nazwie Border Gateway Protocol (BGP). BGP to protokół, który umożliwia Systemom Autonomicznym (zbiór dużych sieci kontrolowanych przez jeden podmiot) przekazywanie informacji o kontrolowanych przez siebie sieciach, dzięki czemu wszystkie Systemy Autonomiczne posiadają spójną wiedzę, o tym jak dotrzeć do poszczególnych podsieci IP. BGP nie realizuje funkcjonalności routingu bezpośrednio, ale jest protokołem, który udostępnia informacje między routerami. Po otrzymaniu tych informacji routery mogą podejmować decyzje o tym, dokąd należy przesłać konkretne dane.
fot. pixabay.com
Serwisy Facebooka doświadczyły poważnej awarii
Dlaczego protokół BGP jest ważny?
Wpisując dowolny adres strony np. „facebook.com” w przeglądarce internetowej powodujemy, że komputer wykona wyszukiwanie DNS, a lokalny serwer DNS, z którego korzysta nasz komputer, wróci (mamy nadzieję) z odpowiednim adresem IP.
Wtedy nasz komputer musi być w stanie kierować ruch na ten adres IP. Należy zauważyć, że decyzje dotyczące routingu są podejmowane na zasadzie krok-po-kroku. Każdy router po drodze, przez który przechodzą dane, zdecyduje, jaki powinien być następny krok trasy do docelowego adresu IP. W tym celu sprawdza tablicę routingu, żeby określić następne miejsce do przesłania danych.
Jeśli router uczestniczy w protokole BGP, jego tablica routingu jest konstruowana na podstawie aktualizacji otrzymanych od innych routerów obsługujących BGP.
Obejmuje to informacje o tym, do jakich sieci można się dostać, za pomocą poszczególnych routerów. Będzie również zawierać informacje o tym, jak blisko jest celu. W tym przypadku bliskość nie oznacza liczby routerów, ale liczbę Systemów Autonomicznych przez które będą musiały być przesłane dane. Istnieje złożony algorytm używany do określenia, która z możliwych tras jest najlepsza. „Najlepsza” może również określać inne elementy, jak zasady dotyczące ruchu wychodzącego czy umowy tranzytowe między dostawcami usług internetowych. Jeśli okaże się, że tabela routingu pokazuje dwa routery, które mogą przesłać dane, aby dotrzeć do określonego adresu IP, wybierze jeden z dwóch na podstawie wskazanych wyżej czynników.
Podobne decyzje dotyczące routingu są podejmowane przez każdy router, który przesyła dane, przekazując je do innego routera lub określając bezpośrednie połączenie z siecią danego adresu IP dostarczając dane do miejsca docelowego. Ten sam proces zostanie wykonany w odwrotnej kolejności, aby skierować ruch z powrotem przez inną serię routerów, a następnie do klienta.
Taki schemat ma wiele zalet. Dopóki dla ruchu dostępny jest router docelowy – a większość firm korzystających z Internetu ma wiele takich routerów – nasze dane powinny (ostatecznie) tam trafić. Ruch pomiędzy daną witryną internetową a klientem jest dzielony na wiele pakietów, zatem mogą być one przesyłane różnymi trasami.
Jest to cecha pozwalająca na unikanie problemów z dostępnością witryn, gdyby jakiś pośredni router uległ awarii. Wtedy pakiety składające się na nasze żądanie lub odpowiedź, mogą zostać przekierowane do działających routerów. Dobrze to działa, jeśli tablice routingu są spójne i zawierają poprawne informacje. W końcu Internet został pierwotnie zaprojektowany do omijania ataków nuklearnych.
Obrazowe przedstawienie problemu
Wyobraźmy sobie, że chcemy dostać się do domu przyjaciela, ale nigdy tam nie byliśmy. Sprawdzamy adres – to jak część DNS. Teraz trzeba wymyślić, jak się tam dostać, więc udajemy się do najbliższego skrzyżowania i pytamy uczestników ruchu, w którą stronę powinniśmy się kierować. Uczestnicy ruchu podpowiadają, żeby skręcić w lewo. Podążamy tą drogą, aż przemieścimy się do kolejnego skrzyżowania i pytamy o drogę ponownie. Dostajemy informację, aby kierować się w prawo.
Kontynuujemy proces, aż dotrzemy do celu. Możliwe, że dostaniemy po drodze instrukcję: „standardowo rekomendujemy trasę przez most, ale jest wyłączony z ruchu, więc należy kierować się w lewo i ponownie zapytać o drogę na następnym skrzyżowaniu”. Możemy także dostać instrukcję: „trasa po skręcie w lewo jest bezpośrednia, ale skierowanie się w prawo i przejazd przez autostradę będzie szybszy”.
Wybrana trasa nie zawsze będzie najprostszą, ani nawet najszybszą drogą do celu, ale pozwoli uniknąć blokad dróg, zawalonych mostów i korków na trasie. Jeśli zapytania o drogę będą kierowane do uczestników ruchu, którzy mają dobre informacje, dotrzemy do celu. Środkiem, za pomocą którego przekazywane są te dobre informacje, jest właśnie BGP. Jeśli BGP podaje nieprawidłowe informacje lub w ogóle nie ma informacji o tym, jak dotrzeć do obranego celu, mogą się zdarzyć utrudnienia.
Czy BGP jest bezawaryjny?
BGP jest solidny i dobrze się skaluje, co jest kluczową funkcją przy próbach połączenia miliardów hostów. Nie jest jednak całkowicie bezawaryjny.
Wyznaczona trasa może pomijać drogi, które powinny się na trasie znaleźć. Oznacza to, że powiązana sieć po prostu przestaje być w Internecie widoczna (znika z Internetu). Siłą rzeczy nie wiadomo, jak się tam dostać, a ruch przeznaczony do tej sieci zostanie odrzucony.
Czasami robi się to celowo – nazywa się to blackholing – i zwykle ma na celu zablokowanie połączeń do lub z danej sieci. Dzieje się tak w wielu przypadkach. Na przykład celem zablokowania ruchu DDoS z wrogiej sieci lub nawet usunięcia całego kraju z Internetu w czasie kryzysu cywilnego. W rezultacie ruch sieciowy jest po prostu usuwany, często bez powiadomienia zwrotnego do nadawcy. Sieć zablokowana przez blackholing nie będzie otrzymywać ruchu i zostanie skutecznie odcięta od (cyfrowego) świata.
Trasa może być również nieprawidłowo wskazana. Błędna konfiguracja ze strony Systemu Autonomicznego może sprawiać wrażenie, że kieruje ruch do sieci, których nie kontroluje. Gdy jest to działanie celowe, nazywa się je BGP hijacking i chociaż istnieją przed tym zabezpieczenia, powoduje to przekierowanie dużej ilości ruchu do bardzo różnych miejsc np. celem przechwytywania i badania ruchu w ramach działań szpiegowskich.
Takie przypadki są częste. Na przykład operator sieci lub zautomatyzowany system dokonują błędnej konfiguracji. Niezbędna dla osiągnięcia celu ruchu trasa albo znika całkowicie, albo tworzy się pętla routingu (gdzie ruch jest przekazywany między dwoma routerami w nieskończoność) lub też ruch jest wysyłany do routera, nieznającego trasy, w wyniku czego ruch jest gubiony.
Nauczka?
W oparciu o to, co zostało powiedziane do tej pory, możliwe, że awaria Facebooka mogła, przynajmniej częściowo, być spowodowana błędną konfiguracją BGP.
Żeby było jasne: na tym etapie są to spekulacje i będziemy musieli poczekać, aż Facebook zdecyduje się powiedzieć, co tak naprawdę się działo i dlaczego. Niemniej, miniona awaria jest okazją, aby poświęcić nieco więcej uwagi tej mniej znanej, ale niezwykle ważnej części ruchu sieciowego. Pozwala ona przesyłać nie tylko wszystkie zabawne filmiki z kotami, ale także niezwykle informacje biznesowe do naszych przeglądarek w całości i bez przeszkód.
Ireneusz Wiśniewski, dyrektor zarządzający
Przeczytaj także
Skomentuj artykuł Opcja dostępna dla zalogowanych użytkowników - ZALOGUJ SIĘ / ZAREJESTRUJ SIĘ
Komentarze (0)