Il file hosts è un file di testo locale che permette al computer di associare manualmente un nome host, come esempio.it, a uno specifico indirizzo IP. Puoi usarlo, per esempio, per testare un sito su un nuovo server prima di modificare i DNS, raggiungere un ambiente di sviluppo con il dominio reale o verificare se un problema dipende dalla risoluzione del nome.

La modifica riguarda soltanto il dispositivo su cui intervieni: non cambia i record DNS pubblici del dominio e non richiede propagazione. Proprio per questo il file hosts è particolarmente utile durante migrazioni, test e attività di troubleshooting.

In questa guida vediamo dove si trova su Windows, macOS e Linux, come modificarlo senza alterare inutilmente i permessi di sistema e soprattutto come verificare che la nuova associazione venga effettivamente utilizzata.

File hosts: cos’è, a cosa serve e come funziona

Quando apri un sito web, il computer deve trasformare il nome che hai digitato nel browser in un indirizzo IP utilizzabile dalla rete. Normalmente entra in gioco il DNS, cioè il Domain Name System, ma il sistema operativo dispone anche di informazioni locali che possono influire sulla risoluzione del nome.

Il file hosts contiene proprio associazioni locali tra hostname e indirizzi IP.

Una voce può essere scritta così:

192.0.2.10 esempio.it

In questo caso stai dicendo al sistema che, sul tuo computer, esempio.it deve essere associato all’indirizzo 192.0.2.10.

Puoi inserire anche più hostname sulla stessa riga:

192.0.2.10 esempio.it www.esempio.it

Il primo valore è l’indirizzo IP; dopo di esso vengono indicati uno o più nomi host separati da spazi o tabulazioni.

Le righe che iniziano con # sono commenti e non vengono utilizzate per la risoluzione:

# Server di test
192.0.2.10 esempio.it www.esempio.it

Questa semplicità è uno dei motivi per cui il file è ancora utile: puoi modificare temporaneamente il modo in cui un singolo computer raggiunge un dominio senza intervenire sull’infrastruttura DNS pubblica.

File hosts e DNS: cosa cambia davvero

File hosts e DNS possono produrre apparentemente lo stesso risultato — associare un nome a un indirizzo IP — ma lavorano su livelli e con scopi diversi.

CaratteristicaFile hostsDNS pubblico
AmbitoSingolo dispositivoUtenti e resolver che interrogano il DNS
ModificaLocaleZona DNS del dominio
PropagazioneNon necessariaDipende da cache, TTL e resolver
Uso tipicoTest, sviluppo, migrazione, troubleshootingConfigurazione reale del dominio
Gestione centralizzataNo
Adatto alla produzioneSolo per casi locali specifici

Su Windows, Microsoft documenta che il client di risoluzione controlla la cache e il file Hosts prima di inviare, quando necessario, una richiesta al server DNS. Su Linux il comportamento dipende anche dalla configurazione del Name Service Switch, quindi non è corretto descrivere ogni sistema operativo come se utilizzasse esattamente la stessa sequenza.

Il concetto pratico, però, non cambia: una voce locale può fare in modo che il tuo computer raggiunga un IP diverso da quello pubblicato nel DNS.

Questo rende il file hosts molto comodo quando devi trasferire un sito. Puoi puntare il dominio al nuovo server dal tuo computer, verificare che tutto funzioni e lasciare gli utenti sul server precedente finché non sei pronto a modificare i record DNS.

Dove si trova il file hosts su Windows, Mac e Linux

Il percorso cambia in base al sistema operativo.

Sistema operativoPercorso del file hosts
Windows 11 e Windows 10C:\Windows\System32\drivers\etc\hosts
macOS/private/etc/hosts
Linux / Ubuntu/etc/hosts

Su Windows il file non ha estensione. Se lo salvi accidentalmente come hosts.txt, il sistema non utilizzerà quel nuovo file come file Hosts.

