Questa guida descrive passo-passo come esporre DNS-over-HTTPS (DoH), DNS-over-TLS (DoT) e DNS-over-QUIC (DoQ) di AdGuard Home all'esterno della tua rete usando Nginx Proxy Manager (NPM). È pensata per essere pubblicata su una wiki tecnica e usata come riferimento per chi vuole ottenere lo stesso risultato.
Permettere l'uso del tuo server DNS (AdGuard Home) da qualsiasi posto esterno alla rete locale, usando DoH/DoT/DoQ cifrati, senza aprire la porta HTTPS standard 443 sul router. Al posto di 443 useremo una porta esterna casuale (es. 24677) che sarà inoltrata verso Nginx Proxy Manager, il quale inoltra al servizio AdGuard che ascolta su porte non standard (es. HTTPS su 444, DoT su 853, DoQ su 853).
Internet
|
|----> Router ---> :24677 TCP (port forwarding)
|
v
Nginx Proxy Manager 24677 -> 444
|
Proxy_pass --> AdGuard Home (IP interno: e.g. 192.168.1.10)
| (HTTPS:444, DoT:853)
LAN devices
Nota: tutte le richieste DoH esterne risulteranno provenienti dall'IP pubblico del server che esegue Nginx Proxy Manager (e non dall'IP del client). Questo è normale quando si usa un reverse-proxy.
sottodominio.tuodominio (A/AAAA) puntato all'IP pubblico del router/host.sottodominio.tuodominio.sottodominio.tuodominio (necessario per SNI e validazione cert).444 (esempio non standard così non confligge con GUI/router)853853sottodominio.tuodominiohttps192.168.1.10)444 (la porta HTTPS configurata in AdGuard)sottodominio.tuodominio. Abilita le seguenti opzioni:Importante: NPM ascolterà sulle porte 80/443 interne del suo container; puoi esporre NPM su una porta pubblica non standard (es. 24677) effettuando il port-forwarding dal router verso la porta 80/443 del container o usando una mappatura Docker differente.
24677 (Esempio)443 (dove NPM riceve HTTPS)https://sottodominio.tuodominio:24677/dns-querysottodominio.tuodominio:24677 (NB: DoT normalmente usa 853 su TLS, quindi alcuni client non supportano DoT su porte non standard — preferisci DoH quando usi porte non standard)Nel blocco Advanced del Proxy Host in Nginx Proxy Manager incolla lo snippet Nginx personalizzato. Se vuoi, nella wiki lascia un link o allega il file di configurazione Nginx completo che userai\
location /dns-query {
proxy_pass https://ipserverdns:444/dns-query;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 10M;
proxy_connect_timeout 5s;
proxy_read_timeout 10s;
# Se usi certificato self-signed su AdGuard, attiva questa riga:
# proxy_ssl_verify off;
}
Nota: controllare
ifin Nginx è delicato; testalo bene. In alternativa, usamapoallow/denysu base IP quando applicabile.
Questa procedura è un buon compromesso se vuoi fornire DoH pubblico senza usare la porta 443 e senza mettere il servizio DNS direttamente esposto. Tuttavia, valuta i trade-off di privacy e sicurezza e considera l'uso di VPN o autenticazione aggiuntiva per casi sensibili.
Scritto in collaborazione con correttore automatico e llm per fixare la sintassi sulla wiki (: