File host: non è corretto avere lo stesso indirizzo IP su più righe?


28

Per un po 'ho formattato il mio file hosts in questo modo. Notare lo stesso ip su due righe:

e.f.g.h foo.mydevsite.com
e.f.g.h foo.myOtherDevSite.com

Ho letto di recente che gli alias dovrebbero essere consolidati su una riga:

e.f.g.h foo.mydevsite.com foo.myOtherDevSite.com 

Tuttavia, questo metodo non mi piace perché non puoi facilmente commentare determinati alias o aggiungere commenti a determinati alias, in questo modo:

  a.b.c.d foo.mydevsite.com          # myDevSite on box 1
# a.b.c.d foo.myOtherSite.com        # myOtherSite on box 1 
  a.b.c.d ubuntuBox                  

  e.f.g.h foo.myOtherSite.com        # myOtherSite testing environment

Finora questo ha funzionato bene; c'è un problema con questo?

Risposte:


28

Ho trovato questo thread che discute di fare qualcosa in questo senso. Il thread è piuttosto irremovibile sul non avere più righe sul /etc/hostsfile.

estratto - Ri: / etc / hosts: due righe con lo stesso indirizzo IP?

No, non lo farà. I resolver si fermano alla prima risoluzione. Avere qualcosa di simile:

   127.0.0.1 localhost.localdomain localhost
   127.0.0.1 somenode.somedom.com somenode

Non farà ciò di cui stai parlando. MA avendo:

   127.0.0.1 somenode.somedom.com somenode
   127.0.0.1 localhost.localdomain localhost

Causerà ogni tipo di caos. Compreso l'inoltro.

In genere non farei ciò che stai tentando. Se hai bisogno di ulteriori prove, la pagina man dice anche di non farlo:

estratto man hosts

Questa pagina di manuale descrive il formato del file / etc / hosts. Questo file è un semplice file di testo che associa gli indirizzi IP ai nomi host, una riga per indirizzo IP. Per ogni host dovrebbe essere presente una riga singola con le seguenti informazioni:

         IP_address canonical_hostname [aliases...]

Detto questo, se i tuoi nomi host sono FQDN e non si sovrappongono, probabilmente sei sicuro di fare quello che stai facendo. Tieni presente che se si verifica una sovrapposizione come quella menzionata nel thread sopra, potresti riscontrare problemi di risoluzione.


1
Non osservo gli effetti rilevati da entrambe le parti in quel thread. Ad esempio, più righe per 127.0.0.1 non influiscono sull'output di hostname(contro l'OP) e tutte si risolvono correttamente (contro il rispondente).
Riccioli d'oro

1
Ma la gethostbyaddr()cosa che sollevano è significativa. +1
riccioli d'oro,

Molto interessante! Non mi ero reso conto che un file host fosse usato in modo bidirezionale (ottieni il nome host dall'ip, ottieni l'ip dal nome host). Questo sicuramente solleva alcuni problemi. Forse dovrei esaminare un processo di compilazione di file hosts che prende una versione leggibile dall'uomo e poi "corregge" concatenando alias host su una riga. Dovrebbe essere una sceneggiatura molto semplice.
AlexMA,

1
@AlexMA - se trovi che ti /etc/hostssta causando dolore puoi sempre impostare il DNS. Corro BIND per questo motivo esatto, (1) b / c è più facile da gestire centralmente, e (2) ottengo la risoluzione come voglio da lì senza molti mal di testa. Ci sono anche opzioni più leggere come DNSMasq. Questi sistemi possono essere utilizzati anche su una singola scatola!
slm

@slm Sembra un'ottima opzione per un ambiente di produzione. Probabilmente anche un prezioso progetto di apprendimento.
AlexMA,

5

Credo che il terzo metodo abbia funzionato bene; c'è un problema con questo?

L'ho sempre fatto un po ', ma c'è un potenziale problema poiché secondo man gethostbyaddrquella chiamata di sistema potrebbe essere utile /etc/hostsassociare un indirizzo IP a un nome. Anche se il caso molto più comune è il contrario (ottenere l'indirizzo dal nome), sii consapevole di questo nel caso in cui accada qualcosa di divertente.


Come sospettavo, ma volevo essere sicuro che non ci fosse un'ottima documentazione in merito. Non ero anche sicuro che potessero esserci più problemi con alcune distribuzioni unix extra-rigide. Ti darò presto una risposta se nessun altro entra in contatto con una posizione diversa.
AlexMA,

Bene, slmvale la pena considerare il punto ; forse il sistema non doveva essere utilizzato in questo modo dopo tutto. Continuerò a farlo (nb lo uso principalmente per 127.0.0.1 in modo da poter trapiantare e testare le cose localmente senza modificare una configurazione dell'host virtuale), ma ho aggiunto un avvertimento all'ultimo paragrafo.
Riccioli d'oro

In effetti l'ho modificato per tener conto di "un potenziale problema" ...
goldilocks,

0

Apache 2.4 ha rifiutato di avviarsi sul mio sistema Unix. La causa principale erano le righe duplicate in / etc / hosts. Dopo aver rimosso la linea duplicata sono stato in grado di avviare il web server.


4
Queste sono informazioni utili, ma probabilmente dovrebbero essere un commento piuttosto che una risposta secondo le linee guida di questo sito.
AlexMA,
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.