Il file hosts è un frammento di configurazione di importanza critica sia nei sistemi operativi per PC (Windows, Linux, macOS) sia in quelli per smartphone e tablet (Android, iOS, Windows 10). In questa guida vedremo qual è la sua funzione e come modificarlo per bloccare l'accesso a determinate risorse oppure programmare siti web e app sul PC. Benvenuti ne La Grande Guida al file hosts di TurboLab.it

Grande Guida file hosts: cos'è, cosa serve come modificarlo bloccare malware pagine web indesiderate sviluppare app siti locale (Windows, Linux, Mac, Android)

File hosts: cos'è e a cosa serve

Iniziamo dicendo che hosts non ha estensione, ma è un file di testo semplice alla stregua di qualsiasi altro .txt che possiamo generare con il Blocco note.

A cosa serve il file hosts, versione breve - serve a risolvere i nomi a dominio degli host nei corrispondenti indirizzi IP, senza bisogno di contattare il server DNS.

A cosa serve il file hosts, versione completa - Per capire a cosa serva il file hosts facciamo un passo indietro e ricordiamo che, ogni volta che un PC/server/tablet/smartphone (che chiamiamo genericamente host, senza "s" finale) voglia scambiare informazioni con un altro host tramite la rete deve contattarlo tramite l'indirizzo IP associato al secondo.

Ecco dunque che quando lo smartphone deve richiedere al server di Facebook un feed (all'interno dell'app o nel browser web poco importa: il funzionamento è il medesimo) ha bisogno di sapere che Facebook risponde all'indirizzo IP 31.13.92.36. Per Google, l'IP è 172.217.23.78. Per collegarsi a Wikipedia, l'indirizzo da conoscere è 91.198.174.192.

Come evidente, digitare direttamente l'indirizzo IP dell'host da contattare sarebbe estremamente scomodo per gli utenti ed impossibile da gestire per gli operatori. Per affrontare questa problematica esistono i server DNS: un'enorme lista distribuita che risolve (ovvero: traduce) i nomi a dominio (come facebook.com, google.com o wikipedia.org) nei rispettivi indirizzi IP.

Ecco dunque che, come utente, posso usare lo smartphone per visitare facebook.com, invece di dover immettere il suo IP. Dietro le quinte, il sistema operativo richiede l'indirizzo IP di facebook.com al server DNS configurato, ed usa l'informazione ritornata per contattarlo.

» Leggi anche: I migliori server DNS alternativi per navigare velocemente e "sbloccare" i siti censurati

Il file hosts svolge esattamente la stessa funzione (associare i nomi degli altri host ai rispettivi indirizzi IP), ma direttamente sul sistema operativo locale, prima di contattare il server DNS di riferimento, e solo per gli altri host espressamente definiti.

file hosts: dove si trova

Il file hosts è sempre salvato sulla memoria persistente locale (SSD, disco fisso o NAND), ma il suo percorso esatto varia a seconda del sistema operativo:

  • Windows: C:\Windows\System32\drivers\etc\hosts
  • Linux: /etc/hosts
  • macOS: /private/etc/hosts (accessibile anche tramite il link simbolico /etc/hosts)
  • Android: /system/etc/hosts
  • iOS: /etc/hosts

aprire il file hosts come Amministratore/Root