Su macOS Apple indica esplicitamente il percorso /private/etc/hosts. Su Linux, invece, il percorso normalmente utilizzato è /etc/hosts.

In tutti e tre i casi si tratta di un file di sistema: prima di modificarlo conviene conservarne una copia di sicurezza.

Come modificare il file hosts su Windows 11 e Windows 10

Su Windows il file hosts si trova in:

C:\Windows\System32\drivers\etc\hosts

La cartella è protetta, quindi la soluzione corretta non consiste nel concedere permanentemente il “Controllo completo” al proprio account. È sufficiente aprire l’editor con privilegi amministrativi.

Modificare hosts con Blocco note come amministratore

Per utilizzare Blocco note:

  1. apri il menu Start;
  2. cerca Blocco note;
  3. fai clic con il pulsante destro e scegli Esegui come amministratore;
  4. in Blocco note vai su File → Apri;
  5. raggiungi:
C:\Windows\System32\drivers\etc
  1. nel selettore dei tipi di file scegli Tutti i file;
  2. apri hosts.

Prima della modifica puoi conservarne una copia. Poi aggiungi la nuova associazione, per esempio:

192.0.2.10 esempio.it
192.0.2.10 www.esempio.it

Se vuoi raggiungere con lo stesso server sia il dominio principale sia www, devi considerare entrambi gli hostname. Una riga che contiene soltanto esempio.it non equivale automaticamente a una configurazione per www.esempio.it.

Salva infine il file mantenendo il nome:

hosts

senza .txt o altre estensioni.

Modificare il file hosts con PowerToys Hosts File Editor

Se devi modificare spesso il file, Windows dispone anche di una soluzione più comoda rispetto all’editing manuale.

Microsoft include in PowerToys un Hosts File Editor dedicato, attraverso il quale puoi aggiungere, disattivare e organizzare le associazioni senza lavorare direttamente nel file di testo.

Dopo aver installato PowerToys:

  1. apri le impostazioni di PowerToys;
  2. abilita Hosts File Editor;
  3. avvialo con i privilegi necessari;
  4. scegli New entry;
  5. inserisci l’indirizzo IP;
  6. inserisci l’hostname;
  7. aggiungi eventualmente un commento;
  8. attiva la voce e salvala.

Un vantaggio interessante è la gestione dei backup: l’editor di Microsoft può creare automaticamente una copia del file Hosts prima della sessione di modifica.

Non è necessario installare PowerToys per modificare hosts: Blocco note continua a essere sufficiente. L’editor dedicato diventa però comodo quando mantieni più mapping temporanei e vuoi attivarli o disattivarli senza intervenire manualmente sulle righe.

Come verificare la modifica su Windows

Dopo aver salvato il file, apri PowerShell e prova:

Resolve-DnsName esempio.it

Se la voce viene utilizzata correttamente, tra i risultati dovresti vedere l’indirizzo configurato nel file hosts.

Questo controllo è più significativo, in questo scenario, di nslookup. La documentazione Microsoft sul troubleshooting del client DNS mostra infatti che Resolve-DnsName può restituire direttamente l’indirizzo proveniente dal file Hosts senza inviare una query al server DNS.

Se invece esegui:

nslookup esempio.it

e ottieni l’IP pubblico del dominio, non puoi concludere automaticamente che il file hosts non funzioni: nslookup interroga il server DNS e non rappresenta necessariamente il percorso utilizzato dalle normali applicazioni del sistema.

Se sospetti che sia rimasta in memoria una vecchia risoluzione puoi svuotare la cache DNS di Windows:

ipconfig /flushdns

Nella guida dedicata trovi anche le procedure per eseguire un DNS flush sui principali sistemi operativi.

Come modificare il file hosts su macOS

Su macOS Apple utilizza il file:

/private/etc/hosts

La procedura più semplice passa dal Terminale.

Apri Finder → Applicazioni → Utility → Terminale.

Prima di modificare il file puoi creare una copia:

sudo cp /private/etc/hosts /private/etc/hosts.backup

Inserisci quindi:

sudo nano /private/etc/hosts

macOS richiederà la password del tuo account. Durante la digitazione non vedrai comparire caratteri nella finestra del Terminale: è il comportamento normale della richiesta password tramite sudo.

Aggiungi la nuova associazione:

192.0.2.10 esempio.it
192.0.2.10 www.esempio.it

Con nano:

  • Ctrl + O salva;
  • premi Invio per confermare il nome del file;
  • Ctrl + X chiude l’editor.

Questa procedura coincide con quella utilizzata da Apple per accedere e modificare il file hosts su macOS.

Come verificare la risoluzione su Mac

Puoi effettuare un controllo rapido con:

ping -c 1 esempio.it

Non concentrarti necessariamente sulla risposta ICMP: un server può bloccare i ping. Guarda innanzitutto l’indirizzo IP in cui il nome viene risolto.

Se è quello inserito nel file, il mapping locale è entrato nel percorso di risoluzione.

Puoi quindi eseguire la verifica più importante: aprire il dominio nel browser e controllare che venga raggiunto il server desiderato.

Se continui a vedere la vecchia destinazione, prova prima a:

  • chiudere e riaprire il browser;
  • controllare di aver modificato l’hostname esatto;
  • verificare la presenza di VPN, proxy o software di sicurezza;
  • riavviare il Mac se il resolver continua a mantenere informazioni precedenti.

Evito volutamente di trasformare questa procedura in una raccolta di comandi di flush specifici per vecchie versioni di macOS: il file hosts deve essere una guida stabile, mentre i dettagli del resolver possono cambiare tra release.

Come modificare /etc/hosts su Linux e Ubuntu

Su Linux il file si trova normalmente in:

/etc/hosts

Prima della modifica crea una copia:

sudo cp /etc/hosts /etc/hosts.backup

Aprilo quindi con nano:

sudo nano /etc/hosts

Aggiungi l’associazione desiderata:

192.0.2.10 esempio.it
192.0.2.10 www.esempio.it

Salva con Ctrl + O, conferma con Invio ed esci con Ctrl + X.

Questa è la parte semplice. Su Linux, però, c’è una distinzione utile da conoscere: l’ordine delle sorgenti utilizzate per risolvere i nomi non è identico in tutte le distribuzioni e configurazioni.

Puoi controllare la configurazione relativa agli host con:

grep '^hosts:' /etc/nsswitch.conf

Potresti trovare una riga simile a:

hosts: files dns

oppure una configurazione più articolata che coinvolge resolve, myhostname o altri moduli.

La presenza di files indica l’utilizzo dei file locali nel percorso gestito dal Name Service Switch. Per questo non conviene descrivere Linux con la regola semplicistica “consulta sempre /etc/hosts e poi il DNS”: la sequenza reale è configurabile.

Come verificare il file hosts su Linux

Un controllo molto utile è:

getent hosts esempio.it

getent interroga le sorgenti configurate nel Name Service Switch, quindi è particolarmente adatto per verificare quale indirizzo viene restituito dal sistema alle applicazioni che utilizzano quel meccanismo.

La pagina manuale di getent documenta proprio l’accesso ai database configurati tramite /etc/nsswitch.conf, incluso il database hosts.

Se il sistema utilizza systemd-resolved e sospetti la presenza di informazioni DNS in cache, puoi eseguire:

sudo resolvectl flush-caches

Il comando flush-caches è documentato nel manuale di resolvectl.

Non eseguirlo come passaggio obbligatorio su qualsiasi distribuzione: serve solo quando systemd-resolved è effettivamente il resolver utilizzato dal sistema. Su altre configurazioni il comando potrebbe non esistere o non avere alcun ruolo.

Esempi pratici di utilizzo del file hosts

Il motivo migliore per conoscere questo file non è modificarlo “per ottimizzare Internet”. È poter controllare temporaneamente la destinazione di un hostname durante un’attività tecnica.

