Pi-hole (Italiano)

From ArchWiki
Translation Status: This article is a localized version of Pi-hole. Last translation date: 2022-10-02. You can help to synchronize the translation, if there were changes in the English version.

Il progetto Pi-hole è un DNS sinkhole che compila una lista nera di domini attingendo da diverse sorgenti di terze parti. Pi-hole usa pi-hole-ftlAUR (un fork di dnsmasq) per filtrare tutte le richieste di domini nella sua blocklist. L'esecuzione distribuisce efficacemente il blocco degli annunci a livello di rete senza la necessità di configurare i singoli client. Il pacchetto viene fornito con un'interfaccia di amministrazione web opzionale.

Note: Pi-hole su Arch Linux non è ufficialmente supportato dal progetto Pi-hole.

Panoramica

Sono disponibili due versioni per Arch Linux:

  • #Pi-hole server – Questo è il server Pi-hole predefinito e noto che la maggior parte degli utenti sta cercando. Fornisce un server DNS per altri dispositivi sulla LAN.
  • #Pi-hole standalone – Questa è un'installazione Pi-hole leggera alternativa, progettata per un contesto mobile. È progettato per essere utilizzato sullo stesso dispositivo (ad esempio un laptop), dove non è disponibile un server Pi-hole esterno e centralizzato. Non ha interfaccia web e si aggiorna automaticamente.

Pi-hole server

Installazione

Installa il pacchetto pi-hole-serverAUR.

Configuratione

FTL (Faster Than Light)

Pi-hole-FTL è un resolver/forwarder DNS e un wrapper/API simile a un database che fornisce l'archiviazione a lungo termine delle richieste che gli utenti possono interrogare attraverso la sezione "long-term data" della WebGUI. I dati sono raccolti e conservati in due luoghi:

  1. I dati giornalieri vengono archiviati nella RAM e acquisiti in tempo reale all'interno di /run/log/pihole/pihole.log
  2. I dati storici (diversi giorni/settimane/mesi) sono archiviati nel file system /etc/pihole/pihole-FTL.db e scritti a intervalli specificati dall'utente.
Nota: Per disabilitare la registrazione, vedere #Disabilita la registrazione delle query.

pihole-FTL.service è abilitato staticamente; riavviarlo/avviarlo. Per la configurazione FTL, vedere la documentazione ufficiale.

Nota: L'avvio di pihole-FTL.service potrebbe non riuscire. Vedi #Impossibile avviare il motore Pi-hole FTLDNS.

Interfaccia web

Pi-hole ha un'interfaccia web potente, facile da usare, ma completamente opzionale. Oltre a modificare le impostazioni, l'utente può analizzare e visualizzare le query DNS gestite da Pi-hole.

Configurazione PHP

Installa php-sqlite (php verrà installato automaticamente) e abilita le estensioni pertinenti descritte qui:

/etc/php/php.ini
[...]
extension=pdo_sqlite
[...]
extension=sockets
[...]
extension=sqlite3
[...]
Opzionale: permessi in lettura per PHP

In php 7.0 e versioni successive, la direttiva PHP open_basedir è vuota, il che significa che PHP può accedere a ogni directory e file che può essere letto dall'id utente del server web. Per una maggiore sicurezza, decommenta open_basedir in /etc/php/php.ini e aggiungi l'elenco di directory e file a cui si accede dall'interfaccia web di amministrazione di Pi-hole. L'elenco è piuttosto lungo:

/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
/var/log/lighttpd/error-pihole.log
/proc/cpuinfo
/proc/loadavg
/proc/meminfo
/sys/class/thermal/thermal_zone0/temp
/tmp

La direttiva open_basedir prevede un elenco separato da due punti:

/etc/php/php.ini
open_basedir = /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:/var/log/lighttpd/error.log:/proc/loadavg:/proc/meminfo:/proc/cpuinfo:/sys/class/thermal/thermal_zone0/temp:/tmp
Configurare lighttpd
Tip: Gli utenti possono anche eseguire invece il server web Nginx. Vedere #Nginx al posto di Lighttpd.

