Qual è lo scopo di / etc / hosts?


21

A quanto ho capito, il hostsfile è una delle numerose funzionalità di sistema che aiuta a indirizzare i nodi di rete in una rete di computer. Ma cosa dovrebbe esserci dentro? Quando installo Ubuntu per impostazione predefinita

127.0.0.1 localhost 

sarà là. Perché?

  • Come /etc/hostsfunziona in caso di sistemi JVM come Cassandra?
  • Quando è un'alternativa DNS, immagino non su un singolo computer?


Il mio /etc/hostscontiene 127.0.0.2 mycouchdb bookmarkdb myothercouchappe 127.0.0.3 myapachi websiteli uso per aiutarmi con il mio sviluppo in esecuzione sul mio computer locale. Ho 3 servizi in ascolto sulla porta 80. Non voglio inserirli nel DNS, poiché sono solo locali.
ctrl-alt-delor,

Ci hai provato man 5 hosts?
Ripristina Monica - M. Schröder il

Linux non ha una pagina man per questo dove è spiegata in dettaglio? Questa è la domanda più fondamentale.
Rob

Risposte:


45

Il file è /etc/hostsiniziato ai vecchi tempi di DARPA come file di risoluzione per tutti gli host connessi a Internet (prima che esistesse il DNS). Ha la massima priorità, il che significa che questo file è preferito rispetto a qualsiasi altro sistema di nomi. 1

Tuttavia, come singolo file, non si adatta bene: la dimensione del file diventa troppo grande molto presto. Ecco perché è stato sviluppato il sistema DNS, un sistema di nomi distribuito gerarchico. Consente a qualsiasi host di trovare in modo efficiente l'indirizzo numerico di qualche altro host.

Il concetto molto vecchio del /etc/hostsfile è molto semplice, solo un indirizzo e un nome host:

127.0.0.1      localhost

per ogni riga. Questo è un semplice elenco di coppie di indirizzo-host. 2

Il suo utilizzo principale attuale è quello di bypassare la risoluzione DNS. Una corrispondenza trovata nel /etc/hostsfile verrà utilizzata prima di qualsiasi voce DNS. Infatti, se il nome cercato (come localhost) viene trovato nel file, non verrà eseguita alcuna risoluzione DNS.


1 Bene, l'ordine di risoluzione dei nomi è effettivamente definito in /etc/nsswitch.conf, che di solito ha questa voce:

hosts:          files dns

che significa "prova files ( /etc/hosts); e se fallisce, prova DNS".

Ma quell'ordine potrebbe essere modificato o ampliato.


