File hosts: cos’è, dove si trova e come modificarlo (Windows, macOS, Linux)

File hosts: cos'è, dove si trova e come modificarlo (Windows, macOS, Linux) — Pacesoft

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

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/11C:\Windows\System32\drivers\etc\hosts
  • macOS/etc/hosts
  • Linux/etc/hosts
  • WSL/etc/hosts (separato da Windows)

Come modificarlo

Windows (Blocco note come Amministratore)

  1. Start → cerca Blocco note → clic destro → Esegui come amministratore.
  2. File → Apri → incolla C:\Windows\System32\drivers\etc\hosts (mostra “Tutti i file”).
  3. Modifica → Salva.

In alternativa: PowerShell (Admin) → notepad C:\Windows\System32\drivers\etc\hosts.

macOS

  1. Apri Terminale.
  2. sudo nano /etc/hosts (o sudo vim /etc/hosts).
  3. Inserisci la password → modifica → Ctrl+O per salvare (nano) → Ctrl+X per uscire.

Linux

  1. Apri Terminale.
  2. sudo nano /etc/hosts (o il tuo editor).
  3. 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:
    sudo dscacheutil -flushcache
    sudo killall -HUP mDNSResponder
    
    Su versioni recenti basta spesso il secondo comando.
  • Linux (dipende dal resolver):
    # systemd-resolved
    sudo resolvectl flush-caches
    
    # nscd
    sudo service nscd restart
    
  • Browser (Chrome):
    chrome://net-internals/#dns
    
    Apri la pagina e svuota la cache host.

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.com e example.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.com non è 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/hosts dentro container/WSL sono separati: modifica anche lì se serve.

Checklist

  • Backup del file originale.
  • Modifica con permessi elevati (Admin o sudo).
  • Aggiungi sia example.com sia www.example.com se necessario.
  • Flush cache DNS (sistema + browser).
  • Verifica con Resolve-DnsName / dig / getent.
  • Commenta/rimuovi le righe dopo i test.
← Torna all'elenco