Finalmente ho trovato il tempo di configurare Pi-hole, un blackhole DNS (che nome figo) per eliminare gran parte (non tutto) del traffico internet relativo a pubblicità o tracker.

Il fuzionamento è molto semplice, funziona da DNS server (oltre che da DHCP se necessario) e controlla i record richiesti sulla base di varie blacklist. Nel mio caso di default sta usando questa.

Quando una risoluzione DNS fa matching con un record in blacklist viene bloccata.

Setup hardware iniziale

A casa uso un modem FritzBox 7530. Ho trovato un vecchio Raspberry Pi 2 Model B e l’ho collegato tramite USB per occupare meno prese della corrente. Non avevo un cavo di rete, questa è la spegiazione per cui il raspino ha anche un’antenna WiFi nonostante sia attaccato al router 😀

L’installazione di Pi-hole è molto semplice, ma prima di tutto ho dovuto installare il sistema operativo nel raspino. Devo dire che era molto tempo che non ci giocavo e mi aspettavo di dover copiare l’immagine sulla micro sd card tramite dd. Invece, ho potuto usare il comodissimo tool Raspberry Pi Imager.

Come OS ho scelto il seguente non avendo bisogno di un desktop environment.
Una cosa molto comoda, che sicuramente esiste da tanto tempo e che non conoscevo, è la parte di configurazione avanzata. Cliccando sull’ingranaggio in basso a destra, in Raspberry Pi Imager, si può accedere al settaggio di opzioni come username, password, ssh-key e configurazioni di rete (niente più smanettamenti con wpa_supplicant :D).

Una volta installato il sistema operativo sul repo GitHub di Pi-hole c’è il mitico README con vari metodi di installazione. Io sono pigro e ho scelto questo:

Concluso il processo di installazione otterrete un riepilogo come il seguente:

[✓] Pi-hole Enabled
[i] Web Interface password: SuperSecretPass
[i] This can be changed using ‘pihole -a -p’

[i] View the web interface at http://pi.hole/admin or http://192.168.178.78/admin

[i] You may now configure your devices to use the Pi-hole as their DNS server
[i] Pi-hole DNS (IPv4): 192.168.178.78
[i] If you have not done so already, the above IP should be set to static.

Configurazioni sul router

Naturalmente sul FritzBox ho dovuto cambiare alcune cose a livello di DHCP.

Dare sempre lo stesso indirizzo al raspberry con Pi-hole

Fare in modo che il DHCP passi il corretto IP del nuovo DNS sever

Nel mio caso ogni host avrà come DNS server 192.168.178.78.

Ora… questo è a tutti gli effetti uno SPOF ma per casa va bene.

La GUI di Pi-hole

Devo dire che l’interfaccia grafica è molto gradevole e si aggiorna in tempo reale. Riporto alcuni settaggi con cui ho interagito per il mio setup.

Inserimento manuale di un dominio in blacklist

Inserimento manuale di un dominio in whitelist

Aggiunta di adlist

Configurazione upstream DNS server

Alcuni test utili

Naturalmente è un sistema che va seguito. Soprattutto nella ricerca di adlist aggiornate. Non prentende di bloccare tutto, ma di sicuro sfoltisce gran parte delle URL spazzatura. Ho cercato su Google un primo risultato per un test in ambito ad-block ed è uscito fuori questo progetto: https://github.com/d3ward/toolz.

Andando su https://d3ward.github.io/toolz/adblock.html viene svolto un test automatico di cui non certifico la validità, ma con e senza Pi-hole si hanno risultati distinti.

Con Pi-Hole

Senza Pi-Hole (dalla GUI è possibile disabilitare Pi-hole facilmente per un tempo preimpostato)

Ho deciso quindi di aggiungere alla blacklist dei domini una lista riportata direttamente sul progetto https://github.com/d3ward/toolz e ho trovato un mirror su GitHub https://github.com/ookangzheng/dbl-oisd-nl.

Risultato finale

Caricando nelle blacklist https://raw.githubusercontent.com/ookangzheng/dbl-oisd-nl/master/dbl.txt presa da https://github.com/ookangzheng/dbl-oisd-nl#just-domains la percentuale di blocked host è salita.

Il tema è che Pi-hole è uno strumento che va curato per non incappare anche in eventuali falsi positivi o interruzioni di servizio.

Tuttavia con queste liste al momento mi sto trovando bene e sicuramente lo terrò operativo.