Di recente ho riesumato un vecchio Orange Pi One comprato ancora nel lontano 2017 con 512MB di RAM (qui trovate le caratteristiche della dev board) dall’armadio e ho pensato che al posto di lasciargli prendere polevere la potevo usare come server per bloccare i banner pubblicitari mostrati su molti siti web dove possono nascondere insidie e pericoli.

Per far questo la mia scelta è caduta su Pi-Hole, uno dei più famosi e collaudati software, che può essere installato comodamente su una board Orange Pi One.

PiHole si “sostituisce” al vostro server DNS e intercetta tutte le richieste, scegliendo quale approvare e quale no secondo una blacklists che contiene i siti malevoli, trackers e pubblicità:

Predisporre il sistema

Abbiamo il nostro Orange Pi One tra le mani, insieme a una mini-SD da almeno 8-16GB dove installare il sistema operativo. Consiglio fortemente di usare Armbian nella sua ultima release per server, scaricabile gratuitamente da qui; la versione che ho usato è l’Armbian 22.11 Jammy (basata su Ubuntu Jammy ) nella versione CLI (non mi serviva la parte desktop e così allegerisco pure il sistema visto che ho solo 512MB).

Scriviamo l’immagine ISO nella mini-SD e inseriamola nello slot dell’OrangePi. Colleghiamolo alla rete casalinga (Obbligatoriamente con il cavo ethernet), colleghiamo l’alimentazione via USB e attendiamo il boot del sistema. Dal Router ricaviamo l’IP di questa board e ci colleghiamo via Putty (o con qualsiasi altro client SSH) alla console. Al primo login lo user da inserire è root mentre la password è 1234 che dovremmo obbligatoriamente cambiare.

I passi da seguire poi sono i seguenti (li trovate qui nella guida di Armbian):

Nel caso col Router non riusciste a trovare l’IP della vostra board, potete usare il seguente tool: Angry IP Scanner.

Ora impostiamo un IP fisso per il nostro Orange Pi One, fuori dal range del server DHCP, eseguendo prima il backup del file /etc/network/interfaces per poi modificarlo successivamente:

cp /etc/network/interfaces /etc/network/interfaces.backup
nano /etc/network/interfaces

e copiamo questa configurazione Ethernet (adattandola alle vostre esigenze), dove il campo “address” contiene l’indirizzo IP statico che vogliamo assegnare al dispositivo:

# Ethernet adapter 0
auto eth0
allow-hotplug eth0
#no-auto-down eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.1
#dns-nameservers 1.1.1.1 1.0.0.1

Una volta riavviata la board, da utente root date il comando:

curl -sSL https://install.pi-hole.net | bash

e seguite poi le indicazioni a video, fino al termine della procedura. Se il tutto si completa senza errori, aprendo un browser e navigando su 192.168.1.100 (nel mio esempio) dovrebbe darvi il benvenuto il logo verde e rosso, su sfondo nero, di Pi-Hole. Cliccando su link subito sotto o navigando su /admin, si accede all’interfaccia di riepilogo e amministrazione.

Pro memoria, per impostare la password di amministrazione digitare da console il comando:

pihole -a -p securepassword

Configurare la rete per usare Pi-Hole

Come dicevo, PiHole si sostituisce al server DNS di default (generalmente quello del router, che poi fa un semplice forward verso il DNS del provider) per intercettare e bloccare le chiamate verso siti non desiderati (trackers, pubblicità…).

Per farlo funzionare, quindi, ci sono due opzioni alternative e complementari:

  • impostare come server DNS, su tutti i dispositivi nella nostra rete, l’IP del PiHole (es. 192.168.1.2);
  • impostare l’IP del Pi-Hole come server DNS fornito dal DHCP alle richieste dei dispositivi;

    Personalmente suggerisco la seconda, ma qui è difficile darvi istruzioni più precise perché dipendono dal Vs router.

    Per verificare le impostazioni DNS del vostro sistema potete:

    • su Windows, potete aprire un terminale (“cmd“) e digitare ipconfig /all. Tra le varie voci, troverete anche quella relativa ai server DNS attualmente in uso. Qui deve comparire l’IP del PiHole;
    • su GNU/Linux, dipende da cosa usate. Potrebbe essere in /etc/resolv.conf oppure, se avete systemd, lanciare il comando systemd-resolve --status;
    • su Android potete usare una app come DNSChanger;

    Discovering Pi-Hole

    Non appena Pi-Hole entrerà in funzione e la rete sarà correttamente configurata, inizierà a ricevere le richieste DNS provenienti dai dispositivi connessi. Il contatore in prima pagina inizierà a crescere velocemente di numero e, dopo essersi autenticati nell’interfaccia di amministrazione, i dettagli delle chiamate permesse e bloccate ci permetteranno di avere una idea più precisa di cosa accade sulla nostra rete casalinga.

    Per la stragrande maggioranza dei contesti non c’è bisogno di fare altro. Pi-Hole farà il suo “sporco” lavoro, bloccando le pubblicità invasive che trovate a giro sul web in modo pulito e discreto.

    Dall’interfaccia di amministrazione, nel menù di sinistra, ci sono alcune funzioni che potrebbero tornare utili. Ad esempio, impostare alcuni siti web in white (concesso) o blacklist (negato). Magari perché non vogliamo, oppure desideriamo, andare su un sito bloccato. Funzione comoda, ad esempio, per impedire che i figli minorenni vadano su siti pornografici, di gioco online o di scommesse (e qui i vostri figli mi odieranno…).

    C’è la possibilità di creare dei gruppi con permessi diversi, ma questa funzione è possibile solo se il DNS è impostato direttamente su Pi-Hole nei dispositivi (con il DNS forward non funzionerà).

    Si può anche interrompere temporaneamente il blocco dei siti (“liberi tutti“) perché, magari, abbiamo una necessità e sospettiamo che Pi-Hole blocchi la connessione.

    Ovviamente bisogna ricordarsi di aggiornare la lista (“Update Gravity“) dei domini da bloccare ogni tanto. Generalmente lo fa da solo ma è sempre bene verificare, ogni tanto.