Installa lighttpd e php-cgi.

Copia la configurazione predefinita fornita dal pacchetto per Pi-hole:

# cp /usr/share/pihole/configs/lighttpd.example.conf /etc/lighttpd/lighttpd.conf

Abilita lighttpd.service e avvialo.

Aggiornare il file hosts

filesystem fornisce un file /etc/hosts vuoto che è noto per impedire a Pi-hole il recupero delle blocklist. È necessario aggiungere quanto segue al file per garantirne il corretto funzionamento, notando che ip.address.of.pihole dovrebbe essere l'indirizzo IP effettivo della macchina che esegue Pi-hole (ad es. 192.168.1.250) e myhostname dovrebbe essere il nome host effettivo della macchina che esegue Pi-hole:

/etc/hosts
127.0.0.1              localhost
ip.address.of.pihole   pi.hole myhostname

Per ulteriori informazioni, vedere Issue#1800.

Configurare i dispositivi per l'uso di Pi-hole

Per utilizzare Pi-hole, i dispositivi all'interno della rete devono utilizzare l'indirizzo IP di Pi-hole come unico server DNS. Per fare questo, ci sono generalmente due metodi:

  1. Nelle impostazioni DHCP della LAN del router, impostare l'indirizzo IP di Pi-hole come unico server DNS disponibile per i dispositivi collegati.
  2. Configura manualmente ogni dispositivo per utilizzare l'indirizzo IP di Pi-hole come unico server DNS.
Note: Alcuni router (o anche ISP) non consentono modifiche alle impostazioni DNS LAN, quindi disabilitando il server DHCP del router e utilizzando il DHCP integrato di Pi-hole potrebbe essere una soluzione.

Maggiori informazioni su come utilizzare Pi-hole per altri dispositivi sono disponibili all'indirizzo documentazione a monte.

Tip: Il dispositivo che esegue Pi-hole può utilizzare a sua volta Pi-hole. Basta modificare le impostazioni DNS in solo indirizzo IP 127.0.0.1.

Pi-hole standalone

Installazione

Installa il pacchetto pi-hole-standaloneAUR.

Configuratione

Timer

Il pacchetto standalone Pi-hole installa un timer abilitato staticamente (e relativo servizio) che aggiornerà settimanalmente l'elenco dei server nella lista nera di Pi-hole. I valori predefiniti possono essere modificati tramite una modifica nel servizio o può essere impedita l'esecuzione impostando un masking su di esso. Ricordarsi di avviare manualmente pi-hole-gravity.timer o semplicemente riavviare dopo la modifica.

FTL

Vedi #FTL (Faster Than Light).

Usage

Modifica le impostazioni di rete del computer in modo che l'unico server DNS in uso sia 127.0.0.1.

Se si utilizza il DHCP da un router esterno per ottenere indirizzi IP, aggiungere bind-interfaces a /etc/dnsmasq.conf per la risoluzione delle query DNS.

Testare le query DNS indipendentemente dal server dei nomi configurato in /etc/resolv.conf utilizzando drill @127.0.0.1 archlinux.org.

Usage

Sia la versione standalone che quella server possono essere controllate tramite CLI, ma solo la versione server può essere controllata tramite interfaccia web.

Uso dell'interfaccia web

Vai su pi.hole o <Pi-hole IP address>/admin/ per accedere all'interfaccia web.

Uso della linea di comando (CLI)

Gestione dei DNS di Pi-hole

Per impostazione predefinita, Pi-hole utilizza il server DNS di Google. Modifica i server DNS utilizzati da Pi-hole con:

$ pihole -a setdns server

Specifica più server DNS separando i loro indirizzi con virgole.

Aggiornamento forzato dell'elenco dei domini della blocklist

Per aggiornare l'elenco dei domini bloccati, eseguire:

