Home
» Come fare
»
Crittografare il DNS upstream di Pi-hole su Ubuntu Server 24.04
Crittografare il DNS upstream di Pi-hole su Ubuntu Server 24.04
In questo esempio illustrativo, Linh esegue Pi-hole su Ubuntu Server 24.04 e desidera crittografare le richieste DNS che Pi-hole invia al server remoto. Installa Pi-hole dnscrypt-proxy, associalo a un server 127.0.0.1:5053, scegli un resolver DNS-over-HTTPS (DoH), testa il proxy locale e infine configura Pi-hole in modo che utilizzi tale proxy. Questa procedura presuppone che Pi-hole sia già installato e funzionante; Linh è un esempio ipotetico, non un'installazione reale o un report di test.
Scegliere un metodo DoH attuale
Pi-hole non comunica direttamente tramite DoH con il suo resolver a monte; normalmente inoltra le richieste DNS a un indirizzo IP e a una porta specifici. Un proxy locale funge da ponte tra i due protocolli: Pi-hole invia le richieste DNS standard a un listener locale privato, e il proxy invia le richieste crittografate al resolver selezionato. In questo esempio, Linh utilizza Pi-hole dnscrypt-proxysullo stesso server e mantiene il suo listener sull'interfaccia di loopback, in modo che altri dispositivi non possano connettersi direttamente a quel proxy.
Evitate di iniziare una nuova installazione con la cloudflared proxy-dnsricetta precedente. La pagina attuale di Pi-hole relativa a Cloudflare indica che tale funzionalità è stata deprecata da Cloudflare nel novembre 2025 e che le nuove installazioni che la utilizzano non sono raccomandate. Le istruzioni di Pi-hole per dnscrypt-proxy offrono un'alternativa supportata. L'elenco dei pacchetti di Ubuntu Noble attualmente include dnscrypt-proxy; le versioni dei pacchetti variano in base all'architettura e possono cambiare con la pubblicazione degli aggiornamenti.
Comando da terminale Ubuntu per installare dnscrypt-proxy dai repository di pacchetti Noble.
1. Installa il pacchetto Ubuntu
Aggiorna gli elenchi dei pacchetti di APT e installa il pacchetto del repository Noble:
sudo apt update
sudo apt install dnscrypt-proxy
Il pacchetto si trova nel componente Universe di Ubuntu. Se APT non riesce a trovarlo, verifica che Universe sia abilitato e riavvia il processo sudo apt update. Non scaricare una build di terze parti a caso per aggirare un problema di configurazione del repository.
Prima di continuare, verificare che Ubuntu abbia installato l'unità socket systemd utilizzata dalla procedura Pi-hole:
systemctl list-unit-files dnscrypt-proxy.socket
L'elenco dei file del pacchetto Ubuntu Noble include dnscrypt-proxy.socket, e le istruzioni di Pi-hole utilizzano quel socket per fornire un listener DNS locale senza entrare in conflitto con il servizio di Pi-hole sulla porta 53.
Sovrascrittura del socket con listener TCP e UDP cancellati e reindirizzamento a localhost sulla porta 5053.
2. Associa il proxy alla porta 5053 di localhost.
Il servizio DNS FTL di Pi-hole normalmente utilizza la porta 53. Assegna una porta diversa a dnscrypt-proxy e associalo solo al server stesso. Crea un override di systemd:
sudo systemctl edit dnscrypt-proxy.socket
Aggiungi queste righe al file di override vuoto, salva ed esci:
Le assegnazioni vuote cancellano i listener originali della porta 53 dell'unità socket prima che vengano aggiunti i nuovi indirizzi. Mantenere il listener a 127.0.0.1è importante: non modificarlo in 0.0.0.0per questa configurazione same-host, perché ciò esporrebbe il proxy su ogni interfaccia di rete.
Impostazioni TOML di dnscrypt-proxy che utilizzano l'attivazione tramite socket systemd e selezionano il resolver di sicurezza Cloudflare.
3. Selezionare il risolutore DoH
Aprire il file di configurazione del pacchetto:
sudo nano /etc/dnscrypt-proxy/dnscrypt-proxy.toml
Impostare i seguenti valori, mantenendo intatta la restante configurazione predefinita:
Un listen_addresseselenco vuoto indica a dnscrypt-proxy di utilizzare l'attivazione tramite socket systemd. Il resolver Cloudflare Security specificato è l'esempio utilizzato nella guida di Pi-hole per dnscrypt-proxy; applica il filtro antimalware del resolver in aggiunta alle blacklist di Pi-hole. Se preferisci un altro provider o nessun filtro di sicurezza aggiuntivo, scegli un resolver DoH aggiornato dall'elenco pubblico di resolver e utilizza il suo nome server esatto. I nomi disponibili e le policy dei resolver possono cambiare, quindi verifica la voce corrente anziché copiare un nome obsoleto da un vecchio post.
Riavvia il socket e il servizio affinché le impostazioni di override e TOML abbiano effetto:
Quindi, testa il listener locale prima di modificare il flusso upstream di Pi-hole:
dig @127.0.0.1 -p 5053 example.com
Una risposta DNS e uno stato di uscita pari a zero indicano che il proxy locale ha risposto alla query. Per confermare che l'upstream selezionato utilizza DoH, esaminare i messaggi di servizio recenti e cercare il resolver contrassegnato OK (DoH):
Se dignon è installato, installa il pacchetto di Ubuntu dnsutils. Se la query va in timeout o il log non mostra un resolver DoH, controlla sudo systemctl status dnscrypt-proxy.socket dnscrypt-proxy.serviceil registro dei servizi prima di procedere.
Comando CLI di Pi-hole per impostare il proxy DNS crittografato locale come resolver upstream.
4. Configurare Pi-hole in modo che punti al proxy locale.
Solo dopo che il test locale ha avuto successo, sostituisci l'elenco upstream di Pi-hole con il listener locale:
Il valore utilizza il formato upstream personalizzato di Pi-hole: 127.0.0.1è l'host locale e #5053specifica la porta DNS non standard. Puoi anche inserirlo 127.0.0.1#5053in Impostazioni > DNS > Server DNS upstream personalizzati nell'interfaccia di amministrazione di Pi-hole. Deseleziona gli upstream pubblici preimpostati e salva, altrimenti Pi-hole potrebbe continuare a inviare alcune richieste direttamente a essi senza utilizzare DoH.
Verifica il percorso completo
Interroga Pi-hole stesso, utilizzando il suo indirizzo LAN al posto di PIHOLE_IP:
dig @PIHOLE_IP example.com
Verificare che la ricerca abbia esito positivo, che il registro delle query di Pi-hole mostri la richiesta del client e che lo stato del servizio o i log di dnscrypt-proxy indichino che il server upstream selezionato è raggiungibile. Il percorso risultante dovrebbe essere client-Pi-hole sulla LAN, quindi Pi-hole-al proxy localhost e infine proxy-al resolver DoH. Questo percorso crittografa la tratta server-resolver; non crittografa il normale traffico DNS tra un client e Pi-hole sulla LAN, non nasconde le query al resolver scelto e non trasforma Pi-hole in una VPN.