Il file hosts è un semplice file di testo presente in tutti i sistemi operativi. Esiste sin dagli albori della comunicazione in rete con il compito di mappare gli host (computer o altra risorsa) di una rete, associando al nome di ciascun host il relativo numero IP. Con la crescita esponenziale del Web questo compito è assolto dal servizio DNS, tuttavia il file hosts non solo è sopravvissuto ma può perfino proteggere la connessione ad Internet.
Il processo di risoluzione dei nomi
Qualunque dispositivo connesso ad una rete (computer, stampanti o altre periferiche) ha associato un numero, comunemente noto come indirizzo IP (sebbene "numero IP" sia una dicitura più precisa). Un dispositivo connesso ad una rete può comunicare con un altro dispositivo solo se conosce l'indirizzo (il numero IP) del dispositivo da raggiungere.
Il problema è che per un essere umano è difficile memorizzare numeri e/o sequenze di numeri (simili a 216.58.205.174) mentre è semplice ricordare nomi mnemonici come google.com. L'associazione tra nomi mnemonici ed indirizzi IP si chiama processo di risoluzione dei nomi di dominio ed è assolto dal servizio DNS. Senza entrare nel dettaglio (se vi interessano consultate i link a fondo pagina) basta ricordare che digitando nel un browser il nome di un sito web (un URL come google.com) il servizio DNS lo traduce nel numero IP ad esso associato (come 216.58.205.174) e, una volta ottenuto tale numero, continuerà ad usarlo per portare avanti la comunicazione con lo stesso sito.
Tutti i sistemi operativi moderni (Windows, MacOS, Unix, Linux, Android ecc.) si servono del servizio DNS per risolvere i nomi di dominio.
Esiste un altro modo per risolvere i nomi di dominio, che (in genere) ha la precedenza sul DNS: sfruttare un file speciale chiamato hosts (il nome del file è privo di estensione), raggiungibile in una cartella/directory nel file-system a seconda del sistema operativo.
Sistema Operativo | Percorso del file HOSTS nel file-system |
---|---|
Apple MacOS X | /private/etc/hosts |
Windows 10 / 8.1 e 8 / 7 / Vista / XP | c:\windows\system32\drivers\etc\hosts |
Windows NT / XP Professional (talvolta) | c:\winnt\system32\drivers\etc\hosts oppure c:\windows\system32\drivers\etc\hosts |
Windows ME / 98 / 95 / 3.1 | c:\windows\hosts |
Unix e Linux | /etc/hosts |
Le modalità di risoluzione dei nomi dipende dalle impostazioni del sistema operativo. Pressoché tutti i sistemi operativi attuali hanno come impostazione predefinita il seguente ordine di risoluzione:
- prima il file hosts: le voci (o "entrate") definite in questo file hanno la precedenza su tutti gli altri metodi di risoluzione;
- il DNS (Domain Name Server): è il sistema utilizzato su Internet. Il sistema operativo lo userà se non ha trovato corrispondenze nel file hosts;
- Netbios: si usa solo nei sistemi operativi Windows, e solo se tutti i metodi precedenti hanno fallito.
Tuttavia questo ordine di priorità può essere cambiato nelle impostazioni del sistema operativo: in Windows, per esempio, è possibile modificare alcune chiavi del registro di sistema manualmente (un metodo che può essere usato anche da alcune suite di sicurezza), oppure si può eliminare fisicamente il file hosts (cosa possibile in ogni sistema operativo).
Struttura del file hosts
Il file hosts ha le seguenti caratteristiche:
- è un semplice file di testo, modificabile con qualsiasi editor di testo ASCII, per esempio il Blocco Note di Windows;
- è un file protetto dal sistema operativo, per modificarlo occorre avere i privilegi di amministrazione (fanno eccezione i sistemi operativi dove il file-system non prevede permessi di accesso, come i vecchissimi Windows 95/98/ME);
- il file hosts inizialmente è vuoto oppure contiene una serie di righe commentate. Una riga commentata inizia con il carattere #, ciò che è scritto dopo tale carattere (e fino alla fine della riga) viene ignorato dal sistema operativo.
Esempio:
nel file hosts predefinito di Windows 10 ci sono solo commenti (tutte le righe iniziano con #).
- una riga non commentata si chiama "entrata" (entry) e costituisce un'impostazione di reindirizzamento;
- un'entrata deve contenere un numero IP e un nome di dominio, separati da almeno un carattere di spazio (o di tabulazione), ossia è nella forma
<numero-IP> <uno-o-più-spazi-o-tabulazioni> <nome-dominio>
Esempio:
12.34.56.78 www.un-certo-sito-web.org (reindirizzamento).
Nell'esempio precedente, qualunque applicazione (per es. il browser) o componente del sistema operativo che cerchi di connettersi a www.un-certo-sito-web.org, verrà automaticamente reindirizzata all'indirizzo IP 12.34.56.78. Quando una risorsa ha una corrispondenza nel file hosts, il sistema operativo NON interrogherà mai più il DNS per rintracciare tale risorsa, continuando ad usare per essa l'IP trovato in hosts (a meno che la relativa entrata non sia successivamente cancellata o disabilitata). - dopo il nome di dominio si può (opzionalmente) inserire un commento (ignorato dal sistema), che specifica cosa fa la relativa entrata;
Esempi:
0.0.0.0 www.sito-con-malware.com (entrata semplice)
127.0.0.1 miosito.org #sito locale di test (entrata più commento)
- un'entrata può essere disabilitata commentandola, ossia facendola precedere dal carattere #;
Esempio:
#216.58.205.174 www.google.com (entrata disabilitata)
- i numeri IP devono essere in standard TCP IPv4 oppure TCP IPv6 (solo se sistema operativo, modem-router e connessione ad Internet sono tutti compatibili con tale standard);
- il nome di dominio che segue un indirizzo IP non può contenere alcun elementi della comune notazione web. Per esempio, non si possono usare caratteri come \, / o notazioni come http://
- le entrate definite nel file hosts hanno effetto solo sul computer locale, non su eventuali altri dispositivi nella stessa rete;
Nella pratica, modificare il file hosts è semplicissimo: basta aggiungere nuove righe alla fine del file.
Altre informazioni utili e precauzioni da adottare
Che vogliate o meno modificarlo, ci sono altre cose da sapere riguardo al file hosts:
- se nel sistema non esiste più (per esempio se è stato cancellato per errore), è possibile ricrearlo (eventualmente vuoto) con un editor di testo e copiarlo nell'apposita cartella/directory (vedi tabella precedente);
- quando aggiungete entrate nel file hosts esse sono automaticamente attive (in genere non è necessario riavviare il computer);
- per prevenire modifiche accidentali, ricordatevi di assegnare al file hosts l'attributo di sola lettura, anche se ciò non lo metterà definitivamente al sicuro (alcuni software particolarmente malevoli, detti hijacker, possono ugualmente riuscire a modificarlo);
- è consigliabile (re)visionare periodicamente il file hosts e controllare che, tra le sue righe, non ne siano state aggiunte di nuove a nostra insaputa (per reindirizzarci automaticamente verso server/siti ostili, che distribuiscono malware o trafugano dati personali);
- per ragioni di sicurezza, occorre avere un backup del file hosts: essendo un semplice file di testo è sufficiente copiarlo (eventualmente con un altro nome) in un'altra cartella (o meglio, su un dispositivo esterno, al riparo da attacchi esterni o da malware);
- l'antivirus integrato nei sistemi operativi Windows (a partire dalla versione 10), impedisce la modifica del file HOSTS (se lo modificate al successivo riavvio Windows ripristina quello predefinito). Se volete eseguire la modifica è necessario installare un antivirus (anche gratuito) di terze parti (l'installazione di un nuovo antivirus disattiva quello integrato in Windows).
Sfruttare il file hosts
Ci sono alcne ragioni per cui talvolta è utile sfruttare il file hosts, vediamone rapidamente alcune evidenziandone pregi e difetti:
- accelerare la navigazione: mappare un IP in locale evita al sistema di ricorrere al servizio DNS e attendere la risposta. Tuttavia questo utilizzo è sconsigliato perché le controindicazioni sono maggiori dei benefici: non è garantito che l'indirizzo IP di un certo sito web sarà sempre lo stesso, poiché se il propietario del sito decidesse di cambiare indirizzo non potremmo più raggiungerlo. Le grandi organizzazioni (come Google) hanno più di un indirizzo IP numerico relativo allo stesso indirizzo mnemonico (per esempio la classica pagina di ricerca) quindi, se l'indirizzo che mappiamo in hosts enisse destinato ad altri scopi avremmo lo stesso problema.
- Test di rete: supponiamo di possedere il sito miosito.org e di averne una copia esatta su un computer di sviluppo in rete all'indirizzo sviluppo.miosito.org. Se vogliamo lavorarci su può essere conveniente mappare nel file hosts il computer di sviluppo, in modo che, quando nel browser digitiamo miosito.org verremo automaticamente reindirizzati verso sviluppo.miosito.org.
- Aggiramento della censura: se conoscete l'indirizzo IP di siti web che sono stati oscurati (senza ragione), potrete ugualmente raggiungerli aggiingendone la relativa riga nel file hosts. Biosgna però dire come l'utilizzo di servizi DNS come OpenDNS e/o GoogleDNS sia più pratico ed efficace.
- Blocco di siti ostili o sgraditi (come i network pubblicitari): è possibile evitare di collegarsi mappando TUTTI i relativi domini all'indirizzo 0.0.0.0 (o anche a 127.0.0.1), in modo che non siano più raggiungibili. Una conseguenza di ciò è che la navigazione dovrebbe essere velocizzata, perché il browser eviterà perfino il tentativo di connessione a tali domini.
L'ultimo punto necessita di una spiegazione. Esistono due numeri IP riservati che si possono usare a scopi speciali:
- 127.0.0.1 (corrisponde a ::1 in TCP/IPv6), noto anche come localhost o indirizzo di loopback e rappresenta il computer locale. Reindirizzare un dominio a questo numero equivale a rimanere sul computer locale. Se non avevte un web server installato (ed attivo) sul vostro computer, il browser vi darà in risposta una pagina di errore come "Connessione non riuscita".
- 0.0.0.0 (corrisponde a ::0 o semplicemente :: in TCP/IPv6, cioè tutti i 128 bit dell'indirizzo impostati a 0): su un computer client è una meta-indirizzo non-routable (cioè non indirizzabile) usato per indicare una destinazione non valida. NOTA BENE: 0.0.0.0 è un indirizzo valido, ma la sua interpretazione in ambito client è quella di "segnaposto per nessun indirizzo particolare". In ambito server l'interpretazione è diversa e significa "tutti gli indirizzi sulla stessa macchina".
In altri termini, per bloccare un sito ostile (o sgradito), potete aggiungere al file hosts una riga come
127.0.0.1 sito-sgradito.xyz oppure come
0.0.0.0 sito-sgradito.xyz (consigliata)
nel primo caso si tenta di connettersi al computer locale (dove ovviamente non c'è il sito sgradito!), mentre nel secondo caso la richiesta è invalidata e cade nel nulla (senza neanche tentare la connessione).
127.0.0.1 sito-sgradito.xyz oppure come
0.0.0.0 sito-sgradito.xyz (consigliata)
nel primo caso si tenta di connettersi al computer locale (dove ovviamente non c'è il sito sgradito!), mentre nel secondo caso la richiesta è invalidata e cade nel nulla (senza neanche tentare la connessione).
Volete impedire che il vostro computer sia usato per connettersi a Facebook? Vi basta aggiungere al file hosts le 2 righe seguenti:
0.0.0.0 www.facebook.com
0.0.0.0 facebook.com
e tutte le richieste di connessione al social-network cadranno nel vuoto!
0.0.0.0 facebook.com
e tutte le richieste di connessione al social-network cadranno nel vuoto!
File hosts preconfezionati
In rete esistono diversi siti che mettono a disposizione file hosts preconfezionati, per esempio https://winhelp2002.mvps.org/hosts.htm
Quando si scarica un file preconfezionato, è sempre bene fare un backup del proprio. Bisogna non solo fare attenzione all'attendibilità della fonte, ma anche controllare che la vostra navigazione proceda regolarmente. I file preconfezionati tendono ad essere voluminosi (anche alcuni megabyte), tuttavia file hosts di piccole dimensioni sono più maneggevoli per il sistema operativo. Orientativamente, un file hosts "leggero" dovrebbe mantenersi al di sotto dei 128 KiB, sebbene si ritengano accettabili dimensioni fino a 512 KiB.
Su alcuni vecchi sistemi Windows (soprattutto su computer obsoleti) file hosts troppo grandi rallentano la navigazione e l'intero sistema. Questo inconveniente può essere aggirato disabilitando il servizio Client DNS (dnscache): esso registra tutte le precedenti richieste al DNS in una memoria cache e carica nella stessa cache anche l'intero file hosts; ciò rallenta i computer con hardware obsoleto e/o quelli hanno poca memoria RAM a disposizione. Questo servizio non è necessario e può essere disabilitato, la risoluzione dei nomi di dominio avviene ugualmente, anche senza beneficiare della cache.
La virtù sta nel mezzo
Il file hosts, sebbene sembri innocuo, può essere molto utile. Dobbiamo sapere dov'è e cosa può fare, visionarlo ogni tanto per assicurarsi che non appaiano al suo interno righe non aggiunte da noi ed, eventualmente, aggiungere rihhe per bloccare siti a noi sgraditi, come gli indirizzi dei server spia, per esempio quelli legati a servizi dell'indesiderata telemetria.