Menu Zamknij

Pi-hole – czyli po co mi prywatny DNS?

Pi-hole

W poprzednim wpisie o modernizacji domowej sieci komputerowej wspomniałem w kilku zdaniach o własnym serwerze DNS w postaci Pi-hole zainstalowanym na RaspberryPi. Dziś chciałbym ten temat rozwinąć i opowiedzieć trochę więcej o możliwych zastosowaniach.

Co to jest DNS?

Domain Name System (DNS, pol. system nazw domen) – to hierarchiczny rozproszony system nazw sieciowych, który odpowiada na zapytania o nazwy domen.

https://pl.wikipedia.org/wiki/Domain_Name_System

W Wikipedii opis jest oczywiście dużo dłuższy i bardziej szczegółowy, ale na nasze potrzeby wystarczy, że przyjmiemy iż DNS tłumaczy przyjazne nam nazwy domenowe na adresy IP – czyli jeśli wpisujemy w przeglądarce np. onet.pl, to komputer wysyła zapytanie do DNS, a ten odpowiada, że komputer przypisany do tej nazwy jest dostępny pod adresem: 75.2.92.173. To jest dopiero forma zrozumiała dla komputerów w komunikacji sieciowej. Działa to zarówno w skali micro jak i macro – czyli zarówno w małych sieciach domowych (nawet z 1 komputerem), jak i w globalnej sieci Internet.

Generalnie człowiek jest istotą dość leniwą z natury i lubi sobie ułatwiać życie – szybko okazało się, że dużo łatwiej i wygodniej jest zapamiętać przyjazną nazwę niż ciąg cyfr. Plus takiego rozwiązania jest też taki, że taka nazwa może być niezmienna (a także bardzo cenna), a adres IP przypisany do serwera może się bez problemu zmienić – nie wpłynie to na dostępność usługi (dopóki działa propagowanie tej informacji pomiędzy serwerami DNS).

Po co mi prywatny DNS?

Powodów do posiadania własnego DNSa jest kilka.

1. Bezpieczeństwo sieci domowej

W naszej rodzinie mamy 3 dzieci, w wieku aktualnie 10, 8 i 4 lata. Urządzeń podłączonych do internetu jest co najmniej kilkanaście: komputery, telefony, tablet, TV, konsola itp. W tak różnorodnym cyfrowym ekosystemie nie ma sposobu na jednolite zarządzanie treścią i włączenie ochrony rodzicielskiej. Różne systemy, różne platformy – ochrona jest realizowana różnie i nie zawsze skutecznie.

Zastosowanie własnego DNSa, przez który przepuszczamy CAŁY ruch sieciowy z domowej sieci LAN pozwala na globalne blokowanie niechcianych treści. Mam tu na myśli głownie pornografię, jak też inne potencjalnie niebezpieczne witryny.

Ochrona na poziomie DNS możliwa jest poprzez dodanie do czarnej listy konkretnych domen. Trudno to jednak robić ręcznie i samemu – dlatego są dostępne w internecie już przygotowane block-listy – spisy domen zawierające setki tysięcy pozycji. Wystarczy wczytać taką listę w Pi-hole i po problemie. Ja mam dodane 3 takie listy – w sumie blokuję ponad 600 000 adresów.

Statystyki blokowanych domen

Taka ochrona jest o tyle skuteczna, że próba wejścia z dowolnego urządzenia w sieci domowej na blokowany adres kończy się informacją o niedostępności strony. Log z takiego wydarzenia oczywiście się odkłada i jest dostępny dla administratora.

2. Blokada niechcianych reklam

Dostępne w internecie block-listy są zwykle odpowiednio profilowane – jedne blokują treści NSFW (not safe for work), a inne serwery reklamowe. Blokowanie reklam ma swoje plusy i minusy – w przypadku jednak dzieci chroni je przed nawet przypadkowym kliknięciem w reklamę – po prostu takie treści w ogóle się nie załadują – ani w przeglądarce www, ani w aplikacjach mobilnych.