$ pihole -g

Disattiva temporaneamente Pi-hole

Pi-hole può essere messo in pausa tramite CLI eseguendo:

$ pihole disable [time]

Lasciando vuoto il valore per time, la disabilitazione sarà permanente fino alla successiva riattivazione manuale. time può essere espresso in secondi o minuti con la sintassi #s e #m. Ad esempio, per disabilitare Pi-hole per 5 minuti:

$ pihole disable 5m

In qualsiasi momento, riattiva Pi-hole eseguendo:

$ pihole enable

Suggerimenti e trucchi

Interfaccia web protetta da password

Per proteggere con password l'interfaccia Web Pi-hole, eseguire il comando seguente e immettere la password:

$ pihole -a -p

Per disabilitare la protezione con password, impostare una password vuota.

Cloudflare DoH

Pi-hole può essere configurato per utilizzare Cloudflared per ottenere la funzionalità DNS over HTTPS.

Per far funzionare Cloudflared con Pi-hole, modifica il file cloudflared.yml e modifica le impostazioni come di seguito:

/etc/cloudflared/cloudflared.yml
...
proxy-dns-port: 53000
proxy-dns-address: 127.0.0.1

Quindi riavvia cloudflared@cloudflared.service. Ora usa 127.0.0.1#53000 come unica voce del server DNS in Pi-hole.

Ottimizzazione per unità a stato solido

Se Pi-hole è in esecuzione su un solid state drive (scheda SD, SSD ecc..) si consiglia di rimuovere il commento dal valore DBINTERVAL e cambiarlo almeno in 60.0 per ridurre al minimo le scritture nel database:

/etc/pihole/pihole-FTL.conf

...

## Database Interval
## How often do we store queries in FTL's database -minutes-?
## See: https://docs.pi-hole.net/ftldns/database/
## Options: number of minutes
DBINTERVAL=60.0

...

Dopo aver eseguito le modifiche, riavvia pihole-FTL.service.

Disabilita la registrazione delle query

Sia i dati giornalieri che quelli storici raccolti per impostazione predefinita contengono dati di query che potrebbero essere considerati sensibili.

Per disabilitare il salvataggio su database dei dati storici delle query, impostare il massimo livello di privacy Anonymous mode nell'amministrazione web (Settings > Privacy) o nel file di configurazione /etc/pihole/pihole-FTL.conf modificandolo alla linea:

PRIVACYLEVEL=3

Per disabilitare anche la registrazione per i dati giornalieri, utilizzare il comando seguente:

$ pihole logging off
Warning: Pi-hole cancellerà tutte le statistiche dopo l'esecuzione di questo comando.

Utilizzo con server VPN

Pi-hole può essere utilizzato dai client VPN connessi.

OpenVPN

Un server OpenVPN può essere configurato per utilizzare un'istanza Pi-hole verso i suoi client. Aggiungi le seguenti due righe a /etc/openvpn/server/server.conf:

push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS Pi-hole-IP"

Se ancora non funziona, prova a creare un file /etc/dnsmasq.d/00-openvpn.conf con il seguente contenuto:

interface=tun0

Potrebbe essere necessario fare in modo che dnsmasq ascolti su tun0.

WireGuard

I client WireGuard possono essere configurati per utilizzare il server DNS Pi-hole. Nel file di configurazione del client, specificare la riga seguente:

 DNS = Pi-hole-IP

Affinché il DNS sia funzionante dalla VPN, Pi-hole deve ascoltare tutte le interfacce locali:

 pihole -a -i local

Vedere ulteriori informazioni in WireGuard#Client configuration.

Nginx al posto di Lighttpd

