Il file hosts non funziona, i controlli da eseguire.

hosts-windows

I passi da seguire per verificare cosa non funziona in caso di problemi legati al file hosts ed ai DNS:

Controllare se hosts funziona o no

Le modifiche ad hosts dovrebbe essere immediatamente efficaci, ma Windows salva in cache la risoluzione dei nomi dei siti cosìcchè è meglio svuotare la cache; aprire una finestra della console command line (con i tasti Windows+R, scrivere il comando cmd e premere Invio) e scriverci:

ipconfig /flushdns

per svuotare la cache. Quindi, assumendo si abbia una riga in hosts relativa al sito www.prova.it, usare il comando:

ping www.prova.it -n 1

e verificare che l’IP mostrato corrisponda a quello indicato in hosts.

Si può anche resettare il BIOS con il comando (da darsi come amministratore o non verrà eseguito):

nbtstat -R

Per vedere cosa c’è in cache in un certo momento usare il comando:

ipconfig /displaydns | more

Fondamentali

  • Il nome del file è corretto ? Deve essere hosts e non host o altre varianti.
  • L’estensione è corretta ? Non deve averne alcuna (hosts e non hosts.txt) – assicurarsi che Windows sia configurato per mostrare le estensioni conosciute dei file, magari l’estendione c’è ma non è mostrata.
  • Le righe sono sintatticamente corrette ? Non c’è per sbaglio un #, che indica un commento, davanti alla riga in questione ?
  • Sono state indicate tutte le varianti ? Cioè www.prova.it E prova.it – è più saggio aggiungerle entrambe.

Spazi

Il formato delle righe è: Indirizzo IP, quindi un tab (\t o ASCII HT/0x09) o un singole spazio (ASCII 0x20), quindi un “CRLF” – un a carriage return seguito da un line feed, così ogni riga termina con 0x0d0a.

I singoli byte possono vedersi in Notepad++ con il plugin hex editor. Notepad++ mostra anche i caratteri speciali (View -> Show Symbol) così aiuta a ispezionare il numero e tipo di caratteri speciali.

Se hai copiato e incollato da qualche fonte possono esserci più spazi; in teoria hosts supporta anche più spazi tra le due colonne, ma è una possibilità da verificare se nient’altro funziona.

Per andare sul sicuro, verificate che le righe usino i tab o gli spazi e non entrambi.

L’ultima riga deve essere vuota.

Chiavi del Registry

Nel registry c’è una chiave che specifica dove si trova il file hosts. Immagino che Windows non supporti un file hosts messo in posizioni diverse dallo standard, però meglio controllare. La chiave è :

\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DataBasePath

ed il valore dovrebbe essere:

%SystemRoot%\System32\drivers\etc

Permessi

A volte ci sono problemi di permessi sul file, i suoi attributi, e cose simili. Il modo giusto per evitare il problema è:

  1. crea un nuovo file sul desktop.
  2. copiare e incollare il contenuto del file hosts corrente in Notepad.
  3. salvare il nuovo file di testo e rinominarlo hosts.
  4. copiare (non spostare) il file nella cartella drivers/etc, sovrascrivendo il vecchio file.

L’ultimo punto è importante: la copia funziona, lo spostamento no.

Codifica

Il file hosts deve essere codificato ANSI o UTF-8 senza BOM (Il Byte Order Mark o BOM è una piccola sequenza di byte che viene posizionata all’inizio di un file di dati di puro testo per indicarne il tipo). Si può essere sicuri che sia così con File -> Salva con nome.

Proxy

Se è configurato un proxy può bypassare il file hosts. La soluzione è non usare i proxy, o configurarlo per rispettare hosts.

Per controllare entrare in Internet Explorer -> Opzioni Internet -> Connessioni -> Impostazioni rete locale (LAN). Se è tutto vuoto ed è impostato “Rileva automaticamente le impostazioni” non state usando un proxy.

Indirizzi DNS

(Questo può anche risolvere casi di problemi legati a proxy.)

Nelle impostazioni di rete, impostazioni TCP/IP, impostate il server DNS primario a 127.0.0.1 (localhost), il secondario al vero indirizzo IP del server DNS del vostro provider.

Questo non è indispensabile per far funzionare il file hosts, ma può aiutare a capire se qualcosa è configurato in modo errato.