Obiettivo: capire e modificare il file hosts per forzare la risoluzione dei domini verso IP specifici. Utile per: test DNS/staging, lavoro locale, blocco siti.
Indice
- Cos’è e come funziona
- Dove si trova (Windows/macOS/Linux/WSL)
- Come modificarlo
- Esempi pronti (staging, blocco, IPv6, locale)
- Svuotare la cache DNS (flush)
- Verifiche e debug
- FAQ veloci
- Checklist
Tip: prima di modificare hosts, crea un backup del file originale.
Cos’è e come funziona
hosts è un file di testo letto dal sistema operativo durante la risoluzione dei nomi a dominio. Se una riga associa un hostname a un IP, quella mappatura ha precedenza sul DNS pubblico.
203.0.113.5 example.com
203.0.113.5 www.example.com
127.0.0.1 blocca.questo.sito
::1 ipv6.local.test
Dove si trova
- Windows 10/11 →
C:\Windows\System32\drivers\etc\hosts - macOS →
/etc/hosts - Linux →
/etc/hosts - WSL →
/etc/hosts(separato da Windows)
Come modificarlo
Windows (Blocco note come Amministratore)
- Start → cerca Blocco note → clic destro → Esegui come amministratore.
- File → Apri → incolla
C:\Windows\System32\drivers\etc\hosts(mostra “Tutti i file”). - Modifica → Salva.
In alternativa: PowerShell (Admin) → notepad C:\Windows\System32\drivers\etc\hosts.
macOS
- Apri Terminale.
sudo nano /etc/hosts(osudo vim /etc/hosts).- Inserisci la password → modifica →
Ctrl+Oper salvare (nano) →Ctrl+Xper uscire.
Linux
- Apri Terminale.
sudo nano /etc/hosts(o il tuo editor).- Salva e chiudi.
Esempi pronti
1) Forzare un dominio verso uno staging (prima del cambio DNS)
# Punta example.com allo staging (nuovo server)
198.51.100.42 example.com
198.51.100.42 www.example.com
Aprendo https://example.com dal tuo PC vedrai lo staging, mentre gli altri continueranno a vedere il sito attuale.
2) Bloccare un dominio
# Invia il dominio a localhost (non risponderà)
127.0.0.1 tracker.ecc.example
127.0.0.1 social.example
Effetto locale: vale solo sul tuo dispositivo. Per blocchi “di rete” valuta DNS filtranti o Pi-hole.
3) Test IPv6
# Forza un hostname alla loopback IPv6
::1 app.local.test
4) Ambiente locale con più host
127.0.0.1 api.local.test
127.0.0.1 web.local.test
127.0.0.1 admin.local.test
Svuotare la cache DNS (flush)
- Windows → Prompt/PowerShell:
ipconfig /flushdns - macOS:
Su versioni recenti basta spesso il secondo comando.sudo dscacheutil -flushcache sudo killall -HUP mDNSResponder - Linux (dipende dal resolver):
# systemd-resolved sudo resolvectl flush-caches # nscd sudo service nscd restart - Browser (Chrome):
Apri la pagina e svuota la cache host.chrome://net-internals/#dns
Verifiche e debug
1) Quale IP viene risolto?
- Windows (PowerShell):
Resolve-DnsName example.com - macOS/Linux:
getent hosts example.com # oppure dig +short example.com
2) Se non vedi l’effetto
- Fai il flush (sezione sopra).
- Controlla che la riga non sia commentata (
#all’inizio). - Usa spazi o tab tra IP e hostname; evita caratteri strani.
- Aggiungi tutte le varianti (
www.example.comeexample.com). - VPN/agent di sicurezza possono interferire: prova a disabilitare temporaneamente o aggiungi eccezioni.
3) Verifica di rete rapida
- Controlla che il nome host risponda dalla tua rete (test di raggiungibilità).
- Su macOS/Linux, esegui un test di instradamento verso il nome host dal Terminale.
- Su Windows, esegui il test di instradamento equivalente dallo strumento di sistema.
In alternativa, usa gli strumenti DNS (dig su macOS/Linux, Resolve-DnsName su Windows) per verificare l’IP risolto.
FAQ veloci
- Posso usare wildcard? No:
*.example.comnon è supportato. Elenca ogni hostname. - Vale per tutti gli utenti del PC? Sì, è a livello di sistema.
- È rischioso? Solo se mappi domini sensibili verso IP non fidati. Tieni un backup e commenta le righe temporanee.
- E con Docker/WSL? Gli
/etc/hostsdentro container/WSL sono separati: modifica anche lì se serve.
Checklist
- Backup del file originale.
- Modifica con permessi elevati (Admin o
sudo). - Aggiungi sia
example.comsiawww.example.comse necessario. - Flush cache DNS (sistema + browser).
- Verifica con
Resolve-DnsName/dig/getent. - Commenta/rimuovi le righe dopo i test.