Per aprire il file hosts possiamo usare un qualsiasi editor di testi: il Blocco note di Windows (o l'equivalente per il sistema operativo in uso) è certamente appropriato.

L'unica complicazione che dobbiamo fronteggiare riguarda i permessi. In tutte le piattaforme, la modifica di hosts è consentita solamente agli Amministratori / utenti root. Di conseguenza, dobbiamo preventivamente lanciare il nostro editor di testi con i privilegi massimi. In caso contrario, si riceverà un errore simile a Non si dispone delle autorizzazioni necessarie per salvare i dati in questo percorso

Grande Guida file hosts: cos'è, cosa serve come modificarlo bloccare malware pagine web indesiderate sviluppare app siti locale (Windows, Linux, Mac, Android)

Per quanto riguarda Windows, fare click con il pulsante destro del mouse sull'icona dell'editor scelto, poi cliccare Esegui come amministratore. Una volta avviato, seguire il menu File -> Apri e sfogliare il disco sino a raggiungere la cartella C:\Windows\System32\drivers\etc\. Da Tipo di file, scegliere Tutti i file (*.*) per visualizzare anche il nostro hosts, che potremo poi aprire come di consueto

Grande Guida file hosts: cos'è, cosa serve come modificarlo bloccare malware pagine web indesiderate sviluppare app siti locale (Windows, Linux, Mac, Android)

Su Linux e macOS svolgeremo l'operazione equivalente tramite i rispettivi editor grafici. In alternativa, possiamo sempre aprire il file da linea di comando tramite

sudo nano /etc/hosts

» Leggi anche: Guida: modificare i file di configurazione di Linux Ubuntu/CentOS da terminale è facile con "nano" (alternativa a "vi")

Grande Guida file hosts: cos'è, cosa serve come modificarlo bloccare malware pagine web indesiderate sviluppare app siti locale (Windows, Linux, Mac, Android) - Schermata del 2017-01-03 06-02-08

Sotto Android e iOS, la situazione si complica. Il file hosts è infatti modificabile solo con il rooting/jailbreaking del device:

» Leggi: Guida: come modificare il file hosts su Android

Grande Guida file hosts: cos'è, cosa serve come modificarlo bloccare malware pagine web indesiderate sviluppare app siti locale (Windows, Linux, Mac, Android) - android kernel spotlight

File hosts: che formato ha

Come ormai chiarito, il file hosts mette in corrispondenza il nome di un host con il suo indirizzo IP. Per motivi che mi risultano sconosciuti, il formato prevede che si scriva prima l'indirizzo IP, seguito da uno o più spazi (o caratteri di tabulazione (tab)), poi il nome da risolvere.

Ad esempio: per gestire tramite file hosts i siti citati in precedenza, senza bisogno di contattare il server DNS, scriveremo:

31.13.92.36 facebook.com

172.217.23.78 google.com

91.198.174.192 wikipedia.org

[questo è un esempio a fini espositivi. Svolgere concretamente questa operazione è altamente sconsigliato, poiché i siti diverrebbero inaccessibili in caso gli operatori cambiassero gli indirizzi IP dei server che rispondono!]

In caso molteplici nomi rispondano tutti al medesimo indirizzo IP possiamo esprimerli sulla stessa riga. Ad esempio:

31.13.92.36 facebook.com facebook.it facebook.eu

In ambito Windows, è possibile accodare un massimo di 9 nomi sulla stessa linea. Dal decimo in poi verranno ignorati. In caso vi fosse questa necessità, basta spezzare su più righe, ripetendo l'indirizzo IP all'inizio di ognuna.

Il file hosts funziona sia con gli indirizzi IPv4 (come quelli appena visiti), sia con quelli IPv6:

2a03:2880:2130:cf05:face:b00c::1 facebook.com

Da segnalare infine che le righe che iniziano con # sono commenti, ovvero vengono ignorate. Sfruttiamo questa libertà per:

  • annotare cose da ricordare riguardanti le righe sottostanti
  • disattivare al volo determinate righe senza bisogno di eliminarle del tutto

Attenzione: con e senza www

Un aspetto al quale prestare particolare attenzione riguarda la scrittura dei domini. Per il file hosts, i nomi miosito.com e www.miosito.com (con www iniziale) sono completamente differenti. Inserendo solo un'associazione per il primo, il secondo continuerà a "sfuggire", e viceversa. Lo stesso dicasi, ovviamente, anche per eventuali mobile.miosito.com e qualsiasi altro nome.

Per gestire questa situazione dobbiamo dunque esplicitare tutti i nomi. Scriveremo quindi:

31.13.92.36 facebook.com www.facebook.com mobile.facebook.com m.facebook.com

Sempre prestando attenzione alla limitazione dei 9 nomi per riga discussa in precedenza.

Purtroppo, l'uso del carattere jolly (*.miosito.com) non è supportato dal file hosts.

Attenzione: niente protocollo!

Un altro aspetto da ricordare è che, lavorando al file hosts, non bisogna specificare il protocollo (http://, ad esempio) nel nome. Come argomentato in precedenza, la regola si applica all'intero host, indipendentemente da come venga richiesto.

Scrivere quindi 31.13.92.36 http://facebook.com non ha alcun senso, ed è un evidente segnale che l'utente non ha capito il funzionamento del file hosts.

127.0.0.1 e 0.0.0.0: Come usare il file hosts per bloccare altri host

Uno degli scopi per i quali è possibile sfruttare il file hosts è il blocco della comunicazione verso determinati host: associando un nome ad un IP fasullo, il sistema operativo non avrà modo di scoprire il suo reale indirizzo e sarà così impossibile stabilire la comunicazione.

In particolare, si è soliti bloccare i server che erogano siti web, ed in particolare quelli che distribuiscono malware oppure mostrano la pubblicità all'interno di altre pagine.

Allo scopo, si scrivono le associazioni fra i nomi da bloccare ed uno fra due indirizzi IP "speciali":

  • 0.0.0.0: sta a significare "nessun indirizzo in particolare", ovvero, in questo contesto, "nulla", "nessuna risoluzione"
  • 127.0.0.1: è chiamato indirizzo di loopback e sta ad identificare il sistema locale medesimo. In altre parole, permette al sistema di parlare con se stesso

Nello specifico: per bloccare Facebook aggiungeremo al nostro hosts qualcosa di simile a

127.0.0.1 www.facebook.com m.facebook.com

oppure

0.0.0.0 www.facebook.com m.facebook.com

Le due opzioni sono entrambe valide, ma l'uso di 0.0.0.0 è più corretto sia dal punto di vista formale, sia perché, in caso venga configurato un server web sul PC locale, l'associazione a 127.0.0.1 fa sì che venga mostrato il sito configurato sullo stesso. In assenza di un webserver locale, l'uso di 0.0.0.0 evita invece il crearsi di qualche rallentamento nel programma che ha richiesto la risoluzione dovuto all'attesa di una risposta che, in realtà, non arriverà mai.

Bloccare pubblicità e malware

A meno di alcuni blocchi personali e specifici, non è una buona idea mantenere manualmente aggiornato il file hosts con tutti i domini spara-pubblicità e/o malware che si desidera bloccare. Allo scopo, è meglio affidarsi ad programma esterno che scarica periodicamente liste, supportate da utenti che dedicano il proprio tempo specificamente a questa attività.

Per Windows, una soluzione molto interessante è HostsMan:

» Leggi: File hosts: con HostsMan scarichi e aggiorni automaticamente le migliori liste di blocco (stop a domini malware e server pubblicitari)

Grande Guida file hosts: cos'è, cosa serve come modificarlo bloccare malware pagine web indesiderate sviluppare app siti locale (Windows, Linux, Mac, Android)

Su Linux e macOS vorremo invece usare lo script StevenBlack/hosts.

Per Android, l'app AdAway usa proprio il file hosts:

» Leggi: AdAway contro AdBlock Plus: La Grande Guida al blocco della pubblicità (ad block) su Android (root/no root)

Grande Guida file hosts: cos'è, cosa serve come modificarlo bloccare malware pagine web indesiderate sviluppare app siti locale (Windows, Linux, Mac, Android)

Per iOS, non sono a conoscenza di alcuna app per l'aggiornamento automatico del file hosts.

Come usarlo per lavorare

L'altro compito che è possibile assolvere tramite il file hosts è la risoluzione di nomi a dominio arbitrari o completamente inventati. Questo risulta estremamente comodo a programmatori e sistemisti.

Nel nostro caso, ad esempio, il dominio turbolab.it viene risolto nell'indirizzo IP del server che eroga il sito che state leggendo in questo momento. D'altra parte, i programmatori che aggiornano il codice sorgente alla base del portale devono provare il sito sul proprio PC locale per verificare che sia tutto funzionante prima di rendere disponibile al pubblico le novità. Ebbene: una soluzione può essere quella di modificare il file hosts inserendo:

127.0.0.1 turbolab.it

In questo modo, ogni tentativo di aprire http://turbolab.it tramite il browser web viene risolto nel già discusso indirizzo di loopback, contattando così il webserver in esecuzione sulla macchina locale.

Per evitare di fare confusione e rimanere liberi di decidere rapidamente se visitare il sito locale oppure quello pubblico possiamo anche pensare di inventarci un nome di fantasia, associando ad esempio:

127.0.0.1 dev.turbolab.it

Così facendo, l'apertura di http://turbolab.it continuerà a mostrarci il sito reale, mentre http://dev.turbolab.it visualizzerà l'istanza locale.

Effetti collaterali: memoria, CPU e servizio client DNS

Vale la pena di citare un paio di osservazioni che vengono spesso ripetute in rete.

La prima riguarda l'aumento della RAM consumata. Se è vero che il caricamento di tante voci occupa memoria, un file hosts da 50.000 righe si attesa attorno ai 2 MB: un "peso" semplicemente irrilevante per qualsiasi sistema ancora in circolazione.

Più problematica è la seconda. Numerosi utenti hanno segnalato il rallentamento del PC Windows (uso CPU al 100%) in seguito al caricamento di file hosts particolarmente lunghi. Per maggiori informazioni in merito:

» Leggi: [risolto] Problema Windows con file hosts molto lungo: CPU al 100%, rallenta la navigazione e il PC. Come risolvere (senza disabilitare client DNS)?

Conclusioni

In questo articolo abbiamo visto che cos'è e come modificare il file hosts, chiarito alcuni aspetti che vengono regolarmente sbagliati dai non-esperti (www e non-www oppure indicazione del protocollo) e approfondito l'uso del file hosts per bloccare pubblicità e malware.

A questo punto è naturale chiedersi se sia meglio l'uso di un file hosts oppure delle estensioni ad block. Per la nostra analisi:

» Leggi: File hosts contro estensioni ad block: qual è il metodo migliore? confronto, pro e contro delle due tecnologie

Altre idee? domande? i commenti qui sotto sono a disposizione.