O fakcie uruchomienia przeze mnie polskiej instancji WriteFreely pisałem tutaj. W oddzielnym wpisie opisałem, w formie poradnika, jak każdy może uruchomić swoją własną instancję wykorzystując do tego serwer z zainstalowanym oprogramowaniem Yunohost. WriteFreely.pl pierwotnie postawiłem na darmowym VPS’ie od Oracle, a jako dostawcę usługi (serwer) DNS wybrałem Cloudflare. Było to rozwiązanie i tanie i proste, jednakże nie do końca dbające o prywatność zarówno użytkowników, którzy są twórcami na WriteFreely.pl jak i tych, którzy są jedynie czytelnikami. Wszystko to za sprawą tego, iż zarówno Oracle jak i Cloudflare to korporacje, a my świadomi ludzie z Outernetu wiemy, iż takim firmom nie można ufać i najlepiej ich unikać, oczywiście o ile jest taka możliwość i istnieje sensowna alternatywa. Jeszcze do niedawna Cloudflare nie wydawało się takie złe, bo było postrzegane jako coś w rodzaju strażnika w sieci. Jednakże dość gwałtownie okazało się, iż przepuszczana przez ich infrastrukturę jest bardzo duża część Internetu, co przestało się mi i wielu osobom podobać ze względu na centralizację, a można by rzec choćby monopol.
Alternatywa dla VPS’a od Oracle przyszła do mnie sama, bo zaraz po uruchomieniu WriteFreely.pl napisali do mnie ludzie z Fundacji Technologie dla Ludzi z zapytaniem czy nie chciałbym przenieść instancji do ich infrastruktury. Nie musiałem się zastanawiać dwa razy, bo była to wspaniała oferta, za którą z tego miejsca chciałbym podziękować Piotrowi Sikorze oraz Sebastianowi a.k.a. m0bi13. Darmowy VPS w infrastrukturze zlokalizowanej w Polsce i stworzonej, aby pomagać właśnie takim projektom pro publico bono, biorę! Migracja nastąpiła w dniu 30. października 2023 i przebiegła bez większych problemów, o czym poinformowałem na blogu z ogłoszeniami parafialnymi dotyczącymi instancji WriteFreely.pl. Naturalnym następnym krokiem było pozbycie się pośrednika Cloudflare i wymienienie go na coś analogicznego i przy tym niebudzącego obaw dotyczących prywatności i centralizacji. O tym właśnie będzie ten wpis.
Serwer DNS
Na wstępie wytłumaczmy sobie w telegraficznym skrócie czym jest serwer DNS. Podstawową funkcją tej usługi jest przetłumaczenie adresu domenowego, to jest ten zjadliwy dla człowieka, czyli np. writefreely.pl, na adres IP serwera, czyli np. 195.117.15.126, serwującego zawartość, która ma zostać wyświetlona po wpisaniu tego adresu w pasek adresowy przeglądarki.
Nie jestem sieciowcem, więc o ile się mylę to proszę poprawcie mnie, ale według mnie krok po kroku wygląda to tak:
- Użytkownik wpisuje adres https://writefreely.pl w przeglądarce.
- Przeglądarka widzi, iż jest to domena krajowa .pl, więc zwraca się do Krajowego Rejestru Domen (w tym przypadku NASK) z prośbą o udzielenie informacji na temat tej domeny.
- NASK informuje, iż domena jest zarejestrowana u dostawcy Abc Hosting Ltd. (cba.pl) i odsyła do następujących serwerów DNS – alina.ns.cloudflare.com i lloyd.ns.cloudflare.com.
- Przeglądarka komunikuje się z pierwszym z podanych serwerów (drugi jest w ramach redundancji, jakby pierwszy nie działał) i pyta – Drogi serwerze DNS, daj mi adres IP serwera obsługującego adres https://writefreely.pl.
- W odpowiedzi przeglądarka otrzymuje adres 195.117.15.126.
- Przeglądarka komunikuje się z serwerem działającym pod adresem 195.117.15.126 i uzyskuje od niego kod strony, która ma zostać wyświetlona.
- Przeglądarka przetwarza kod w formę czytelną dla człowieka i wyświetla ją.
To wszystko dzieje się w ułamku sekundy, a potocznie nazywamy to czekaniem aż strona internetowa się załaduje. W tym wpisie naszym planem jest zmiana serwerów DNS od Cloudflare, o których mowa w punkcie 3 powyższej listy.
FreeDNS::42
Odpowiedniego serwera DNS nie trzeba wcale daleko szukać, bo Twój dostawca domeny na pewno oferuje taką funkcję w ramach wykupionej domeny. Opcje konfiguracji parametrów DNS domeny znajdują się najpewniej w jej ustawieniach w panelu klienta na stronie dostawcy. W zależności kto nim jest ustawienia te będą mniej lub bardziej zaawansowane i tym samym będą pozwalały na mniej lub więcej. W przeważającej ilości przypadków będzie to wystarczające, ale o ile jesteś bardziej wymagającym użytkownikiem to może się to dla Ciebie okazać zbyt ograniczone. W takim przypadku na ratunek przychodzą usługi dedykowane dla takich zapaleńców.
FreeDNS::42 to darmowy serwer DNS, czyli kolejny fajny projekt pro publico bono. Może nie jest to usługa posiadająca najpiękniejszy interfejs użytkownika jaki widziałeś/aś w życiu, ale na pewno nie można odmówić jej funkcjonalności, a przecież to właśnie na to w tym przypadku powinniśmy patrzeć. A zatem, znaleźliśmy rozwiązanie darmowe i w pełni funkcjonalne, a co najważniejsze nie budzące wątpliwości, które mieliśmy wobec Cloudflare. W takim wypadku zaczynajmy migrację!
Odczytajmy nastawy w Cloudflare
Na początek ustalmy jakie rekordy mamy w Cloudflare. W tym celu po zalogowaniu się przechodzimy do zakładki DNS i wybieramy Records. Wyświetlona zostanie lista wszystkich rekordów. W przypadku WriteFreely potrzebne są raczej tylko rekordy typu A i CAA, ale pamiętajmy, iż reszta z nich jest ustawiona tak jak wymagał od nas tego Yunohost, więc zostawmy już to tak jak jest. Zatem mamy do przeniesienia następujące rekordy:
Type | Name | Content |
A | * | 195.117.15.126 |
A | writefreely.pl | 195.117.15.126 |
CAA | writefreely.pl | 0 issue „letsencrypt.org” |
MX | writefreely.pl | writefreely.pl |
TXT | _dmarc | „v=DMARC1; p=none” |
TXT | mail._domainkey | „v=DKIM1; h=sha256; k=rsa; p=(…)” |
TXT | writefreely.pl | „v=spf1 a mx -all” |
Konfiguracja strefy w FreeDNS::42
Mając już te dane możemy przejść na stronę FreeDNS::42 i założyć konto. Po zalogowaniu przechodzimy do Utwórz strefę (dostępne w menu na górze). Podajemy dowolną nazwę strefy, jako typ strefy wybieramy Podstawowe i potwierdzamy przyciskiem Utwórz.
W ten sposób tworzymy całkowicie pustą strefę, którą należy teraz odpowiednio skonfigurować. W tym celu wybieramy na górze Modyfikuj strefę, na liście odnajdujemy tą świeżo utworzoną i wybieramy ją. Aby uzyskać identyczną konfigurację do tej z Cloudflare musimy wypełnić to jak na poniższych zrzutach ekranu.
To wszystko potwierdzamy przyciskiem Utwórz konfigurację strefy znajdującym się na samym dole. Po wszystkim powinniśmy zobaczyć następujące potwierdzenie:
Bieżąca strefa: writefreely.pl Dodawanie rekordu MX writefreely.pl.... OK Dodawanie rekordu A *... OK Dodawanie rekordu A @... OK Dodaję rekord CAA @.... OK Dodaję rekord TXT @.... OK Dodaję rekord TXT mail._domainkey.... OK Dodaję rekord TXT _dmarc.... OK Nowy numer seryjny: (...) Twoja strefa pomyślnie przeszła nasze wewnętrzne testy konfiguracji. Powinna być aktywna w ciągu kwadransa.Otrzymasz list informujący Cię o jej aktywowaniu. Oto wygenerowana konfiguracja: $TTL 86400 ; Domyślny TTL writefreely.pl. IN SOA fns1.42.pl. freedns-admin+213320.42.pl ( 1699963109 ; numer seryjny 86400 ; Częstość odświeżania (refresh) 10800 ; Częstość powtórek (retry) 604800 ; Czas wygaśnięcia (expire) 10800 ; Negatywne buforowanie TTL ) $ORIGIN writefreely.pl. IN NS fns1.42.pl. IN NS fns2.42.pl. @ IN MX 10 writefreely.pl. * IN A 195.117.15.126 @ IN A 195.117.15.126 @ IN CAA 0 issue "letsencrypt.org" @ IN TXT "v=spf1 a mx -all" mail._domainkey IN TXT "v=DKIM1; h=sha256; k=rsa; p=(...)" _dmarc IN TXT "v=DMARC1; p=none"Zmiana DNS u dostawcy domeny
Ostatni krok jaki pozostało nam wykonać to zalogować się do panelu klienta u naszego dostawcy domeny, wejść do ustawień tej konkretnej domeny i zmienić dla niej serwery DNS na następujące:
- fns1.42.pl
- fns2.42.pl
Takie ustawienie sprawi, iż domena poprzez NASK będzie odsyłała do FreeDNS::42, które dalej będzie już kierowało ruch zgodnie z ustawionymi rekordami.
Koniec?
To nie do końca jest koniec tematu. Z DNSami jest niestety tak, iż zmiany w nich wprowadzane nie są natychmiastowe. Lubię to zjawisko nazywać propagacją, choć już niejednokrotnie byłem poprawiany przez mądrzejszych ode mnie, iż nie jest to odpowiednie określenie. Mimo to dalej wydaje mi się, iż jest to najtrafniejsze słowo jakiego mogę użyćw tej sytuacji. Chodzi o to, iż sieć serwerów nazw to naprawdę obszerna pajęczyna komputerów, które nieustannie wymieniają się informacjami i nie posiadają centralnego nadzorcy, który pilnowałby, aby wszystkie informacje na wszystkich serwerach były jednakowe i aktualne. Dowolna zmiana w konfiguracji DNS jest tak naprawdę rozgłaszana i rozprzestrzenia się coraz bardziej od serwera do serwera. To właśnie nazywam propagacją. Do tego serwery nie aktualizują swoich danych przy każdym zapytaniu do nich skierowanym, bo byłaby to wydajnościowa tragedia. W zamian za to korzystają ze swojej pamięci podręcznej (cache), tj. o ile tylko mają o danej domenie jakieś informacje, które są względnie aktualne to po prostu je serwują bez sprawdzania czy aby na pewno nie były zmienione sekundy temu. Dążę do tego, iż zmiany, których dokonaliśmy w poprzednich akapitach mogą się propagować choćby do 24 godzin i jest to normalne. Postęp tego procesu można monitorować takimi narzędziami jak DNS Checker. Na poniższym zrzucie ekranu można zaobserwować idealne potwierdzenie tego co napisałem wyżej, czyli to, iż część testowych NSów odsyła jeszcze do starych DNSów (Cloudflare), a pozostałe serwują już aktualne. Z uwagi na to istotne jest, aby jeszcze przez jakiś czas pozostawić starą konfigurację w Cloudflare, dzięki czemu unikniemy tego, iż dla pewnych osób strona mogłaby być niedostępna.
W przypadku zmiany serwera DNS propagacja nie jest tak wielkim problemem, bo po prostu wystarczy przez pewien czas pozostawić jednakową konfigurację na dwóch usługach pośredniczących. Większy problem jest, gdy przesiadamy się z jednego serwera na drugi posiadający inny adres IP. Wtedy zachowanie ciągłości działania przenoszonej usługi jest niemalże niemożliwe, bo jest ona przenoszona na drugi serwer, a niektóre serwery DNS jeszcze przez pewien czas będą odsyłać do starego, na którym już tej usługi nie ma. Nie jest to przypadek omawiany w tym wpisie, ale myślę, iż warto o tym wspomnieć, żeby wyczerpać temat.