Questa è configurazione non ufficiale supportata dalla comunità. Assicurati che PHP sia impostato (vedi #Configurazione PHP) e che il server lighttpd sia inattivo.

Installa nginx-mainline e php-fpm.

Modifica /etc/nginx/nginx.conf per contenere quanto 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 la configurazione predefinita fornita dal pacchetto per Pi-hole:

# mkdir /etc/nginx/conf.d
# cp /usr/share/pihole/configs/nginx.example.conf /etc/nginx/conf.d/pihole.conf

Modifica /etc/nginx/conf.d/pihole.conf e cambia la direttiva fastcgi_pass come segue:

fastcgi_pass  unix:/run/php-fpm/php-fpm.sock;  

Facoltativamente, imposta VIRTUAL_HOST sul CNAME di Pi-hole se l'intenzione è di eseguire più host virtuali su Nginx.

fastcgi_param VIRTUAL_HOST "pihole.example.com";

Dalla versione 7.4 php-fpm è protetto per impostazione predefinita e revoca l'accesso in lettura/scrittura su /usr (e sottodirectory).

Crea un drop-in file per php-fpm con il seguente contenuto:

/etc/systemd/system/php-fpm.service.d/pihole.conf
[Service]
ReadWritePaths = /srv/http/pihole
ReadWritePaths = /run/pihole-ftl/pihole-FTL.port
ReadWritePaths = /run/log/pihole/pihole.log
ReadWritePaths = /run/log/pihole-ftl/pihole-FTL.log
ReadWritePaths = /etc/pihole
ReadWritePaths = /etc/hosts
ReadWritePaths = /etc/hostname
ReadWritePaths = /etc/dnsmasq.d/01-pihole.conf
ReadWritePaths = /proc/meminfo
ReadWritePaths = /proc/cpuinfo
ReadWritePaths = /sys/class/thermal/thermal_zone0/temp
ReadWritePaths = /tmp

Quindi avvia e abilita nginx.service e php-fpm.service.

Blocklists addizionali

Pi-hole è inteso con lo scopo di bloccare gli annunci, ma può anche essere utilizzato per bloccare altri contenuti indesiderati:

  1. Domini traccianti
  2. Domini malware
  3. Siti di pirateria
  4. Siti di notizie false
  5. Siti di phishing
Nota: Le liste di blocco Pi-hole devono contenere domini. Alcuni elenchi potrebbero contenere combinazioni di indirizzi IP e 127.0.0.1: questo formato è accettato da Pi-hole.

Ci sono molte fonti che forniscono queste liste di blocco. Alcuni esempi: firebog.net e oisd.nl.

Usare Unbound come server DNS a monte

Per impostazione predefinita, Pi-hole inoltra le richieste ai server DNS a monte, il che potrebbe causare problemi di privacy. Vedere la documentatione per una guida sull'impostazione di Unbound in locale per risolvere le richieste DNS.

Risoluzione dei problemi

Comportamento strano nell'interfaccia web dopo un aggiornamento

Alcuni problemi di rendering strani / inspiegabili nella GUI Web possono spesso essere risolti svuotando la cache del browser.

Perdita di dati al riavvio

I sistemi senza un RTC come alcuni dispositivi ARM probabilmente subiranno la perdita di dati nel registro delle query al riavvio. Quando i sistemi non dispongono di un avvio RTC, l'ora viene impostata dopo che la rete e il resolver si sono attivati. Alcune parti di Pi-hole possono essere avviati prima che ciò accada portando alla perdita di dati. Anche un RTC impostato in modo errato può causare problemi. Vedere: Guida all'installazione#Fuso orario e System time.

Per i dispositivi privi di RTC: Una soluzione fantasiosa per questo è usare un drop-in file su pihole-FTL.service in cui viene aggiunto un ritardo nella chiamata /usr/bin/sleep x in un'istruzione ExecStartPre. Si noti che il valore di "x" nel tempo di sospensione dipende dal tempo impiegato dall'hardware specifico per stabilire la sincronizzazione dell'ora.

Issue#11008 su systemd-timesyncd che sta attualmente impedendo l'uso di time-sync.target per automatizzare questa operazione.

Impossibile avviare il motore Pi-hole FTLDNS

Tip: Controlla quale processo ha aperto la porta 53 con: # lsof -i :53.

Potrebbe essere che systemd-resolved.service occupi già la porta 53, richiesta per pihole-FTL.service. Per risolvere questo problema, disabilitare lo stub listener modificando il file di configurazione systemd-resolved:

/etc/systemd/resolved.conf
[Resolve]
DNSStubListener=no

Quindi riavvia systemd-resolved.service e pihole-FTL.service.

Per ulteriori informazioni, vedere resolved.conf(5).

In alternativa, indicare a dnsmasq di collegarsi a ciascuna interfaccia in modo esplicito, invece del carattere jolly 0.0.0.0:53, decommentando la riga bind-interfaces in /etc/dnsmasq.conf. Ciò eviterà conflitti con systemd-resolved che è in ascolto su 127.0.0.53:53.

Conflitto con il pacchetto DNSMasq

A partire da Pi-hole-FTL 4.0, un fork privato di dnsmasq è integrato nel sottoprogetto FTL. Il pacchetto originale dnsmasq è ora in conflitto con pi-hole-ftlAUR e verrà disinstallato durante l'aggiornamento da una versione precedente. È ancora possibile utilizzare i file di configurazione di dnsmasq precedenti, assicurati solo che conf-dir=/etc/dnsmasq.d/,*.conf nell'originale /etc/dnsmasq.conf non sia commentato.

Stato sconosciuto e modifiche non salvate

Il problema, come visto in FS#63704, riguarda l'utente creato da systemd-sysusers http, che viene creato in uno stato scaduto. Per risolverlo, esegui:

# chage --expiredate -1 http

Tempi di caricamento lenti

The factual accuracy of this article or section is disputed.

Reason: Questo problema sembra riguardare la configurazione DNS. Potrebbe non essere una buona idea indicare modifiche dirette a /etc/resolv.conf. (Discuss in Talk:Pi-hole (Italiano))

Se i browser segnalano "Risoluzione host" o semplicemente impiegano più tempo del solito per caricare le pagine, assicurati che /etc/resolv.conf appaia esattamente come questo:

/etc/resolv.conf
nameserver 127.0.0.1

Se ci vuole molto tempo per caricare le pagine, può essere un problema con l'esecuzione di lsof nello script di pihole (/usr/bin/pihole) chiamato tramite php. Verificalo durante il caricamento della pagina con: ps -ef | grep lsof. Terminalo e se la pagina viene visualizzata, sostituisci la chiamata di lsof nello script di pihole (ce n'è solo una) con:

ss -lnp '( sport = 53 )'

Associa il servizio DNS di Pihole-FTL all'indirizzo IP effettivo del Pi-hole (invece di 0.0.0.0) per evitare problemi di risoluzione DNS per altri host virtuali

In maniera predefinita, il servizio DNS (pihole-FTL) viene associato all'indirizzo IP 0.0.0.0:

# netstat -ltnp | grep 53
tcp        0      0 0.0.0.0:53              0.0.0.0:*               LISTEN      2196/pihole-FTL
tcp6       0      0 :::53                   :::*                    LISTEN      2196/pihole-FTL

Ciò potrebbe impedire a qualsiasi altro host virtuale sulla stessa macchina che ospita l'istanza pihole (come i contenitori docker) di ottenere le risoluzioni DNS.
Approfondimenti qui e qui.

Per risolvere questo problema, devi creare un file di configurazione in /etc/dnsmasq.d/ con il seguente contenuto (dove X.X.X.X è l'indirizzo IP del tuo pi-hole):

# cat /etc/dnsmasq.d/99-dns-bind.conf
listen-address=X.X.X.X
bind-interfaces

Quindi, è necessario riavviare il servizio pihole-FTL per applicare le modifiche

# systemctl restart pihole-FTL
Tip: Per completare questa configurazione potrebbe essere necessario attivare il servizio di attesa online del proprio gestore di rete

Risorse