Guida Come creare un Pi-Hole, bypassare pubblicità e tracker con Raspberry

Stefano Novelli

Fondatore
Amministratore
19 Novembre 2007
7,113
821
8,179
3,236
Ultima modifica:
Oggi siamo lieti di parlarvi di Pi-Hole (https://pi-hole.net/), un software che possiamo installare su qualunque piattaforma a base GNU/Linux, da installare nella rete di casa e in grado di bloccare script traccianti e pubblicità, senza l'uso di plugin su browser e garantendo anche un certo anonimato basilare.

I vantaggi nell'avere un Pi-Hole casalingo stanno nel controllo della risoluzione dei domini e nella possibilità di bloccare le pubblicità non solo su un'ampia gamma di dispositivi (computer, smartphone, smartTV e quant'altro) ma anche su applicazioni che non siano browser (giochi, video etc...).

Pi-hole.jpg

[TITOLO]Che cos'è Pi-Hole[/TITOLO]
Pi-Hole è un insieme di software che si può installare all'interno di qualunque computer e/o dispositivo, scritto per i sistemi operativi GNU/Linux e spesso installato all'interno del Raspberry Pi.

L'uso del Raspberry Pi permette a chiunque di avere Pi-Hole in casa senza spendere cifre astronomiche. Inoltre è molto piccolo, si può nascondere dietro il proprio router di casa, consuma pochissimo (al massimo 1€ al mese di corrente) e si può utilizzare anche come DHCP Server (di cui parleremo più avanti).

Pi-Hole è un progetto che mira quindi a bloccare le pubblicità, spesso invadenti, della rete. Come sappiamo inoltre, molti aggregatori pubblicitari fanno ampio uso del tracking (attraverso i famosi cookie di terzi o di terze parti) e possono esporre la nostra privacy, specie se il portale (ma anche un'app) eroga la pubblicità senza fornire adeguato consenso (in base alle ultime normative su Privacy e Cookie).

[TITOLO]Come funziona Pi-Hole[/TITOLO]
Pi-Hole è per prima cosa un DNS server: il DNS si occupa di risolvere una richiesta a un dominio (ad es: inforge.net) nel relativo indirizzo IP (ad es: 1.2.3.4).

Si definisce quindi un DNS sinkhole, ovvero un DNS che restituisce risultati vuoti o falsi quando un dispositivo (computer, tablet, smartphone etc...) cerca di instaurare una connessione a un dominio presente in una blacklist, una lista nera di domini che sappiamo essere i responsabili dell'erogazione pubblicitaria.

Le blacklist vengono scaricate e aggiornate costantemente: non dobbiamo così preoccuparci di inserire manualmente i domini; potremo comunque manipolare quali consentire e quali bloccare tramite l'interfaccia web di Pi-Hole.

Questo sistema permettte di evitare l'uso degli Adblock: quest'ultimi, oltre a non essere installabili su qualunque dispositivo, caricano inutilmente la macchina su cui girano. Difatti spesso tendono a funzionare attraverso clientscript nella pagina web, cercando nomi di file, domini o dimensioni delle div, operazioni che si rendono inutili in un sistema ove il Pi-Hole blocca sul nascere tali richieste.

[TITOLO]Come si crea un Pi-Hole[/TITOLO]
La procedura della creazione di un Pi-Hole è molto ben documentata sul sito ufficiale, tuttavia se dovessero esserci problemi con la lingua inglese è possibile seguire questa guida, sperando che risolva anche dei dubbi legati non solo all'installazione ma anche all'uso.

[SOTTOTITOLO]Ingredienti di un Pi-Hole[/SOTTOTITOLO]
Per cucinare un gustoso Pi-Hole noi abbiamo preferito il Raspberry Pi 4 (attualmente l'ultima versione). Sono necessari:
  • Raspberry Pi 4: va bene anche una versione minore come Pi 3, 2 e Zero - richiede connettività Ethernet, sconsigliata Wi-Fi.
  • Alimentatore USB-C: necessario per alimentare il Raspberry Pi 4, da almeno 5V e 3A. Un amperaggio minore potrebbe rendere instabile il Raspberry Pi.
  • Cavo Ethernet: almeno CAT6 e CAT 5E* per evitare colli di bottiglia in rete. Sconsigliati cavi di rete non siglati*.
  • Micro SD: da almeno 8GB. Consigliata velocità SDHC.
  • (Opzionale) Case Raspberry Pi 4: si consiglia l'uso di un case con ventola per non avere una scheda elettronica "nuda".
  • (Opzionale) Tastiera e Cavo HDMI-microHDMI: qualora abbiate difficoltà a collegarvi in SSH. In questa guida, comunque, seguiremo la procedura da SSH che non richiede mouse, tastiera e monitor.
In alternativa:
  • Raspberry Pi 4 Kit: se avete da tempo intenzione di acquistare un Raspberry Pi 4 (o se non avete familiarità con il vostro router) consigliamo un kit che comprenda i vari adattatori, SD e alimentatore. Bisognerà sempre procurarsi un cavo Ethernet di qualità.
* Controlliamo sul cavo che sia stampato CAT6 o CAT5E. Se non è scritto nulla, probabilmente è un cavo 5 o inferiore.

Step 1

Installare Raspbian


In questa fase installeremo Raspbian, il sistema operativo basato su Debian per Raspberry, all'interno del Raspberry.
  1. Andiamo sulla pagina di download ufficiale di Raspbian e scarichiamo l'immagine Raspbian Buster Lite. Non fa differenza se Torrent o Direct. Preferiremo la versione Lite in quanto non avremo bisogno dell'interfaccia grafica, è più leggera (e quindi più stabile).
  2. Estraiamo il file .zip scaricato, dovremo usare il file .img al suo interno.
  3. Scarichiamo balenaEtcher e flashiamo la microSD; per farlo, selezioniamo il file .img di Raspbian, la chiavetta e clicchiamo su Flash!
balenaEtcher.jpg

Step 2

Abilitiamo SSH


Grazie al protocollo SSH è possibile collegarsi al Raspberry direttamente dalla rete.

Per poter abilitare SSH su Raspbian inseriamo dobbiamo creare un file ssh all'interno della partizione /boot, in questo modo:
  1. Inseriamo (o reinseriamo) la microSD nel computer
  2. Apriamo la partizione /boot
  3. Al suo interno creiamo un file chiamato ssh senza contenuto (con Crea file o un blocco note)
  4. Estriamo la microSD e inseriamola nel Raspberry
  5. Connettiamo il Raspberry, prima al nostro Router e poi all'alimentazione, quindi attendiamo un paio di minuti per li first boot
Step 3

Impostare IP Statico del Raspberry


Con molta probabilità il vostro Router assegnerà al Raspberry il primo IP disponibile. Un router casalingo, infatti, ha abilitato il server DHCP: questo significa che assegna automaticamente un IP locale nella rete.

Il problema è che, se dovesse cadere ad es. la corrente, il router potrebbe decide di cambiare l'IP del Raspberry, costringendoci ogni volta a riconfigurare il DNS nel router o nei vari dispositivi.

Possiamo impostare un IP Statico direttamente nel router (Metodo #1) oppure, dal Raspberry, impostarlo modificando i parametri di connessione (Metodo #2).

[SOTTOTITOLO3]Metodo #1: impostare un IP statico da Router[/SOTTOTITOLO3]
Questo è il metodo più semplice se si conosce il proprio Router e/o la propria rete. La modifica si effettua solitamente dalla tabella IP dei dispositivi connessi, quindi se ne modifica direttamente da lì l'IP.

Purtroppo non tutti i router permettono di fare ciò: consigliamo di documentarsi sul manuale tecnico del proprio Router e verificare che sia presente tale funzione.

Di seguito annotiamo come solitamente si otteniene l'accesso al pannello del proprio Router, da cui è possibile effettuare l'operazione.

Su Windows
  1. Aprire il prompt dei comandi e digitare:
    ipconfig
  2. Annotarsi l'indirizzo IP del Gateway (solitamente è 192.168.0.1 oppure 192.168.1.1 oppure 192.168.1.254).
  3. Da browser aprire l'indirizzo IP con protocollo http (ad es. se l'indirizzo è 192.168.0.1 allora bisognerà navigare su http://192.168.0.1)
Su macOS
  1. Aprire il terminale e lanciare il comando netstat -nr | grep default:
    > netstat -nr | grep default default 192.168.188.1 UGSc en0
  2. Copiare l'indirizzo del Gateway (nell'esempio è 192.168.188.1)
  3. Da browser aprire l'indirizzo IP con protocollo http (ad es. se l'indirizzo è 192.168.0.1 allora bisognerà navigare su http://192.168.0.1)
Su GNU/Linux
  1. Aprire il terminale e lanciare il comando ip route:
    > ip route default via 192.168.188.1 dev eth0 proto dhcp src 192.168.188.240 metric 202 192.168.188.0/24 dev eth0 proto dhcp scope link src 192.168.188.240 metric 202
  2. Copiare l'indirizzo del Gateway (nell'esempio è 192.168.188.1)
  3. Da browser aprire l'indirizzo IP con protocollo http (ad es. se l'indirizzo è 192.168.0.1 allora bisognerà navigare su http://192.168.0.1)
Come dicevamo, ogni Router gestisce a modo suo gli IP. Solitamente questa voce è presente sotto Rete o LAN. Verifica sul manuale del tuo Router come effettuare questa operazione.

Per convenizione, imposteremo il seguente indirizzo IP: 192.168.188.250

Importante:
le prime tre sequenze devono essere le stesse del gateway.
Ecco come dovrebbe essere:
Gateway: 192.168.188.1
IP: 192.168.188.250
oppure
Gateway: 192.168.1.1
IP: 192.168.1.250
e così via.

Importante (2): nella lista IP non troverete (come da screen) la voce "pihole" ma "raspberrypi". Una volta collegati al Raspberry potremo modificare l'hostname del nostro Pi-Hole come preferiamo.

Nel caso del mio Fritz!Box 7590, l'operazione è sotto la voce Rete domestica -> Rete, quindi si modifica l'IP come si preferisce.


mod-ip-statico.jpg

static-ip-fritz.jpg

Una volta impostato l'IP, riavviare il Raspberry.

[SOTTOTITOLO2]Metodo #2: impostare un IP statico da Raspberry[/SOTTOTITOLO2]
Questa pratica è indicata per chi ha destrezza con GNU/Linux e non può/vuole modificare l'IP da Router.

Per fare ciò è necessario interfacciarsi con la linea di comando del Raspberry: in ogni caso, la procedura qui descritta può risultare leggermente ostica se non si conosce il mondo GNU/Linux.

Se si conosce l'IP del Raspberry
Se siamo riusciti ad entrare nel Router ma non ci è permesso modificare gli IP possiamo comunque collegarci ad esso tramite SSH.
  1. Apriamo il Terminale (su macOS/Linux) o Powershell (su Windows) e lanciamo:
    > ssh [email protected]
    dove 192.168.188.250 sarà sostituito con l'IP del Raspberry.
  2. Quando richiesto inserire la password: raspberry
  3. Modificare il file dhcpcd.conf lanciando il comando:
    > sudo nano /etc/dhcpcd.conf
  4. Togliere i # per decommentare le voci di configurazioine statica e compilarli con i dati in nostro possesso (ricordiamoci di modificare l'IP del Raspberry e del Gateway con quelli in nostro possesso)
  5. Schermata_2020-03-31_alle_23_50_41.jpg
  6. Chiudiamo il programma con la combinazione CTRL+X, tasto Y e INVIO.
  7. Riavviamo il Raspberry e verifichiamo se dal nostro PC riusciamo a comunicarci:
    > ping 192.168.188.250 [*]PING 192.168.188.250 (192.168.188.250) 56(84) bytes of data. 64 bytes from 192.168.188.250: icmp_seq=1 ttl=64 time=0.955 ms 64 bytes from 192.168.188.250: icmp_seq=2 ttl=64 time=0.304 ms
    dove 192.168.188.250 sarà sostituito con il nuovo indirizzo IP.
Se NON si conosce l'IP del Raspberry
In questo caso consigliamo di procurarsi tastiera e cavo monitor, quindi eseguire i passaggi precedentemente indicati a partire dal punto 2.

In alternativa

Se siamo fortunati possiamo provare a connetterci direttamente al nome del Raspberry con il comando ssh pi@raspberrypi:
> ssh pi@raspberrypi

Step 4

Installare Pi-Hole


Ci siamo! Ora non ci resta che avviare l'installazione di Pi-Hole, connettendoci ad SSH con il comando:
> ssh pi@IPRASPBERRY
e lanciando lo script auto-installante:
> curl -sSL [URL]https://install.pi-hole.net[/URL] | bash
Qualora ci fossero problemi è possibile seguire metodi alternativi di installazione.

Seguirà quindi l'installazione del programma, attendiamo fino a che non viene mostrato il Wizard (screen successiva).

pi-hole-installer.jpg

Step 5

Prima configurazione del Pi-Hole


È il momento di configurare il Pi-Hole. Si tenga presente che alcune voci potranno cambiare nel tempo, se avete dubbi non esitate a chiedere aiuto :)
  1. Il Wizard si presenterà in questo modo. Bisognerà confermare diverse voci e fare brevi configurazioni, che vi segnaleremo. Clicchiamo OK
  2. pih-inst1_png__immagine_PNG__564 × 327_pixel_.jpg
  3. Qualora fossero presenti più interfacce Ethernet, ci verrà anche chiesto su quale vogliamo attivare il Pi-Hole. Eventualmente, se stiamo usando la prima Ethernet disponibile useremo eth0.
  4. Quando richiesto, scegliamo da dove prendere la lista dei DNS. Personalmente ho scelto Quad9 che permette anche una sicurezza intelligente contro siti di phishing o su cui sono presenti malware, ma si possono usare OpenDNS, Comodo, Google DNS e così via. I DNS potranno poi essere anche modificati in un successivo momento.
  5. pih-inst2.jpg
  6. Ci verrà chiesto quale indirizzo IP usare. Se abbiamo seguito questa guida, lasciamo quello presente.
  7. pih-inst3.jpg
  8. Ci verrà chiesto se vogliamo usare la Web Interface e i Log. Scegliamo Yes.
  9. Ci verrà chiesto se vogliamo usare il Pi-Hole come DNS Server; a meno che non vogliamo sostituirlo al Router, scegliamo No.
  10. La configurazione sarà ora completa. Prendiamo nota della password e riavviamo con sudo reboot.
    > sudo reboot
Step 6

Riconfigurare i DNS in uso


Il Pi-Hole è ora funzionante in rete ma dobbiamo ancora dire al nostro Router "ehi, ora fai risolvere tutti i domini al Pi-Hole invece che al mio ISP/DNS esterno". La procedura può passare da Router o da Client.

[SOTTOTITOLO3]Metodo #1: modificare DNS del Router[/SOTTOTITOLO3]
Se avete già avuto accesso al Router non dovreste avere troppe difficoltà con questo passaggio. La procedura varia da modello a modello di Router, quindi consigliamo sempre di leggere la documentazione ufficiale del produttore.
  1. Accediamo al Web Panel del Router (nel mio caso http://192.168.188.1 ma potrebbe essere anche http://192.168.1.1, http://192.168.0.1, http://192.168.1.254 e così via)
  2. Sotto la voce Internet oppure DSL modificare il campo DNS Server (spesso ce n'è più di uno, basterà indicare il primo).
  3. Schermata_2020-04-01_alle_17_39_08.jpg
  4. Salviamo le modifiche e riavviamo il Router.
[SOTTOTITOLO3]Metodo #2: cambiare DNS dei dispositivi[/SOTTOTITOLO3]
Se non ci è consentito, per vari motivi, cambiare i DNS del router, potremmo sempre cambiare quelli del dispositivo in uso!

Ogni Sistema Operativo ha la propria procedura per il cambio dei DNS: consigliamo la lettura della guida di Google oppure una breve ricerca in rete, ricordandoci di specificare (al posto dei DNS di Google che saranno 8.8.8.8) l'indirizzo IP del Pi-Hole (quindi nel mio caso 192.168.188.250 o comunque 192.168.*.250).

Step 7

Colleghiamoci a Pi-Hole


Finalmente il nostro Pi-Hole è operativo! Per verificarne il funzionamento apriamo un browser e accediamo alla Web Page (nel mio caso http://192.168.188.250/admin).

Se richiesto, inseriamo la password ottenuta in precedenza (e non perdiamola o dovremmo resettarla!) e ci troveremo di fronte alla Dashboard del Pi-Hole, da cui potremo effettuare tutte le modifiche e il monitoring che vogliamo.

Schermata_2020-04-01_alle_17_54_13.jpg

Step 8

"Mastering" del Pi-Hole


Il tuo Pi-Hole ora inizierà a filtrare tutte le richieste a domini traccianti e pubblicitari, ma non è tutto!

Ecco cos'altro devi sapere sul tuo nuovo Pi-Hole:
  • Puoi aggiornarlo connettendoti da ssh e lanciando il comando pihole -up:
    > pihole -up
  • Puoi usare i DNS-Over-HTTPS di Cloudflare. È tutto spiegato nelle FAQ.
  • Puoi usarlo come DHCP Server. Per farlo segui la guida ufficiale o visita le impostazioni del web panel.​
  • Dal pannello puoi decidere su Whitelistare o Blacklistare un dominio. Può essere se decidi di bloccare o consentire un dominio specifico.​
  • Le Gravity sono liste dei domini blacklistati. Puoi decidere di aggiornarli (sotto la voce Settings) o di crearne di tue e aggiungerle.​
  • Per effettuare dei test puoi decidere di disabilitare temporaneamente o permanentemente il Pi-Hole. La funzione è presente sotto la voce Disable.​
Sperando di aver fatto cosa gradita a tutti, vi auguriamo una buona "Pi-holata" e in caso di dubbi o perplessità non esitate a chiedere!
 

Allegati

  • pih-inst1_png__immagine_PNG__564 × 327_pixel_.jpg
    pih-inst1_png__immagine_PNG__564 × 327_pixel_.jpg
    18.5 KB · Visualizzazioni: 30
  • Mi piace
Reazioni: crimescene
In step 6 non sarebbe meglio mettere come server dns openDns? Cosi nel caso dovesse andare qualcosa storto sul raspberry si ha un dns secondario su cui appoggiarsi.
PS. Guida utilissima e fatta benissimo! THX!
 
Non ce n'è bisogno, volendo si può impostare direttamente su Pi-Hole un DNS secondario
Si ma se mettiamo caso il gatto o mio cugino lanciano un sasso sul raspberry il fritzbox non sa più da dove prendere i nomi di dominio allora in quel caso ecco qui l'utilità di immettere un indirizzo secondario sul fritzbox.
Poi che sul pi hole immetto è un dns secondario è pure giusto.

Mi sbaglio?
 
Si ma se mettiamo caso il gatto o mio cugino lanciano un sasso sul raspberry il fritzbox non sa più da dove prendere i nomi di dominio allora in quel caso ecco qui l'utilità di immettere un indirizzo secondario sul fritzbox.
Poi che sul pi hole immetto è un dns secondario è pure giusto.

Mi sbaglio?
No, anzi in questo senso è giustissimo farlo, anche se nel mio caso preferisco che ci sia un breve tempo di down piuttosto che il traffico esca dal Pi. A proposito di ridondanza quello che ho trovato più utile da fare è stato assicurarmi che il Pi non usasse i DNS del Pi-Hole stesso, infatti questo potrebbe non essere attivo/funzionante per vari motivi, primo tra tutti un aggiornamento andato male o per CPU throttling (sopratutto dopo un riavvio)
 
  • Geniale
Reazioni: morugaskorpio