2 (ai giorni nostri) Il file hosts contiene righe di testo costituite da un indirizzo IP nel primo campo di testo seguito da uno o più nomi host. Ogni campo è separato da uno spazio bianco: le schede sono spesso preferite per motivi storici, ma vengono utilizzati anche gli spazi. Le righe di commento possono essere incluse; sono indicati da un ottotorpe (#) nella prima posizione di tali linee. Le righe completamente vuote nel file vengono ignorate. Ad esempio, un tipico file host può contenere quanto segue:

127.0.0.1   localhost loopback
::1         localhost localhost6 ipv6-localhost ipv6-loopback mycomputer.local
192.168.0.8 mycomputer.lan
10.0.0.27   mycomputer.lan

Questo esempio contiene voci per gli indirizzi di loopback del sistema e i loro nomi host, la prima riga è un tipico contenuto predefinito del file hosts. La seconda riga ha diversi nomi aggiuntivi (probabilmente validi solo nei sistemi locali). L'esempio mostra che un indirizzo IP può avere più nomi host (localhost e loopback) e che un nome host può essere mappato su indirizzi IP sia IPv4 che IPv6, come mostrato rispettivamente sulla prima e seconda riga. Un nome ( mycomputer.lan) può essere risolto in più indirizzi ( 192.168.0.8 10.0.0.27). Tuttavia, in tal caso, quale viene utilizzato dipende dalle route (e dalle relative priorità) impostate per il computer.

Alcuni sistemi operativi precedenti non avevano modo di segnalare un elenco di indirizzi per un determinato nome.


5

L'uso del file / etc / hosts per assegnare un nome leggibile a un sistema locale in un ambiente desktop è perfettamente ragionevole. Il file hosts è ottimo da usare in una rete domestica o anche in un ambiente di piccole imprese. Questo non può essere lato pubblico come l'indirizzamento di Internet, quindi è necessario il DNS. Se la rete locale è abbastanza grande, o semplicemente tagliata in diverse sottoreti o per qualsiasi altro motivo utile, si preferisce il DNS.

Il file host locale e DNS sono gestiti con priorità diversa, quindi non ci sono mai conflitti.


4
Non sarei in disaccordo sui conflitti, ho avuto un certo numero di problemi difficili da eseguire il debug perché l'host-provision-by-group-A ha lasciato /etc/hostsvoci obsolete che in futuro hanno causato il fallimento delle operazioni per gruppo-B (il mio gruppo) , e abbiamo finito per impostare qualcosa per disinfettare il contenuto di/etc/hosts
thrig

conflitti all'interno del file possono esistere naturalmente ma è colpa propria del proprietario della macchina :)
francois P

2
Sono anche in disaccordo con il non avere mai conflitti. Ho dovuto eseguire il debug di errori molto strani a causa di voci host obsolete in conflitto con le modifiche DNS.
Rui F Ribeiro,

@thrig: Forse il problema è che i tuoi gruppi sono troppo grandi per usare / etc / hosts in modo efficace. Funziona perfettamente per le 5 macchine (al momento) sulla mia rete domestica.
jamesqf,

Beh, il sistema non pensa che ci sia un conflitto, ha chiare istruzioni sulla priorità delle cose: p
StarWeaver,

3

in linux, oserei dire che dovrebbe sempre esserci almeno 127.0.0.1 localhostall'interno del file /etc/hosts e l'indirizzo IPv6 corrispondente per localhost .

È semplicemente la risoluzione del nome host su un indirizzo numerico IPv4 o IPv6. Quando provi a collegarti a (a) unix.stackexchange.com da qualche parte sulla terra che probabilmente non è vicino a te, o (b) myotherpc sulla rete locale nella tua casa, è uno /etc/hostso alcuni server dei nomi di dominio (DNS) che sta eseguendo la risoluzione dell'host, quindi quando si digita unix.stackexchage.com che come umano è ciò che ti interessa, non devi ricordare 185.53.179.7 per questo, che è ciò che il computer ha davvero bisogno di sapere.

Come è stato sottolineato, in Linux c'è in /etc/nsswitchgenere che definisce l'ordine di risoluzione del nome host, il che significa controllare DNS prima di controllare NIS, quindi controllare il file /etc/hostsaltrimenti l' host non viene trovato

Come gestisci il controllo degli ordini e cosa / dove / chi gestisce il servizio DNS o NIS dipende da te, oppure puoi ignorare tutto modificando / etc / nsswitch per effettuare il check-in /etc/hostse non verificare mai con DNS o NIS o ...

Per una semplice rete domestica di pochi computer, diciamo da 2 a N, un amministratore dovrebbe semplicemente modificare /etc/hostssu ogni computer per essere corretto, sarebbe più facile, più veloce, più economico della configurazione di un Domain Name Server o di qualche altro servizio per avere una posizione principale o autorità per fare la risoluzione del nome host all'indirizzo IP.

per web linux cerca la storia e la ragione dietro localhost. Molte cose in Linux dipendono dal nome localhost che si risolve in 127.0.0.1 e se ciò non accade causerà problemi, e questa definizione di localhost dovrebbe / dovrebbe accadere in un file di sistema locale come / etc / hosts.

/etc/hostsdi solito è l'ultima parola e l'ultima cosa su cui il sistema operativo Linux deve ricorrere per la risoluzione del nome host. in Windows XP e 7 il file corrispondente è C:\Windows\System32\drivers\etc\lmhosts che non conosco Windows 8 o 10.


Un uso tipico del file hosts, in particolare in Windows, è di deviare il tentativo di un programma di "chiamare home" su un dispositivo null. Lungi da me suggerire che questo potrebbe essere per contrastare un controllo di legalità.
Laurence Payne,

Non ho ancora trovato l'editor sul mio iPhone che mi consente di modificare / etc / hosts ... quindi
eseguo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.