Testare un sito sul nuovo server prima di cambiare i DNS

Supponiamo che esempio.it sia ancora pubblicato sul vecchio hosting, mentre sul nuovo server il sito è già stato trasferito all’IP:

192.0.2.10

I DNS pubblici continuano a indirizzare i visitatori verso il vecchio server.

Sul tuo computer puoi però inserire:

192.0.2.10 esempio.it
192.0.2.10 www.esempio.it
Schema del file hosts che permette di testare un dominio sul nuovo server mentre il DNS pubblico continua a usare il vecchio server
Durante una migrazione il file hosts consente di verificare il nuovo server con il dominio reale prima di modificare i DNS pubblici.

A questo punto puoi visitare il dominio dal tuo browser utilizzando il nome reale del sito, ma raggiungendo il nuovo server.

È una verifica molto più utile rispetto all’apertura diretta dell’indirizzo IP, perché molti server web ospitano più siti sullo stesso indirizzo e utilizzano proprio l’hostname richiesto per capire quale configurazione servire.

Per un progetto WordPress il metodo può affiancare un vero ambiente di staging, ma non va confuso con esso: modificare hosts cambia la risoluzione locale del nome, mentre uno staging è un ambiente separato pensato per eseguire test in sicurezza.

Una volta terminata la migrazione e modificati i DNS reali, rimuovi la voce temporanea. Lasciarla nel file può diventare fonte di confusione mesi dopo, quando l’IP del sito cambia nuovamente.

Collegare un hostname a un server locale

Puoi utilizzare lo stesso meccanismo in una rete di sviluppo:

192.168.1.50 progetto.test

In questo modo progetto.test verrà associato localmente al server con IP 192.168.1.50, purché anche il server web sia configurato per rispondere a quell’hostname.

Il file hosts, infatti, risolve nome → indirizzo. Non configura Apache, Nginx, IIS, il certificato HTTPS o l’applicazione ospitata sul server.

Verificare se un problema dipende dal DNS o dal server

Supponi che il dominio pubblico restituisca un IP errato, mentre conosci l’indirizzo corretto del server.

Inserisci temporaneamente il mapping nel file e prova il sito.

Se con l’override locale il sito funziona, hai ottenuto un’indicazione importante: il web server è raggiungibile e il problema può trovarsi nella configurazione DNS o nella risoluzione del nome.

Se invece il sito continua a non funzionare, devi spostare la diagnosi verso server, virtual host, firewall, applicazione, certificato o connettività.

Se il problema riguarda proprio l’infrastruttura di risoluzione e non un override volontario, la guida sull’errore server DNS non risponde affronta la diagnostica della connessione più in generale.

Bloccare temporaneamente un dominio: quali sono i limiti

È possibile associare un hostname a un indirizzo locale, per esempio:

127.0.0.1 dominio-da-bloccare.test

In questo modo il nome non raggiungerà normalmente il server remoto previsto.

Non considererei però il file hosts un vero sistema di sicurezza, parental control o filtraggio di rete. La modifica:

  • riguarda principalmente il computer interessato;
  • può essere rimossa da un utente con privilegi sufficienti;
  • richiede di conoscere gli hostname da bloccare;
  • non sostituisce firewall, DNS filtering o strumenti di controllo dedicati.

È quindi una possibilità tecnica, non il motivo principale per cui consiglierei di utilizzare il file.

La modifica del file hosts non funziona: cosa controllare

Hai aggiunto la riga, salvato il file e continui a raggiungere il vecchio server?

Prima di cambiare DNS, reinstallare programmi o modificare i permessi di sistema, controlla questi punti.

1. Su Windows hai salvato hosts.txt

È uno degli errori più comuni.

Il file deve chiamarsi:

hosts

non:

hosts.txt

In Blocco note utilizza Tutti i file quando apri o salvi il documento.

2. Non hai aperto l’editor con i privilegi necessari

Su Windows avvia Blocco note come amministratore.

Su macOS e Linux usa sudo quando apri il file protetto.

La soluzione non è concedere permanentemente permessi eccessivi al file di sistema: eleva il processo che deve effettuare la modifica.

3. La sintassi della riga è sbagliata

Una voce normale ha questa forma:

IP hostname

Per esempio:

192.0.2.10 esempio.it

Non inserire:

https://esempio.it

oppure:

esempio.it/pagina/

Il file hosts lavora con nomi host, non con URL, protocolli o percorsi.

Non puoi neppure utilizzarlo per specificare una porta:

192.0.2.10:8080 esempio.it

non è una normale associazione hosts valida.

4. Hai configurato il dominio ma non www

Questi sono due hostname distinti:

esempio.it
www.esempio.it

Se vuoi testarli entrambi, inseriscili entrambi:

192.0.2.10 esempio.it www.esempio.it

Lo stesso vale per eventuali sottodomini come:

shop.esempio.it
staging.esempio.it
api.esempio.it

Inserisci soltanto quelli che devi realmente testare.

5. Esistono più righe in conflitto

Cerca nel file tutte le occorrenze del dominio.

Evita configurazioni come:

192.0.2.10 esempio.it
192.0.2.20 esempio.it

Non affidarti all’ordine delle righe per gestire intenzionalmente due destinazioni concorrenti. Mantieni una configurazione chiara e non ambigua per il test che stai effettuando.

6. Stai controllando il risultato con lo strumento sbagliato

Su Windows:

Resolve-DnsName esempio.it

è adatto per verificare la risoluzione usata dal client.

Su Linux:

getent hosts esempio.it

segue invece il meccanismo NSS configurato dal sistema.

nslookup e dig sono ottimi strumenti per interrogare il DNS, ma proprio per questo non sono sempre il test corretto per dimostrare che un override locale del file hosts sia attivo.

La domanda che devi porti è:

Quale indirizzo sta utilizzando l’applicazione attraverso il resolver locale?

Non semplicemente:

Quale indirizzo restituisce il server DNS pubblico?

7. Il resolver è corretto ma il browser mostra ancora il vecchio sito

Se il comando di sistema restituisce l’IP nuovo ma il browser continua a mostrare la destinazione precedente, il problema non è più necessariamente il file.

Controlla:

  • cache del browser;
  • browser aperto durante la modifica;
  • proxy;
  • VPN;
  • software di sicurezza;
  • configurazioni di rete aziendali;
  • eventuali servizi che utilizzano un proprio comportamento di risoluzione o caching.

Prova anche con una nuova sessione del browser o con un’applicazione diversa.

8. Il dominio raggiunge l’IP corretto ma compare il sito sbagliato

Questo è un caso molto interessante durante le migrazioni.

Il file hosts può portarti all’indirizzo IP corretto, ma a quell’indirizzo potrebbero essere ospitati molti siti.

Il server web deve sapere che esempio.it appartiene alla configurazione che stai testando. Se il virtual host o la configurazione del sito non è corretta, potresti visualizzare:

  • la pagina predefinita del server;
  • un altro sito ospitato sullo stesso IP;
  • una pagina di errore;
  • un redirect inatteso.

In questo caso il file hosts ha già fatto il suo lavoro. Devi correggere la configurazione del server.

9. HTTPS restituisce un errore di certificato

Anche qui il mapping può essere perfettamente corretto.

Se apri:

https://esempio.it

il server di destinazione deve presentare un certificato valido per esempio.it.

Un certificato assente, scaduto o relativo a un altro hostname può produrre un errore HTTPS anche se il dominio viene risolto verso l’IP esatto che volevi testare.

Questo è anzi uno dei vantaggi del test tramite file hosts rispetto all’accesso diretto all’IP: puoi verificare il nuovo server utilizzando il vero hostname del sito e individuare prima della messa online problemi di virtual host, redirect e TLS.

