Docker Pi-hole filtrowanie niechcianego ruchu w naszej sieci

Opis aplikacji

Pi-hole to serwer DNS, która chroni twoją sieć i urządzenia przed niechcianymi treściami bez instalowania oprogramowania po stronie klienta. To rozwiązanie jest:

  • Łatwe w instalacji (natywnie jako pakiet oprogramowania lub gotowy obraz w formacier Dockera)
  • Wszechstronne: treści są blokowane w lokalizacjach innych niż przeglądarka, takich jak pełne reklam aplikacje mobilne i inteligentne telewizory
  • Responsywne: bezproblemowo przyspiesza codzienne przeglądanie dzięki buforowaniu zapytań DNS
  • Lekkie: działa płynnie przy minimalnych wymaganiach sprzętowych i programowych
  • Solidne: interfejs wiersza poleceń, którego jakość zapewnia interoperacyjność
  • Wnikliwe: piękny responsywny pulpit nawigacyjny interfejsu sieciowego do przeglądania i kontrolowania Pi-hole
  • Modułowe: opcjonalnie może działać jako serwer DHCP, zapewniając automatyczną ochronę wszystkich urządzeń
  • Skalowalne: zdolne do obsługi setek milionów zapytań po zainstalowaniu na sprzęcie klasy serwerowej
  • Nowoczesne: blokuje reklamy zarówno przez IPv4, jak i IPv6
  • Bezpłatnie: oprogramowanie typu open source, które pomaga upewnić się, że jesteś jedyną osobą kontrolującą swoją prywatność

Przydatne adresy związane z aplikacją

Przygotowanie systemu do uruchomienia aplikacji w kontenerze Docker

Proces przygotowania czystego systemu Debian 11 do uruchamiania aplikacji dockerowych został opisany na stronie https://itadmin.vblog.ovh/docker-instalacja-i-konfiguracja-na-systemie-debian-11/

Uruchomienie aplikacji

Utworzenie kontenera aplikacji przez docker cli

mkdir -p /home/dockeruser/docker/appdata/pihole/pihole
mkdir -p /home/dockeruser/docker/appdata/pihole/dnsmasq
docker run -d \
--name=pihole \
--network=npm_proxy --ip 192.168.89.100 -e PUID=1000 -e PGID=1000 \
-e TZ=Europe/Warsaw \
-e WEBPASSWORD=hasladmina \
-e SERVERIP=192.168.10.30 \
-v /home/dockeruser/docker/appdata/pihole/pihole:/etc/pihole \
-v /home/dockeruser/docker/appdata/pihole/dnsmasq:/etc/dnsmasq.d \
-p 8100:80 \
-p 53:53/tcp \
-p 53:53/udp \
--label=com.centurylinklabs.watchtower.enable=true \
--restart=unless-stopped \
pihole/pihole

Opis parametrów docker cli

  • 192.168.89.100 to  prywatny adres ip tej aplikacji kontenerowej. Wybrane przeze mnie aplikacje kontenerowe mają stały określony adres ip z prywatnej adresacji 192.168.89.0/24
  • PUID / PGID odpowiada uid/gid (1000/10000) użytkownika dockeruser na moim serwerze z działającym Dockerem
  • 192.168.10.30 to adres ip serwera z zainstalowanym Dockerem
  • /home/dockeruser/docker/appdata/pihole/(…) to ścieżka na moim serwerze z działającym Dockerem do katalogu przechowującego indywidualne ustawienia, konfiguracje, dane konkretnej aplikacji kontenerowej nawet po jej wyłączeniu czy też usunięciu
  • –label=com.centurylinklabs.watchtower.enable=true oznacza, że obraz kontenera będzie automatycznie aktualizowany przez aplikację Dockerową Watchtower
  • WEBPASSWORD=hasladmina, hasło dostępu do aplikacji przez www

Zarządzanie uruchomionym kontenerem aplikacji

Więcej informacji na temat zarządzania aplikacjami w kontenerze można znaleźć na stronach

Użytkowanie i konfiguracja aplikacji

  • dostęp do interfejsu www aplikacji Pi-hole http://192.168.10.30:8100/admin/login.php
  • aby wykorzystać w naszej sieci zalety filtrowania ruchu przez Pi-hole należy ustawić na wszystkich urządzeniach albo na samym routerze adres DNS: 192.168.10.30 (to adres mojego serwera z z uruchomionym Dockerem a w nim aplikacji w kontenerze Pi-hole)
  • można blokować dodatkowe adresy ręcznie (Query Log -> Blacklist przy wybranej domenie) lub automatycznie przy wykorzystaniu wielu dostępnych w Internecie list zabronionych, niebezpiecznych domen, np.
    https://gist.githubusercontent.com/anudeepND/adac7982307fec6ee23605e281a57f1a/raw/5b8582b906a9497624c3f3187a49ebc23a9cf2fb/Test.txt
    https://raw.githubusercontent.com/chadmayfield/my-pihole-blocklists/master/lists/pi_blocklist_porn_top1m.list
    https://v.firebog.net/hosts/Prigent-Adult.txt
    https://zerodot1.gitlab.io/CoinBlockerLists/list.txt
    które dodajemy w menu Adlist.  Po każdorazowym dodaniu nowej listy należy pamiętać o aktualizacji online przez link do gravity list online
  • w menu Settings – DNS wskazujemy, które nadrzędne serwery DNS będą odpytywane przez klientów Pi-hole przy przekazywaniu zapytań dalej