Quando si digita nel browser Web l’indirizzo di un sito Internet o comunque quando il sistema operativo o una qualunque applicazione installata provano a collegarsi a un indirizzo “mnemonico” del tipo www.google.it, viene fatto ricorso ai server DNS. Il file HOSTS presente in ogni dispositivo, indipendentemente dal sistema operativo installato, permette di superare la configurazione di qualunque server DNS e alterare il comportamento applicato nella risoluzione dei nomi di dominio.
Andiamo però per gradi e cominciamo con l’offrire alcune indicazioni sul funzionamento dei server DNS, per poi capire a cosa serve il file HOSTS.
Per capire il file HOSTS, bisogna sapere come funzionano i server DNS
Provate ad aprire il prompt dei comandi di Windows e digitare nslookup www.google.it
. Il comando consente di stabilire qual è l’indirizzo IP utile per raggiungere i servizi erogati da www.google.it. Potete ripetere l’operazione sostituendo www.google.it con l’indirizzo mnemonico di qualunque altro sito Web che siete soliti visitare.
Con il comando nslookup non avete fatto altro che interrogare il server DNS in uso (il suo indirizzo è indicato nella risposta al comando in corrispondenza delle voci Server e Address) chiedendogli a quale indirizzo IP pubblico corrisponde l’indirizzo mnemonico indicato.
È infatti l’indirizzo IP pubblico che permette al browser Web di stabilire verso quale sistema remoto deve collegarsi per raggiungere il sito specificato.
Nell’esempio, il DNS Google (ma potrebbe essere quello dell’operatore di telecomunicazioni, quello di Cloudflare, di OpenDNS,…) restituisce due indirizzi IP pubblici: un IPv6 e un IPv4. Il messaggio Risposta da un server non autorevole è del tutto corretto perché la risoluzione del nome di dominio specificato è effettuata da un server DNS che non è quello utilizzato dal gestore del sito Web indicato (server autoritativo).
Che cos’è il file HOSTS e a cosa serve
Prima di interpellare il server DNS per la risoluzione del nome di dominio, il sistema operativo verifica se la corrispondenza con il relativo indirizzo IP non sia stata precedentemente annotata nella cache locale. Prima ancora della cache locale, si prova ad attingere all’eventuale contenuto del file HOSTS.
Il file HOSTS è un file di testo presente in tutti i sistemi operativi (compresi quelli utilizzati dai dispositivi mobili) che consente di associare manualmente un indirizzo mnemonico (del tipo www.google.it) a uno specifico indirizzo IP.
Le modifiche apportate al file HOSTS sono prese in considerazione non soltanto da tutti i browser Web installati ma anche dal sistema operativo e da ciascuna applicazione in esecuzione sul dispositivo.
Se si inserisce nel file HOSTS un indirizzo IP seguito da un indirizzo mnemonico (basta separarli con uno spazio), le applicazioni installate e il sistema operativo non useranno più le informazioni specificate a livello di DNS ma daranno credito a quelle contenute nel file HOSTS stesso.
Tutte le richieste di connessione indirizzate al nome di dominio indicato, non saranno più dirette all’IP originale ma saranno indirizzate verso l’IP manualmente indicato nel file HOSTS.
La struttura del file HOSTS
Si supponga di aggiungere in fondo al file HOSTS, come ultima riga, INDIRIZZO_IP www.nomedelsito.xyz
(al posto di INDIRIZZO_IP si deve specificare l’IP del server).
Non appena si digita www.nomedelsito.xyz
nella barra degli indirizzi del browser oppure il sistema operativo (o qualunque altro programma) tentano una connessione con tale nome di dominio, non risponde più il server con indirizzo IP specificato a livello di DNS. La richiesta di caricamento del sito indicato è invece presa in carico dal server installato sulla macchina che risponde a INDIRIZZO_IP
.
La modifica applicata al contenuto del file HOSTS vale solo ed esclusivamente per il sistema locale e non per “il resto del mondo” che continuerà a collegarsi al sito Web raggiungendo l’IP e quindi la macchina definiti a livello DNS.
Quando modificare il file HOSTS
Il file HOSTS risulta particolarmente utile allorquando ci si accingesse a trasferire il proprio sito Web su un altro server. Grazie alla modifica del file HOSTS, si può verificare la perfetta funzionalità del sito Web spostato sul nuovo server, prima di applicare una modifica sui record DNS pubblici.
In altre parole, una modifica furba sul contenuto del file HOSTS permette di “deviare” tutte le richieste di connessione verso un server arbitrario, diverso da quello impostato ricorrendo ai record DNS e conosciuto da tutti i resolver pubblici.
Il file HOSTS può essere utilizzato anche per “far cadere nel vuoto” certe richieste di connessione. Sostituendo 0.0.0.0
a INDIRIZZO_IP
quindi specificando un nome a dominio, tutte le richieste di connessione dirette verso tale dominio sono ignorate. Non sono più indirizzate verso l’IP del server reale.
Utilizzando invece 127.0.0.1
come IP del server a livello di file HOSTS, le richieste di connessione verso il nome a dominio specificato a destra saranno indirizzate verso il sistema locale.
Si tratta di un meccanismo utile per caricare ad esempio un sito Web (previa installazione del Web server sulla propria macchina) facendo sì che risponda digitando un indirizzo mnemonico.
Nulla vieta di inserire anche indirizzi IP locali: se si fosse allestito un server Web all’interno della rete LAN, tutte le richieste verso www.nomedelsito.xyz
possono essere automaticamente girate verso quell’indirizzo.
Come modificare il file HOSTS
Se le finalità di utilizzo del file HOSTS sono le stesse indipendentemente dal sistema operativo utilizzato, ogni piattaforma conserva il file in una posizione diversa.
Nel caso di Windows, il file HOSTS si trova nella cartella %windir%\System32\drivers\etc
: premere Windows+R
quindi digitare tale percorso.
Sui sistemi macOS lo stesso file può essere aperto digitando sudo nano /private/etc/hosts
in una finestra del terminale. In Linux si può digitare il comando sudo nano /etc/hosts
. In entrambi i casi il file HOSTS è aperto con i diritti di root.
Per modificare il file HOSTS è necessario aprirlo con un’applicazione avviata usando i diritti di amministratore.
Aprire il file HOSTS in Windows e inserire nuove voci
Come primo passo, è necessario avviare un editor di testo come Blocco Note, TextPad o Notepad++ con i diritti di amministratore. Per procedere rapidamente, è sufficiente digitare, ad esempio, Blocco Note nella casella di ricerca del sistema operativo. È quindi necessario cliccare con il tasto destro del mouse su Blocco Note e selezionare Esegui come amministratore.
Nella finestra di dialogo che appare agendo sul menu File, Apri dell’editor di testo (sia esso il Blocco Note di Windows oppure TextPad o Notepad++), all’interno della casella Nome file, si deve digitare quanto segue quindi fare clic sul pulsante Apri:
In alternativa, si può premere Windows+R
quindi digitare notepad %windir%\system32\drivers\etc\hosts
e infine usare la combinazione di tasti CTRL+MAIUSC+INVIO
. In questo modo il file HOSTS si apre con il Blocco Note usando i diritti amministrativi.
Applicare modifiche sul contenuto del file HOSTS
A questo punto, è possibile modificare il file HOSTS tenendo però ben presente che alcuni software per la sicurezza possono bloccare tali interventi ripristinando la copia originale.
Prima di modificare il file HOSTS, quindi, il consiglio è quello di disattivare temporaneamente i software per la sicurezza in esecuzione sul sistema (rispondere Sì alla comparsa della finestra di conferma di UAC).
Microsoft Defender tende a segnalare file HOSTS che contengono direttive volte a bloccare i domini Microsoft. In questi casi, è necessario digitare Sicurezza di Windows, scegliere Protezione da virus e minacce, Gestisci impostazioni e infine definire un’esclusione per il file HOSTS.
Nel file HOSTS deve essere dapprima digitato l’indirizzo IP quindi possono essere indicati i nomi host (nomi di dominio) che devono essere fatti puntare a quell’indirizzo.
Per annullare temporaneamente l’effetto dell’aggiunta di una o più righe nel file HOSTS, è sufficiente aggiungere, come primo carattere, il cancelletto (#). In questo modo, la riga con il cancelletto come primo carattere è considerata alla stregua di un commento.
Come evidenziato in precedenza, per ciascuno degli indirizzi mnemonici o nomi host specificati, è possibile indicare un indirizzo IP remoto ma anche indirizzi locali e IP come 127.0.0.1 oppure 0.0.0.0.
Differenza tra gli indirizzi 127.0.0.1 e 0.0.0.0
L’IP 127.0.0.1 è chiamato indirizzo di loopback (localhost) e con esso in tutti i sistemi operativi viene fatto riferimento all’interfaccia di rete “fittizia” (interfaccia di loopback) che risponde alle richieste di connessione sullo stesso sistema.
L’indirizzo IP 127.0.0.1 risponde alle richieste di connessione sulla medesima macchina anche qualora non fossero presenti schede di rete fisiche.
Si provi a digitare, al prompt dei comandi di Windows, ping 127.0.0.1
: si otterrà risposta dal sistema che si sta usando.
Si pensi di aver installato un server database su una certa macchina. Alle applicazioni che necessitano di attingere al contenuto dei database memorizzati sul server locale basterà fornire l’IP 127.0.0.1. In questo modo, la connessione sarà diretta e in locale, senza passare attraverso la rete Internet o la rete LAN.
È così possibile far funzionare (ad esempio a mo’ di test) un server Web e un’applicazione Web che accede, ad esempio, ad un database locale senza neppure dover essere connessi alla rete Internet.
Usare il file HOSTS per indirizzare le richieste di connessione verso l’interfaccia di loopback
Se sulla macchina locale fosse in esecuzione un server web, si può addirittura far puntare un qualunque dominio al server web in esecuzione in locale aggiungendo nel file HOSTS, ad esempio, quanto segue:
Se, viceversa, sul sistema locale non fosse installato alcun componente server, tutte le richieste dirette al dominio www.nomedelsito.xyz
cadrebbero “nel vuoto”.
Ecco perché per bloccare tutti i tentativi di connessione diretti verso un nome a dominio e quindi uno specifico sito Web, è possibile inserire nel file HOSTS 127.0.0.1 seguito dall’indirizzo mnemonico del sito da bloccare. Per rendere il blocco ancor più efficace, è possibile sostituire l’indirizzo 0.0.0.0 all’IP di loopback 127.0.0.1.
Le richieste di connessione verso 127.0.0.1 vengono dirette alla fittizia interfaccia di loopback; nel caso dell’IP 0.0.0.0 tutte le richieste cadono nel vuoto, indipendentemente dal fatto che sulla macchina locale sia o meno in esecuzione un componente server.
Cos’è l’indirizzo IP 0.0.0.0 non routable
L’IP 0.0.0.0 è un meta-indirizzo “non routable“, che può essere utilizzato per invalidare qualunque indirizzo mnemonico. Ecco perché nei file HOSTS che tante applicazioni utilizzano per disattivare la telemetria di Windows 10 e Windows 11, si usano indirizzi 0.0.0.0 anziché 127.0.0.1.
Si provi ad esempio ad aggiungere le due righe seguenti al file HOSTS:
Tutte le pagine di Facebook non risulteranno più raggiungibili da qualunque browser installato sulla macchina.
In ambito server l’IP 0.0.0.0 sta a significare “tutti gli indirizzi IP sulla stessa macchina“. Se il sistema dispone di due interfacce di rete, l’una rispondente all’IP 192.168.1.100 e l’altra all’IP 10.1.2.10, un server posto in ascolto sull’IP 0.0.0.0 sarà raggiungibile usando entrambi gli IP. Ecco perché gli sviluppatori di browser Web stanno cominciando a bloccare le richieste verso l’IP 0.0.0.0.
Evitare che un’applicazione chiami casa
Il file HOSTS può essere utilizzato per bloccare le comunicazioni di un’app verso server remoti.
Aggiungendo 0.0.0.0 al file HOSTS, seguito dall’indirizzo mnemonico da bloccare, tutti i tentativi di connessione dell’applicazione verso il dominio indicato non andranno a buon fine.
L’utilizzo del file HOSTS è un po’ un’alternativa oltre che una misura di protezione aggiuntiva e di impiego più immediato rispetto al firewall di Windows.
Per stabilire a quanti e quali indirizzi remoti si collega un qualunque programma, è possibile usare Fiddler oppure servirsi di WireShark. Fiddler e WireShark sono entrambi sniffer di pacchetti dati che possono essere utilizzati per stabilire quali comunicazioni sono via via poste in essere sulla macchina in uso e sugli altri sistemi connessi in rete locale.
Credit immagine in apertura: iStock.com/Galeanu Mihai