Contenuti

Forzare Chrome e Edge ad utilizzare il DNS locale

La situazione

Come descritto anche negli articoli riguardanti la dashboard di casa e Openhab, spesso c’è la necessità di definire un server DNS interno alla rete locale sotto il nostro controllo. Di base, per indirizzare gli utenti della rete locale ad impiegare il DNS locale basterebbe impostare correttamente l’indirizzo IP del server DNS nei parametri del DHCP server, in modo che l’informazione arrivi a tutti gli host che acquisiscono i parametri di rete.

Il problema

Da qualche tempo però assisto ad un fenomeno particolare, le richieste HTTP da un host interno alla rete ad un url interno gestito dal Server dns locale non vengono gestite all’interno della rete. Mi ritrovo la situazione strana in cui il sistema operativo usa il DNS locale, risolvendo l’indirizzo ip in maniera corretta come un indirizzo IP privato, mentre il mio browser cerca di raggiungere l’host tramite l’indirizzo IP pubblico, di fatto rimbalzando la richiesta al di fuori della rete locale. Questo provoca dei problemi ai sistemi di autenticazione che fanno uso dell’indirizzo IP mittente per determinare il grado di autenticazione.

Il mio browser (Microsoft Edge e Google Chrome) sta di fatto ignorando il dns impostato a livello di sistema operativo.

DoH - Dns Over Https

Il DNS over HTTPS (DoH) è un protocollo che combina la tradizionale risoluzione dei nomi di dominio tramite DNS, con una connessione crittografata e sicura HTTPS. L’obiettivo principale del protocollo è di aumentare la privacy dell’utente e la sicurezza prevenendo intercettazioni e manipolazioni dei dati del DNS attraverso attacchi man in the middle. In pratica, il DoH consente di proteggere le informazioni di navigazione degli utenti da eventuali tentativi di intercettazione o manipolazione da parte di terzi.

Per mantenere un buon livello di sicurezza possiamo escludere il DoH dai client di una rete locale ma continuare ad utilizzarlo sul server dns locale della rete. In questo modo il server interno raccoglie le richieste della rete e inoltre in maniera sicura solo le richieste di url non afferenti alla rete locale.

La soluzione

Disabilitare l’utilizzo del DNS Sicuro DoH

Andando nelle impostazioni del browser ho trovato la possibilità di disabilitare l’utilizzo del DNS sicuro, in quanto questa opzione costringe il browser ad impiegare uno dei server DNS pubblici tramite autenticazione SSL. Tutto bene quindi, basta questo per risolvere il problema? No.

Disabilitare il flag

A quanto pare disabilitare quell’opzione ha fatto in modo di risolvere il problema solo temporaneamente, rendendo il comportamento del browser randomico. Per risolvere del tutto il problema è necessario andare a disabilitare i flag del browser relativi alle richieste asincrone del dns.

  • Naviga su edge://flags/ o chrome://flags/
  • Disabilita la voce #use-dns-https-svcb-alpn
  • Disabilita #enable-async-dns (solo Chrome)
  • Disabilita #encrypted-client-hello (solo Chrome)
  • Riavvia il browser.

Gli altri tentativi

Ho provato di tutto, ho configurato il firewall per bloccare le richieste DNS in uscita (ad eccezione del mio server dns interno) verso la porta 54, 8053. Ma anche questo non ha funzionato.

Installazione di un server DNS DoH nella rete locale

Questo è un work in progress, sto lavorando per predisporre una configurazione di dns interno, NginxProxyManager, certificato SSL automatico e DoH DnsOverHttps o DnsOverTls. Se ti interessa l’argomento lascia un commento!