In questo tutorial, ti mostreremo come configurare il DNS su HTTPS (DoH) per Pi-Hole sul tuo Raspberry Pi o qualsiasi altra board simile.

Il DNS over HTTPS (DoH) è un tentativo di migliorare la sicurezza e la privacy delle richieste DNS utilizzando il protocollo HTTPS.

Per impostazione predefinita, una richiesta DNS inviata da Pi-Hole o dal tuo Raspberry Pi, viene inviata in chiaro o al più sfruttando DNS over TLS (al caso migliore). Sfortunatamente, questo significa che chiunque può intercettare questa richiesta e utilizzarla per rintracciarci o persino manipolare i dati in modo tale da farci finire sul sito web sbagliato.

L’attivazione del DNS over HTTPS (DoH) per Pi-Hole renderà queste richieste sicure tra il tuo Raspberry Pi e il provider DNS a monte.

C’è ancora però un potenziale problema: il tuo provider DNS può ancora monitorare le tue richieste, quindi assicurati di utilizzare un provider DNS affidabile. Se vuoi un’alternativa, puoi impostare NextDNS, come abbiamo spiegato nella seguente guida.

Per far funzionare il DNS-over-HTTPS su Pi-Hole, utilizzeremo il software Cloudflared sul nostro Raspberry Pi.

Prima di procedere, è necessario installare e configurare Pi-Hole sul vostro Raspberry Pi.

Requisiti

  • Raspberry Pi (dal primo modello B in su);
  • Scheda SD / Micro-SD da almeno 8 GB;
  • Connettività Internet via Ethernet / Wi-Fi.

Preparazione del tuo Raspberry Pi per DNS-over-HTTPS

Per configurare il DNS-over-HTTPS per Pi-Hole sul nostro Raspberry Pi, avremo bisogno di utilizzare il demone Cloudflared, che consente di raggiungere questo scopo. La richiesta DNS è fatta a Cloudflared, che in modo sicuro la rigira al provider DNS che hai scelto (nel nostro caso, NextDNS).

Sebbene sia stato sviluppato da Cloudflare, possiamo utilizzarlo infatti con qualsiasi altro provider di DNS-over-HTTPS.

Nei seguenti passaggi, ti mostreremo come installare Cloudflared sul tuo Raspberry Pi e configurarlo per accettare le richieste DNS-over-HTTPS da Pi-Hole.

Installazione di software richiesto

1. Il nostro primo passo è quello di assicurarci di eseguire software aggiornati.

Utilizzare i seguenti comandi concatenati per aggiornare l’elenco dei pacchetti e aggiornare eventuali pacchetti obsoleti:

sudo apt update && sudo apt upgrade -y

2. Successivamente, dobbiamo installare i pacchetticurl“” e “lsb-release” sul nostro dispositivo, utilizzando il comando sottostante.

Questi pacchetti rendono più facile scaricare e installare Cloudflared.

sudo apt install curl lsb-release

Aggiunta del repository di Cloudflare

3. Il nostro prossimo passo è aggiungere il repository ufficiale dei pacchetti di Cloudflare. Questo ci garantirà di poter facilmente aggiornare il demone cloudflared.

Prima di poter aggiungere il repository stesso, dobbiamo scaricare la chiave GPG. Questa chiave aiuta a garantire che i pacchetti che stai installando siano validi ed effettivamente provenienti da Cloudflare.

curl -L https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-archive-keyring.gpg >/dev/null

4. Ora che abbiamo salvato la chiave GPG, possiamo aggiungere il repository di Cloudflared utilizzando il seguente comando nel terminale.

echo "deb [signed-by=/usr/share/keyrings/cloudflare-archive-keyring.gpg] https://pkg.cloudflare.com/cloudflared $(lsb_release -cs) main" | sudo tee  /etc/apt/sources.list.d/cloudflared.list

5. Quando abbiamo apportato modifiche ai repository disponibili, dobbiamo aggiornare nuovamente l’elenco dei pacchetti.

Per aggiornare questo elenco, utilizzare il comando seguente.

sudo apt update

Installazione di Cloudflared e creazione di un utente

6. Tutto quello che dobbiamo fare ora per installare Cloudflared sul Raspberry Pi è eseguire il seguente comando.

sudo apt install cloudflared -y

7. Per poter utilizzare Cloudflared come proxy di richieste DNS-Over-HTTPS di Pi-Hole sul nostro Raspberry Pi, avremo bisogno di creare un utente apposito per il demone.

Utilizza il comando sottostante per creare un utente chiamato “cloudflared

  • -s“: Usiamo questa opzione per disabilitare la possibilità di utilizzare una shell, così da migliorare la sicurezza del sistema.
  • -r“: Serve invece per creare l’utente come utente di sistema.
  • -M“: Serve per far sì che il comando useradd non crei una directory home per l’utente che si sta creando.
sudo useradd -s /usr/sbin/nologin -r -M cloudflared

Configurare Cloudflared per proxare le richieste DNS-Over-HTTPS sul Raspberry Pi

8. Per configurare il DNS-Over-HTTPS per Pi-Hole sul Raspberry Pi, dobbiamo creare un servizio che eseguirà Cloudflared. Questo servizio configurerà Cloudflared in modo che funzioni come proxy DoH.

Iniziamo a creare il file di servizio utilizzando il comando sottostante:

sudo nano /etc/systemd/system/cloudflared.service

9. All’interno di questo file copia-incollamo le seguenti righe per impostare il servizio:

[Unit]
Description=Cloudflared DNS over HTTPS Proxy
After=syslog.target network-online.target

[Service]
Type=simple
User=cloudflared
ExecStart=/usr/local/bin/cloudflared proxy-dns --port 5053 --upstream https://dns.nextdns.io/<ID-del-vostro-NextDNS>
Restart=on-failure
RestartSec=10
KillMode=process

[Install]
WantedBy=multi-user.target

10. L’unica linea rilevante è quella mostrata di seguito. Qui è dove specifichiamo la chiamata al demone Cloudflared.

  • Passiamo l’opzione “proxy-dns” per dire al demone di operare come proxy per DNS-Over-HTTPS (DOH) sul nostro Raspberry Pi per Pi-Hole.
  • Successivamente, usiamo il parametro “--port” per dire a Cloudflared di mettersi in ascolto di richieste sulla porta5053
  • Infine, usiamo il parametro “--upstream” per specificare dove connettersi per le richieste DNS. Puoi avere più fonti a monte, ma per NextDNS basterà sostituire <ID-del-vostro-NextDNS> con il vostro ID fornito da loro.Nell’esempio seguente, vi mostriamo una configurazione alternativa utilizzando i server DNS-Over-HTTPS di Cloudflare: “1.1.1.1” e “1.0.0.1“. È possibile modificare questi valori in quelli forniti dal provider DNS.
ExecStart=/usr/local/bin/cloudflared proxy-dns --port 5053 --upstream https://1.1.1.1/dns-query --upstream https://1.0.0.1/dns-query

11. Una volta che hai finito di modificare il file, salva ed esci premendo CTRL+ X, seguito da Y e poi il tasto ENTER.

Avvio del servizio cloudflared per DNS-Over-HTTPS

12. Con il servizio creato, il nostro prossimo passo è abilitare l’avvio automatico del servizio, utilizzando il seguente comando:

sudo systemctl enable cloudflared

13. Quindi, avviamo il servizio Cloudflared eseguendo il comando sottostante all’interno del terminale:

sudo systemctl start cloudflared

Testare che il DNS-Over HTTPS (DoH) funzioni sul tuo Raspberry Pi

14. Prima di andare e configurare Pi-Hole su Raspberry Pi per utilizzare il DNS-Over-HTTPS, facciamo una richiesta di prova al nostro nuovo proxy.

dig @127.0.0.1 -p 5053 google.com

15. Se tutto funziona correttamente, dovresti vedere una risposta come quella qui sotto.

Questo risultato dimostra che il nostro Raspberry Pi ha effettuato con successo una richiesta DNS sicura utilizzando il nostro proxy Cloudflared.

;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19317
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;google.com.            IN  A

;; ANSWER SECTION:
google.com.     300 IN  A   216.58.209.46

;; Query time: 164 msec
;; SERVER: 127.0.0.1#5053(127.0.0.1) (UDP)
;; WHEN: Thu May 09 20:15:36 CEST 2024
;; MSG SIZE  rcvd: 55

Configurazione di Pi-Hole per utilizzare DNS-Over-HTTPS (DoH)

16. Ora che abbiamo impostato un proxy DNS-Over-HTTPS (DoH) sul Raspberry Pi, vorremo puntare Pi-Hole quest’ultimo.

Con l’interfaccia web Pi-Hole aperta nel browser Web, vai alla pagina delle impostazioni. Puoi visualizzare andando su “Settings” nella barra laterale:

Pi-Hole - voce "Settings" della dashboard

17. Con la pagina delle impostazioni aperta, modifica le impostazioni DNS effettuando un click sulla tab “DNS” (1), all’interno della barra di navigazione superiore.

Da qui si potrà impostare Pi-Hole per utilizzare il DNS-Over-HTTPS, togliamo tutti i segni di spunta sulle varie voci DNS e mettiamo il segno di spunta su “Custom 1” (2) e digitiamo “127.0.0.1#5053” nella casella (3). Assicurati che il risultato finale di quella schermata sia così:

Pi-Hole - attivazione DNS over HTTPS

Infine, una volta apportate queste modifiche alla configurazione di Pi-Hole, salviamole, scorrendo verso il basso e facendo click sul pulsante “Save” o premendo semplicemente il tasto ENTER.

È fatta! A questo punto dovrebbe comparire un messaggio pop-up (di colore celeste), che scompare entro pochi secondi, informandoci che le impostazioni sono state applicate.

Il DNS-Over-HTTPS o DoH è un modo per aiutare a migliorare la privacy delle nostre richieste DNS. Lo fa utilizzando il protocollo HTTPS per nascondere la ricerca DNS da occhi indiscreti come per esempio il tuo ISP. Inoltre, riduce significativamente la possibilità che qualcuno intercetti e modifichi la richiesta.

Se hai problemi a configurare il DNS-Over-HTTPS su Pi-Hole, lasciaci un commento di seguito, proveremo a risolverli insieme! 🙂