Pi-hole (Italiano)
Pi-hole è un DNS sinkhole che redige una lista di blocco di domini conosciuti per offrire pubblicità e malware da sorgenti multiple di terze parti. Pi-hole, attraverso l'uso di dnsmasq, elimina semplicemente tutte le richieste di domini nella sua lista di blocco. Questa configurazione implementa efficacemente il blocco della pubblicità a livello di rete senza dover configurare ogni singolo client. Il pacchetto offre una interfaccia web e una a riga di comando.
Pi-hole Server
Installazione
Installa il pacchetto pi-hole-serverAUR.
Configurazione iniziale
FTL
Pi-hole FTL (pi-hole-ftlAUR) è una dipendenza del progetto Pi-hole.
FTL è un DNS server/forwarder e una interfaccia simil-database/fornitore di API che si occupa del salvataggio a lungo termine delle richieste che gli utenti possono richiedere "long-term data" section of the WebGUI. To be clear, data are collected and stored in two places:
- I dati giornalieri vengono conservati in RAM e sono catturati in tempo reale dal file
/run/log/pihole/pihole.log
- I dati storici (i.e. di diversi giorni/settimane/mesi) sono conservati sul filesystem
/etc/pihole/pihole-FTL.db
aggiornati ad un intervallo deciso dall'utente.
pi-hole-ftl.service
è abilitato staticamente; ri/avvialo. Consultare la documentazione ufficiale per come configurare FTL.
conf-dir=/etc/dnsmasq.d/,*.conf
nel file originale /etc/dnsmasq.conf
non sia commentata.Web Server
Opzionalmente è possibile scegliere un server web per usare l'interfaccia web 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 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/02-pihole-dhcp.conf /etc/dnsmasq.d/03-pihole-wildcard.conf /etc/dnsmasq.d/04-pihole-static-dhcp.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.
/etc/hosts
filesystem contiene il file /etc/hosts
vuoto, condizione nota ad impedire a Pi-hole il recupero delle liste. E' possibile risolvere aggiungendovi quanto segue assicurando il corretto funzionamento, notando bene che indirizzo.ip.di.pihole dovrà essere l'attuale indirizzo IP della macchina che esegue Pi-hole (es. 192.168.1.250) e myhostname il suo relativo hostname.
127.0.0.1 localhost indirizzo.ip.di.pihole pi.hole myhostname
Per approfondire, leggi Issue#1800.
Far usare Pi-hole ai propri apparati
La documentazione ufficiale descrive quattro metodi diversi:
- Definire l'indirizzo IP di Pi-hole come unico server DNS nel router
- Rendere noto l'indirizzo IP di Pi-hole attraverso dnsmasq nel router (se supportato)
- Configurare manualmente ogni apparato in modo che usi Pi-hole com server DNS
- Usare il DHCP integrato di Pi-hole
Risoluzione dei problemi
- Se configuri usando il metodo del DHCP server e su un apparato il blocco della pubblicità non funziona, potrebbe avere ancora un rilascio DHCP obsoleto. Se non sai come rinnovarlo, prova a riavviare l'apparato.
- Un semplice metodo per capire se il router è configurato correttamente è per prima cosa rinnovare il rilascio DHCP, quindi verificare il contenuto del file
/etc/resolv.conf
su un client Linux. Si dovrebbe vedere l'indirizzo IP di Pi-hole e non l'indirizzo del router. - Se hai problemi con il secondo metodo, prova a disabilitare il
dns-rebind
sul router (se presente).
Usare Pi-hole attraverso OpenVPN
Un server OpenVPN può essere configurato per informare i sui client della presenza di Pi-hole. Aggiungi le due seguenti linee al tuo /etc/openvpn/server/server.conf
:
push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS Pi-Hole-IP"
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
.
Proteggere con password l'interfaccia web
Per proteggere con password l'interfaccia web di Pi-hole, esegui il seguente comando e inserisci la tua password:
pihole -a -p
Per disabilitare la protezione inserisci una password vuota.
Usare DNS Over HTTPS (DOH)
Le richieste DNS possono anche essere eseguite via HTTPS usando un privacy-first DNS 1.1.1.1 di Cloudflare. Installa cloudflared-binAUR e segui la documentatione del progetto.
Pi-hole Standalone
La variante Standalone di Pi-hole per Arch Linux è 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:
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
items need to be present in the config file.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
By default Pi-hole uses the Google DNS server. You can change which DNS servers Pi-hole uses with:
$ pihole -a setdns server
You can specify multiple DNS servers by separating their addresses with commas.
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.
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.
Risoluzione di problemi
Perdita di dati su riavvio
I sistemi senza il RTC come alcuni dispositivi ARM è probabile che possano perdere dati dal log delle query durante un riavvio. Quando un sistema senza RTC si avvia, l'orologio di sistema è impostato dopo l'esecuzione della rete e del resolver. Alcune parti di Pi-hole possono avviarsi prima che questo accada portando alla perdita di dati. Anche un valore RTC sbagliato può causare problemi. Vedi: Installation guide#Time zone and System time.
Per dispositivi senza RTC:
Una possibile soluzione può essere l'uso di Systemd#Drop-in files su pihole-FTL.service
usando una chiamata ritardata /usr/bin/sleep x
con una direttiva ExecStartPre
. Da notare che il valore di "x" dipende da quanto tempo il tuo sistema impiega ad effettuare un time sync.
Al momento la segnalazione Issue#11008 su systemd-timesyncd sta impedento l'uso di time-sync.target per automatizzare il tutto.