Taka blokada ruchu dotyczy też wszelkich usług zbierających statystyki. Dzięki temu unikamy zbędnego profilowania i przetwarzania naszych danych przez gigantów big-data.

Jeśli jednak z jakiegoś powodu chcemy widzieć reklamy lub odkładać informacje statystyczne, możemy ręcznie odblokować ruch na konkretne adresy – per urządzenie lub dla całej zdefiniowanej grupy urządzeń.

Onet.pl bez reklam

Efekt blokady jest dość spektakularny – nagle czołowe portale mają mnóstwo dziur w treści i jakoś szybciej się ładują 🙂

Ktoś może powiedzieć – to samo można zrobić adblokiem. Tak to prawda, ale nie do końca. Adbloki działają w przeglądarce www i tylko tam, gdzie możemy je zainstalować. O ile na komputerze to nie problem, to już na telefonie nie każda przeglądarka na to pozwoli, a na TV czy w aplikacjach mobilnych możemy o tym po prostu zapomnieć.

Prawda jest też taka, że nie wszystkie reklamy poprzez DNS zablokujemy – dlatego idealny jest tandem DNS + adblock (przez adblock rozumiem tu dowolne rozszerzenie blokujące reklamy, a nie konkretnie Adblock).

3. Ograniczenie zbędnego ruchu sieciowego

Kolejną zaletą blokowania ruchu jest fakt, że wycięcie go już na etapie DNSa powoduje, że niechciane zasoby w ogóle nie są pobierane z sieci – w efekcie oszczędzamy transfer, a reszta zasobów wczytuje się dzięki temu szybciej. Ok, na szybkim domowym łączu może to nie być zauważalne, ale jednak zawsze lepiej jest nie ładować śmieci. Nazwijmy to takim eko-działaniem, zapewne można to przeliczyć na jakieś ilości zaoszczędzonego CO2…

4. Własne domeny w sieci lokalnej

Na ostatnim miejscu – choć z punktu widzenia programisty bardzo istotnym – jest fakt, że własny serwer DNS może służyć do definiowania własnych lokalnych domen. Oczywiście możemy to też zrobić w pliku /etc/hosts, ale to rozwiązanie działa w obrębie pojedynczego urządzenia, a wpis w DNS daje dostęp do takiej domeny w całej sieci lokalnej. W efekcie – jeśli wystawiamy na komputerze roboczym lub lokalnym serwerze jakąś stronę lub usługę – dodanie lokalnej domeny w DNS powoduje, że jest ona dostępna na każdym urządzeniu w naszej sieci.

Ja na przykład dodałem sobie domenę pi.local wskazującą na adres IP mojej malinki i dzięki temu nie muszę pamiętać tego adresu IP gdy łączę się po SSH do tej maszyny.

Dlaczego akurat Pi-hole?

Prawdę mówiąc trochę przez przypadek. Gdy szukałem na YT różnych filmików odnośnie szaf rackowych i organizacji własnej sieci domowej, trafiłem na kilka poświęconych właśnie Pi-hole. A że akurat miałem na stanie Raspberry Pi, które mogłem wykorzystać, to decyzja była szybka.

Zapewne jest więcej takich rozwiązań na własnego DNSa, ale Pi-hole ma swoje zalety:

  • jest dostępny na różne urządzenia/dystrybucje linuxa
  • można użyć instalacji Dockerowej, jak też gotowego obrazu
  • jest bardzo prosty w instalacji i obsłudze
  • posiada czytelny interfejs webowy dostępny z dowolnej przeglądarki w sieci lokalnej
  • pozwala na zbieranie logów i ich analizę
  • udostępnia statystyki ruchu
  • pozwala na łatwe zarządzanie widzianymi urządzeniami/interfejsami sieciowymi
  • pozwala na tworzenie grup i przypisywanie do nich poszczególnych klientów
  • pozwala na tworzenie white i black list, obsługuje importowanie list z internetu
  • pozwala na łatwe tworzenie własnych wpisów DNS (domena, CNAME)

