Czyli hash zamiast średnika i problem gotowy.
Jak coś nie działa, to zacznij od sprawdzenia DNSów
To kolejna historia z gatunku „opowieści z informatycznej krypty”. Niejaki Hugo, w późnych latach 90-tych przekonał się, jak bolesna może być literówka. Nie pierwszy i nie ostatni. Okaże się, że prawidłowym rozwinięciem skrótu DNS jest raczej Devil’s Naming Service.
W tamtym czasie komercyjny Internet był optymistycznym spojrzeniem w przyszłość, a przerwy w dostawie oznaczały raczej brak prądu niż Sieci. Hugo był wówczas starszym administratorem w brytyjskim oddziale jednego z globalnych dostawców usług internetowych.
Brak automatyzacji sprzyja pomyłkom
Firma nie zainwestowała zbyt wiele w narzędzia i automatyzację, a wiele rozwiązań administratorzy wymyślali na bieżąco. Nie było żadnego portalu internetowego dla klientów i musieli wysłać e-mailem zgłoszenie na takie rzeczy, jak zmiany DNS, które zostały następnie wprowadzane przez dział obsługi klienta.
Szczęśliwsze i prostsze czasy. Aż do dnia, w którym Hugo przyszedł do pracy i nie poznał tego miejsca.
DNS był wyłączony dla każdego klienta, tak dla domeny podstawowej jak i dodatkowej. Brązowa materia naprawdę uderzyła w obracający się wentylator.
Vi ale nie jak „victory”
Hugo przystąpił do działania, ściągając logi serwera DNS i szybko znajdując błędy. Na początku nie miały żadnego sensu, dopiero potem zaczęło stopniowo narastać zrozumienie przyczyny problemu.
Niewiele pieniędzy włożonych w automatyzację właśnie się „zwróciło”. W tej ofierze skąpstwa na ołtarzu korporacyjnych korzyści znalazły się narzędzia do edycji DNS. Użyto kilku pomocniczych skryptów, które w zasadzie wywoływały Vi w celu edycji plików stref.
Wyjaśnijmy niektórym z naszych Czytelników, ze Vi jest czcigodnym (czytaj: starym) edytorem tekstu, uwielbianym przez administratorów Uniksa. Inni wolą Emacsa ale nie ciągnijmy dalej tego tematu.
Jeśli chodzi o skrypty, istniało kilka prostych szablonów pomagających w tworzeniu rekordu SOA ale nie dochodziło do faktycznej weryfikacji strefy. Nie było też historii zmian. Była tylko data i właściciel pliku.
Okazało się, że Hugo dokonał ostatniej edycji dwa tygodnie temu
Prawdopodobnie pracowałem nad skryptem perl lub bash i tego samego dnia zredagowałem plik strefy dla uk.bignet.net, który znajdował się w rekordzie SOA dla każdej hostowanej domeny.
Sprawdź oferty pracy na TeamQuest
W plikach strefy Bind znakiem komentarza jest średnik ale Hugo przypadkowo użył hasha, stosowanego właśnie w skryptach powłoki. Gdy Bind załadował plik strefy, zdecydował, że nie jest on już autorytatywny i zmiany pozostały niezauważone. Wszystko było w porządku, dopóki nie upłynęły domyślne dwa tygodnie życia. Ponieważ każda inna domena zależała od tej, jej wygaśnięcie oznaczało, że Bind przestał obsługiwać wszystkie inne domeny.
Wynik: chaos.
Poprawka była banalna. Hugo zmienił komentarz na średnik, pośpiesznie wypchnął aktualizację i zrestartował wszystkie serwery nazw.
Posłowie
Zadaniem Hugo stało się następnie, co nie było zaskakujące, stworzenie walidatora plików strefy DNS, aby zapobiec dalszym „wypadkom”. Zespół obsługi klienta nienawidził tego z powodów, których nie mogłem zrozumieć. Ale gdy uruchomiłem narzędzie sprawdzające we wszystkich hostowanych przez nas domenach to stwierdziłem, że około 15 procent z nich zawierało podstawowe błędy…