Ojciec wie lepiej...
Posted on Sat 13 February 2021 in Automatyczny dom, Wirtualizacja • 3 min read
...kiedy odciąć pewnego rodzaju, internetową aktywność swych dzieci. Koniec, kropka.
Nadeszła właśnie TA chwila, a że nie zanosi się na szybki powrót do szkoły, zaś po wielu rozmowach i ustaleniach NIC się nie zmienia, więc od PERSWAZJI czas przejść do PREWENCJI.
Pi-hole to oprogramowanie, które jest pośrednikiem pomiędzy serwerem DNS, a naszą, domową siecią. Na podstawie samodzielnie stworzonych białych i czarnych list decyduje czy dać dostęp do danej strony www czy też dostępu odmówić. Tej właściwości, domowy oczywiście, postanowiłem użyć we własnym domu.
Na RaspberryPi postawiłem kontener Pi-hole , robi się to naprawdę w 2 minuty (włącznie z pobraniem obrazu). Na Malince używam HyperiotOS więc mam na niej Dockera. Tworzę plik docker-compose.yml z następującą zawartością:
version: "3" # More info at https://github.com/pi-hole/docker-pi-hole/ and https://docs.pi-hole.net/ services: pihole: container_name: pihole image: pihole/pihole:latest ports: - "53:53/tcp" - "53:53/udp" - "67:67/udp" - "80:80/tcp" - "443:443/tcp" environment: TZ: 'Europe/Warsaw' # WEBPASSWORD: 'set a secure password here or it will be random' # Volumes store your data between container upgrades volumes: - './etc-pihole/:/etc/pihole/' - './etc-dnsmasq.d/:/etc/dnsmasq.d/' # Recommended but not required (DHCP needs NET_ADMIN) # https://github.com/pi-hole/docker-pi-hole#note-on-capabilities cap_add: - NET_ADMIN restart: unless-stopped
Do ustawienia są 2 linijki, ta ze strefą czasową, oraz następna gdzie można ustawić stałe hasło do interfejsu www.
Po zapisaniu pliku opdaliłem komendę:
docker-compose up --detach
Uwaga! Należy sprawdzić czy na tym samym hoście jakiś serwis już nie blokuje portów: 53, 67, 80 i 443.
No i już! Na Malince działa Pi-hole!
Aby to sprawdzić, wystarczy w przeglądarce wejść pod adres http://IP-MALINKI/admin/, gdzie IP-MALINKI to adres IP RaspberryPi na którym zainstalowane jest Pi-hole.
Nie będę opisywał tu szczegołów posługiwania się Pi-hole, wystarczy poczytać dokumentację, ale tak na szybko dodam:
najciekawsze było dla mnie samo blokowanie niepożądanych stron www. Można skorzystać z dziesiątków istniejących blacklist ale jeszcze fajniejsza była próba, której efekt uzyskałem niemal natychmiast.
W interfejsie Pi-hole włazłem w sekcję Blacklist (w menu po lewej):
wpisałem "youtube.com", zaznaczyłem opcję "Add domain as wildcard" i kliknąłem "Add to Blacklist". Spróbowałem wejść na youtube.com i... wszedłem! Kicha! Nie działa!
No, nie. Tak głupi nie jestem. Pewnie, że nie zadziała. Ale dlaczego?
Każdy komputer, ten w domowej sieci, ma przypisany numer IP. Może mieć ustawiony na stałe, może też mieć pobierany automatcznie z serwera DHCP. Wraz z tym numerem ma też, a raczej powinien mieć ustawiony adres serwera DNS. Może nie mieć, ale wtedy wszędzie trzeba wchodzić po numerze IP. Kto to spamięta? (można sobie zrobić plik hosts - ktoś doda)
Co stało gdy wszedłem na stronę youtube.com? Moja przeglądarka wysłała, po cichu, zapytanie do serwera DNS: jaki adres IP ma youtube.com? Serwer DNS jej odpowiedział, że taki a taki i przeglądarka połaczyła się z serwerem youtube.
Skoro Pi-hole jest pośrednikiem pomiędzy serwerem DNS to powinien się pojawić w powyższym opisie, powinien ale go nie ma. Dlaczego? Dlatego, że jeszcze czegoś zabrakło w powyższym opisie.
Przeglądarka zna adres IP serwera DNS ale komunikuje się z nim poprzez bramę na świat jaką w każdym domu jest router. Tak, to małe pudełko które zostawiają instalatorzy Orange, Netii czy innego tzw. providera. Router przesyła dalej zapytanie z przeglądarki, a to oznacza że to właśnie jego trzeba zmusić by każde zapytanie DNS najpierw przesyłał przez pośrednika jakim jest Pi-hole.
Mój router to Mikrotik i żeby przechwytywać każde zapytanie DNS muszę do jego konfiguracji dopisać dwie dyrektywy, w moim przypadku wyglądają tak:
/ip firewall nat add chain=dstnat action=dst-nat to-addresses=192.168.1.3 protocol=udp src-address=!192.168.1.3 dst-address=!192.168.1.3 dst-port=53 in-interface=bridge /ip firewall nat add chain=srcnat action=masquerade protocol=udp src-address=192.168.1.0/24 dst-address=192.168.1.3 dst-port=53
Adres 192.168.1.3 to adres Malinki z Pi-holem.
W skrócie: cokolwiek przyjdzie do routera z sieci wewnętrznej i jest zapytaniem DNS, przekieruj to zapytanie na adres 192.168.1.3, a resztą zajmie się Pi-hole.
Proces jeszcze się nie zakończył, teraz dopiero zaczęła się ciężka harówa - trzeba całość dopieścić tak, żeby technologia pomagała, a nie przeszkadzała. Uczyła, a nie deprawowała.
dePRAWOwać, pasuje mi to słowo, oznacza likwidację naturalnych praw człowieka, a prawa to obowiązki. Człowiek zdeprawowany jest zlewicowany, nieodpowiedzialny i samolubny.
I tym filozoficznym akcentem kończę ten radosny wpis.