10. Stai usando IPv4 e IPv6 senza controllare il risultato

Una voce può contenere un indirizzo IPv4 oppure IPv6.

Esempi:

192.0.2.10 esempio.it

oppure:

2001:db8::10 esempio.it

Se l’ambiente che stai testando utilizza entrambe le famiglie di indirizzi, verifica quale indirizzo viene effettivamente restituito dal resolver. Non aggiungere una mappatura IPv6 semplicemente “per sicurezza” se il server non è configurato per riceverla.

Come ripristinare il file hosts

Se hai eseguito diversi test e non ricordi più quali righe siano necessarie, non cancellare il file alla cieca.

Prima crea una copia dell’attuale configurazione, soprattutto su computer aziendali o macchine utilizzate per sviluppo: alcune applicazioni potrebbero dipendere da associazioni locali intenzionali.

Ripristinare hosts su Windows

Microsoft fornisce una procedura specifica per ripristinare il file Hosts su Windows 11 e Windows 10.

La procedura prevede sostanzialmente di creare un nuovo file hosts senza estensione, rinominare quello esistente e posizionare il nuovo file nella directory:

C:\Windows\System32\drivers\etc

Se hai semplicemente aggiunto una voce temporanea per una migrazione e sai esattamente quale sia, è normalmente più prudente rimuovere solo quella riga, lasciando intatto il resto della configurazione.

Ripristinare hosts su macOS e Linux da un backup

Se hai seguito le procedure precedenti puoi ripristinare la copia salvata.

Su macOS:

sudo cp /private/etc/hosts.backup /private/etc/hosts

Su Linux:

sudo cp /etc/hosts.backup /etc/hosts

Prima di sovrascrivere il file, assicurati che il backup rappresenti davvero la configurazione che vuoi recuperare.

Cosa fare se trovi voci che non hai inserito

Un file hosts modificato senza che tu ne conosca il motivo merita attenzione, soprattutto quando contiene domini di servizi conosciuti associati a indirizzi insoliti.

Non significa automaticamente che il computer sia infetto: software aziendali, ambienti di sviluppo e strumenti amministrativi possono utilizzare associazioni locali legittime.

Se però non riconosci le modifiche:

  1. conserva una copia del file;
  2. annota le righe sospette;
  3. verifica quale software può averle create;
  4. rimuovi le associazioni non necessarie;
  5. esegui i normali controlli di sicurezza del sistema.

Evita invece di trasformare il file in un oggetto permanentemente “immutabile” solo per impedirne ogni modifica: potresti interferire con strumenti legittimi e rendere più difficile la manutenzione futura.

Conclusione

Il file hosts è utile quando hai bisogno di controllare localmente la relazione tra un hostname e un indirizzo IP. Il caso più interessante per chi gestisce siti web è il test di una migrazione: puoi aprire il dominio sul nuovo server prima di cambiare i DNS per tutti gli utenti e controllare pagine, redirect, virtual host e HTTPS nella configurazione reale.

Le regole operative sono poche: crea un backup, modifica il file con i privilegi appropriati, inserisci soltanto hostname e IP necessari e verifica il risultato attraverso il resolver del sistema.

Su Windows, Resolve-DnsName evita molti falsi allarmi generati dall’uso di nslookup; su Linux getent permette di controllare il percorso NSS; su macOS il test con il dominio reale ti consente di verificare rapidamente dove sta arrivando la richiesta.

Soprattutto, ricordati di rimuovere le associazioni temporanee quando hai concluso il test. Una vecchia riga dimenticata nel file hosts può farti cercare per ore un problema DNS che, in realtà, esiste soltanto sul tuo computer.

Se stai usando questa procedura perché devi trasferire un sito WordPress e il problema non si limita alla risoluzione del dominio, un intervento di assistenza WordPress può includere anche migrazione, staging e verifica della configurazione sul nuovo server senza dover lavorare direttamente sul sito in produzione.