Pi-hole (Italiano)
Pi-hole è un progetto basato su script di shell che gestisce liste di blocco di pubblicità e malware conosciuti e interagisce trasparentemente con dnsmasq per reindirizzare ogni richiesta verso un sostituto. Pi-hole rimpiazza il tuo router come DNS di rete e quindi tutti le richieste saranno gestire da lui senza il bisogno di installare nulla sul lato client. Questa configurazione implementa efficacemente il blocco della pubblicità a livello di rete (es. tutti gli apparati connessi). Il pacchetto offre una webUI ben fatta (unitamente ad una interfaccia CLI) ed è particolarmente leggero e scalabile.
Contents
Pi-hole Server
Installazione
Installa pi-hole-ftlAUR e pi-hole-serverAUR.
Il pacchetto Pi-hole server installa 2 timers (e relativi servizi), entrambi abilitati staticamente:
- pi-hole-gravity.timer aggiornerà settimanalmente la lista nera dei server di Pi-hole.
- pi-hole-logtruncate.timer ripulirà giornalmente il log delle richieste LAN.
Se non dovessi essere d'accordo con le temporizzazioni predefinite dei timers (ereditate dal progetto principale) puoi, ovviamente, modificarli o evitare che vengano eseguiti mascherandoli.
Devi farli partire manualmente o semplicemente riavvia a configurazione terminata.
Configurazione iniziale
Dnsmasq
Assicurati che la seguente riga in /etc/dnsmasq.conf
sia non commentata:
/etc/dnsmasq.conf
[...] conf-dir=/etc/dnsmasq.d/,*.conf
Abilita dnsmasq.service
e ri/avvia il servizio.
Web Server
Opzionalmente, è possibile scegliere un server web per usare l'interfaccia amministrativa di Pi-hole.
File di configurazione già funzionanti sono forniti sia per lighttpd che per nginx. Altri server web possono tranquillamente eseguire l'interfaccia web, ma non sono al momento supportati.
Installa php-sqlite e abilita le necessarie estensioni di seguito elencate:
/etc/php/php.ini
extension=pdo_sqlite [...] extension=sockets.so extension=sqlite3
Per ragioni di sicurezza, se vuoi popolare la direttiva PHP open_basedir, l'interfaccia web di amministrazione di Pi-hole necessita l'accesso ai seguenti file e cartelle:
/srv/http/pihole:/run/pihole-ftl/pihole-FTL.port:/run/log/pihole/pihole.log:/run/log/pihole-ftl/pihole-FTL.log:/etc/pihole:/etc/hosts:/etc/hostname:/etc/dnsmasq.d/03-pihole-wildcard.conf:/proc/meminfo:/proc/cpuinfo:/sys/class/thermal/thermal_zone0/temp:/tmp
Lighttpd
Copia il file di configurazione fornito dal pacchetto:
# cp /usr/share/pihole/configs/lighttpd.example.conf /etc/lighttpd/lighttpd.conf
Abilita lighttpd.service
e ri/avvia il servizio.
Nginx
Installa nginx-mainline e php-fpm.
Modifica /etc/php/php-fpm.d/www.conf
e cambia la direttiva di ascolto come segue:
listen = 127.0.0.1:9000
Modifica /etc/nginx/nginx.conf
in modo da aggiungere ciò che segue nella sezione http:
gzip on; gzip_min_length 1000; gzip_proxied expired no-cache no-store private auth; gzip_types text/plain application/xml application/json application/javascript application/octet-stream text/css; include /etc/nginx/conf.d/*.conf;
Copia il file di configurazione fornito dal pacchetto:
# mkdir /etc/nginx/conf.d # cp /etc/pihole/configs/nginx.pi-hole.conf /etc/nginx/conf.d/
Abilita nginx.service
php-fpm.service
e ri/avvia i servizi.
FTL
FTL è parte del progetto Pi-hole. E' un interfaccia simil-database/fornitore di API sul log delle richieste DNS di Pi-hole. FTL è l'unico modo in cui l'interfaccia web di Pi-hole accede ai dati raccolti sull'uso di dnsmasq ed è quindi una dipendenza.
E' possibile configurare FTL modificando il file /etc/pihole/pihole-FTL.conf
con i seguenti parametri (la prima opzione è la predefinita):
- SOCKET_LISTENING=localonly|all (Ascoltare solamente connessioni locali o tutte)
- TIMEFRAME=rolling24h|yesterday|today (Finestra temporale dei dati ultime 24h relative, fino a 48h (oggi + ieri), o fino a 24h (solo oggi, come in Pi-hole v2.x ))
- QUERY_DISPLAY=yes|no (Mostrare tutte le richieste? Impostarlo a no per nasconderle)
- AAAA_QUERY_ANALYSIS=yes|no (Permette a FTL di analizzare le richieste AAAA da pihole.log?)
- MAXDBDAYS=365 (Per quanto tempo le richieste devono venire conservate nel database?)
- RESOLVE_IPV6=yes|no (FTL deve provare di risolvere gli indirizzi IPv6?)
- RESOLVE_IPV4=yes|no (FTL deve provare di risolvere gli indirizzi IPv4?)
- DBINTERVAL=1.0 (Quanto spesso devono essere scritte le richieste nel database FTL [minuti]?)
- DBFILE=/etc/pihole/pihole-FTL.db (Specifica percorso e nome del database SQLite a lungo termine di FTL. Impostandolo a DBFILE= disabilita il database)
pi-hole-ftl.service
è abilitato staticamente; ri/avvialo.
Configurazione del router e di Pi-hole
Metodo consigliato
La maggior parte degli utenti hanno bisogno delle seguenti funzionalità:
- Monitoraggio degli host sulla macchina Pi-hole (p.e.: log delle richieste DNS legate a singole macchine dai rispettivi hostname).
- La risoluzione dei nomi sulla LAN.
- I servizi di Ad blocking e monitoraggio di rete offerti da Pi-hole.
Per ottenere i servizi suddetti, il router dovrebbe essere configurato in modo da distribuire ai i propri client l'indirizzo IP della macchina Pi-hole come risolutore DNS, ma mantenere la reale risoluzione DNS a monte della macchina Pi-hole. La macchina Pi-hole dovrebbe essere configurata per usare il router come unico risolutore DNS.
Sul router, configura una voce personalizzata di dnsmasq per distribuire l'IP della macchina Pi-hole. La sintassi è:
dhcp-option=6,Pi-hole_IP
Se Pi-hole è eseguito su una macchina il cui indirizzo IP è 192.168.1.250, la voce diventerà:
dhcp-option=6,192.168.1.250
Sulla macchina Pi-hole, entra nell'interfaccia web (http://pi.hole), seleziona "Settings" e definisci l'indirizzo IP del router come unico server DNS. Non definire altre voci DNS per la macchina Pi-hole.
/etc/resolv.conf
sulla macchina client. Sarebbe corretto vedere l'indirizzo IP della macchina Pi-hole e non l'IP del router.dns-rebind
.Metodo alternativo
Gli utenti impossibilitati nel configurare il router come precedentemente indicato possono fare riferimento a questa guida ufficiale per le istruzioni sulla configurazione.
Per completezza, un sunto di tale quida viene riportato a seguire.
Possono essere seguiti due metodi:
Metodo automatico: Impostare il server DNS Server nelle impostazioni del router
Questa è la via più veloce per fare usare Pi-hole ai tuoi dispositivi. Se imposti in questa maniera le opzioni DHCP del tuo router, qualsiasi dispositivo che si connette alla LAN bloccherà immediatamente la pubblicità.
Vai alla sezione DHCP Server del tuo router e imposta l'indirizzo IP della macchina che esegue Pi-hole come unico server DNS per la tua LAN.
Metodo manuale: Configura manualemente il DNS per ogni tuo dispositivo
E' possibile configurare manulamente ogni dispositivo per far si che usi Pi-hole come suo DNS server. Hai solo bisogno dell'indirizzo IP del tuo Pi-hole e seguire le seguenti istruzioni a seconda del tuo sistema operativo.
Linux
In diversi Desktop Environment moderni per Linux, l'impostazione dei DNS è fatta attraverso Network Manager.
- Clicca Sistema > Preferenze > Connessioni di rete
- Seleziona la connessione che vuoi configurare
- Clicca Modifica
- Seleziona la linguetta impostazioni IPv4 o IPv6
- Se è selezionato il metodo Automatico (DHCP), seleziona invece Automatico (DHCP) solo indirizzi. Se il metodo è impostato su qualcos'altro, non cambiarlo.
- Nella casella di testo Server DNS, inserisci l'IP di Pi-hole
- Clicca Salva per applicare i cambiamenti
- Ripeti la procedura per ogni connesione di rete che vuoi modificare.
Se non usi Network Manager, segui le specifiche istruzioni sul tuo gestore di connesione per la modifica manuale dei DNS.
Se non usi alcun gestore di connesione i tuoi server DNS sono elencati nel file /etc/resolv.conf
: modificalo in modo da inserire la seguente unica voce nameserver
:
/etc/resolv.conf
[...] nameserver <Pi-hole_box_IP>
dove <Pi-hole_box_IP>
l'indirizzo IP della macchina che esegue Pi-hole.
macOS
- Clicca Apple > Preferenze di sistema > Rete
- Seleziona la connessione di cui vuoi configurare il DNS
- Clicca Avanzate
- Seleziona la linguetta DNS
- Clicca + per rimpiazzare qualsiasi indirizzo esistente, o aggiungi, l'indirizzo IP di Pi-hole in cima alla lista:
- Clicca Applica > OK
- Ripeti la procedura per ogni connesione di rete che vuoi modificare.
Windows
Le impostazioni DNS sono specificate nelle finestra delle proprietà TCP/IP della connessione di rete selezionata.
- Vai al Pannelleo di controllo
- Clicca Rete e Internet > Centro di connessione e condivisione di rete > Modifica impostazione scheda
- Seleziona la connessione che vuoi configurare
- Click col destro sulla connessione > Proprietà
- Seleziona la linguetta Rete
- Seleziona Protocollo Internet Versione 4 (TCP/IPv4) o Protocollo Internet Versione 6 (TCP/IPv6)
- Clicca Proprietà
- Clicca Avanzate
- Seleziona la linguetta DNS
- Clicca OK
- Seleziona Usa i seguenti server DNS
- Rimpiazza gli indirizzi con quello del tuo Pi-hole
- Riavvia la connessione selezionata al punto 3
- Ripeti la procedura per ogni connesione di rete che vuoi modificare.
Metodo Pi-hole centrico
Può essere seguito anche un altro metodo per configurare la tua LAN. E' possibile impostare la macchina che esegue Pi-hole come server DHCP e disattivare tutti i servizi di rete sul tuo router, relegandolo a semplice gateway/natter.
Per semplicità di configurazione ed esposizione, sarà seguito solo il metodo di configurazione via interfaccia web:
- Vai nell'interfaccia di configurazione del tuo router e disabilità il servizio DHCP. Prendi nota dell'indirizzo IP del router.
- Vai nell'interfaccia web di Pi-hole (http://pi.hole)
- Vai a Settings/Pi-hole DHCP Server
- Abilita DHCP server enabled
- Imposta l'intervallo DHCP per la tua LAN valorizzando le caselle di testo From e To. Per esempio: da 192.168.1.2 a 192.168.1.100
- Imposta l'inrizzo IP del router nella casella di testo Router. Per esempio: 192.168.1.1
- Opzionale: Da Advanced DHCP settings abilita Enable IPv6 support (SLAAC + RA) se vuoi il supporto e le funzionalità IPv6.
- Opzionale: Se abbisogni di rilasci statici del DHCP li puoi configurare andando nella sezione DHCP leases/Static DHCP leases configuration.
- Save per applicare i cambiamenti.
Usare Pi-hole attraverso OpenVPN
E' possibile usare OpenVPN (server) assieme a Pi-hole per redirigere il traffico remoto dei client al DNS di Pi-hole e rimuovere loro la pubblicità. E' logico aspettarsi una riduzione del traffico cellulare in quanto i banner pubblicitari non vengono nemmeno caricati. Assicurati che il file /etc/openvpn/server/server.conf
contenga le due linee indicate qui sotto sostituendo "xxx.xxx.xxx.xxx" con l'indirizzo IP della macchina che esegue Pi-hole:
push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS xxx.xxx.xxx.xxx"
Se ancora non dovesse funzionare, provare a creare il file /etc/dnsmasq.d/00-openvpn.conf
con il seguente contenuto:
interface=tun0
Questo potrebbe essere necessario per far si che dnsmasq
sia in ascolto su tun0
.
Pi-hole Standalone
La variante Standalone di Pi-hole per Archlinux è nata dalla necessità di usare i servizi di Pi-hole in mobilità. L'articolo Sky-hole è stato di ispirazione.
Installazione
Installa il pacchetto pi-hole-standaloneAUR.
Il pacchetto Pi-hole standalone installa un timer (e relativo service) staticamente abilitato che aggiornerà settimanalmente la lista nera dei server di Pi-hole.
Se non dovessi essere d'accordo con le temporizzazioni predefinite del timer (ereditata dal progetto principale) puoi, ovviamente, modificarlo o evitare che venga eseguito mascherandolo.
Devi far partire manualmente pi-hole-gravity.timer
o semplicemente riavvia a configurazione terminata.
Configurazione iniziale
Dnsmasq
Assicurati che la seguente riga in /etc/dnsmasq.conf
sia non commentata:
/etc/dnsmasq.conf
[...] conf-dir=/etc/dnsmasq.d/,*.conf
Abilita dnsmasq.service
e ri/avvia il servizio.
Configurare la risoluzione dei nomi
Il pacchetto Pi-hole standalone per funzionare correttamente richiede che sia impostato un unico server DNS sulla tua macchina. L'indirizzo DNS deve essere quello della tua stessa macchina.
Questo può essere fatto in diverse maniere.
Manualmente
Se sulla tua macchina nessun servizio gestisce automaticamente il file /etc/resolv.conf
, puoi facilemente modificarlo in modo da inserire una unica voce nameserver
:
/etc/resolv.conf
[...] nameserver 127.0.0.1
nameserver
deve essere presente nel file di configurazione.Openresolve
E' probabile che sia il servizio openresolv a gestire /etc/resolv.conf
nel caso in cui sia usato un gestore di connessioni come netctl, networkmanager o altri. Se è il tuo caso, occorre forzare openresolv ad usare localhost come server dei nomi.
Modifica /etc/resolvconf.conf
in modo da togliere il commento alla riga name_servers:
/etc/resolvconf.conf
[...] name_servers=127.0.0.1
e aggiorna resolvconf:
# resolvconf -u
Usare Pi-hole
Come precedentemente menzionato, Pi-hole offre la possibiltà di essere usato e configurato sia da riga di comando sia dalla sua interfaccia web (solo pacchetto server).
Gestione dei DNS di Pi-hole
Alla prima installazione, Pi-hole è configurato in maniera predefinita per usare i DNS di Google per risolvere i nomi richiesti dalla tua LAN. Se vuoi cambiare i server o semplicemente aggiungerne altri, sulla macchina che esegue Pi-hole puoi eseguire
pihole -a setdns [DNS1],[DNS2],...
seguito da una lista di server DNS separati da virgole che vuoi che userà Pi-hole. Per esempio, se in aggiunta ai DNS di Google vuoi aggiungere quelli di Comodo esegui
pihole -a setdns 8.8.8.8,8.8.4.4,8.26.56.26,8.20.246.20
Per il solo pacchetto server, puoi fare la stessa cosa via interfaccia web (http://pi.hole) andando su Settings e aggiungendo i server DNS desiderati nella sezione Upstream DNS Servers. Save per applicare i cambiamenti.
Aggiornamento forzato della lista dei domini pubblicitari
Se hai la necessità di aggiornare la lista dei domini bloccati, sulla macchina Pi-hole puoi eseguire
pihole -g
o, sul solo pacchetto server, via interfaccia web (http://pi.hole) vai su Tools/Update Lists ed esegui Update Lists.
Proteggere lìaccesso all'interfaccia web (solo pacchetto server)
L'interfaccia web di Pi-hole può venire protetta da password contro uni non autorizzati. Sulla macchina Pi-hole puoi eseguire
pihole -a -p <pwd>
dove <pwd>
è la password da assegnare. Puoi lascare il campo vuoto per ottenere la classica richiesta e conferma password alla *nix.
Per disattivare la password di accesso riesegui
pihole -a -p
lasciando tutto vuoto.
Disabilitare temporaneamente Pi-hole
Pi-hole può venire facilmente messo in pausa attraverso la sua intefaccia web (http://pi.hole): vai su Disable e scegli l'opzione di disabilitazione che preferisci.
E' possibile anche via CLI eseguendo
pihole disable [time]
Lasciando time
vuoto la disabilitazione sarà permanente fino alla successiva manuale riabilitazione.
time
può essere espresso in secondi o minuti con la sintassi #s e #m. Per esempio, per disabilitare Pi-hole per soli 5 minuti, puoi eseguire
pihole disable 5m
In qualsiasi momento è possibile riabilitare Pi-hole con
pihole enable
o, via interfaccia web, cliccando su Enable.