Konfiguracja sieciowa

Nie będę opisywać samej instalacji oprogramowania, bo może być ona różna w zależności gdzie i jak je instalujemy. Opis jest dostępny na stronie https://github.com/pi-hole/pi-hole/#one-step-automated-install

Podstawowe założenia konfiguracyjne w domowej sieci są następujące:

  1. Urządzenie z Pi-hole MUSI mieć statyczny lokalny IP
  2. W ustawieniach LAN routera ustawiamy DNS Override na adres naszego DNSa
  3. Urządzenia klienckie w sieci ustawiamy albo na DHCP, albo na statyczny IP (tu może być też potrzebne ręczne zdefiniowanie adresu DNS – zależy od systemu i urządzenia)

Jeśli nasz router nie ma opcji DNS Override, wtedy koniecznie trzeba ręcznie ustawić jako jedyny DNS adres urządzenia z Pi-hole na każdym kliencie.

W ten sposób cały ruch lokalny sieciowy przepuścimy przez naszego DNSa.

Czy to jest 100% pewne rozwiązanie?

Jak zwykle odpowiedź brzmi: to zależy.

W przypadku małego dziecka lub laika korzystającego z domowego WiFi lub po kablu sieciowym – raczej tak.

Jednak nie ma rozwiązań idealnych – jeśli dziecko ma telefon z kartą SIM i wyłączy WiFi – zaczyna korzystać z internetu za pomocą operatora GSM – czyli poza naszą kontrolą. Siłą rzeczy blokada na lokalnym DNS tu nie zadziała. No ale mówimy tu jednak o ochronie rodzicielskiej małych dzieci – żeby przypadkiem nie kliknęły w coś niebezpiecznego. Jeśli dziecko jest większe i zdecydowane dokopać się do takich treści, to taka blokada niewiele pomoże – użyje albo innego łącza albo urządzenia u kolegi. To już jednak kwestia bardziej zaufania i edukacji, a nie sztucznych zakazów.

Jeszcze jedną pułapką jest połączenie po VPN – w tym momencie korzystamy z zewnętrznego serwera i jego DNSa – tu też nasza lokalna ochrona nie zadziała. Warto o tym pamiętać pracując z domu i na firmowym VPNie…

Ochrona rodzicielska to znacznie szerszy temat – lokalny DNS z blokadą niebezpiecznych treści to tylko jeden klocek w calej układance.

W kolejnych wpisach postaram się nieco bardziej przybliżyć takie usługi jak Google Family, Microsoft Family i Apple Family. Różne rozwiązania, różne platformy i różne możliwości, ale użyte z głową pozwolą na znacznie większą kontrolę nad treściami jakie dziecko konsumuje – poczynając od ograniczeń wiekowych, poprzez limity czasowe, dostępne saldo na zakupy i finalnie kontrolę instalowanych aplikacji.

Ale o tym następnym razem…

4 komentarze

  1. SpeX

    Wiadomo, iż w tej chwili Pi-Hole najlepiej, bo to po prostu najpopularniejsze rozwiązanie nawet jak nie stawia się go na żadnym urządzeniu Pi. Oczywiście, przy korzystaniu z bardziej zaawansowanych routerów, można się zastanawiać czy nie da się tego robić na poziomie routera. Ale jednak opcja zewnętrzna jest chyba lepsza. Bo zgodnie z zasadą zawsze powinniśmy korzystać z przynajmniej dwóch serwerów DNS – np. główny na jako VM/docker na jakiś Proxmoc, a zapasowy na tych Pi. Bo w przeciwnym wypadku, jak nam padnie nasze Pi to ruch pójdzie przez np. 1.1.1.1 i co wtedy z naszego filtrowania?

  2. SpeX

    Pi-Hole z własnymi domenami to ciekawy temat, tylko pytanie jak wystawić takim domeną SLL, który nie będzie self-signal, a przez to krytykowany przez każdą przeglądarkę?

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.