Includere il nome di dominio o non in / etc / hosts?


15

Sto configurando un cluster VMWare di nodi CentOS. È consigliabile includere un nome di dominio dopo la macchina? Quali sono i potenziali problemi di lasciarlo fuori? Un dominio complica la configurazione o la semplifica?

Ad esempio, se il mio nodo è in 192.168.1.93, dovrei cambiare /etc/hostsda

127.0.0.1 localhost.localdomain localhost

per

127.0.0.1 localhost.cluster localhost
192.168.1.93 computernode1.cluster computenode1

o

127.0.0.1 localhost
192.168.1.93 computenode1

o

#127.0.0.1 localhost
192.168.1.93 computenode1

o

192.168.1.93 localhost
192.168.1.93 computenode1

Risposte:


24

Inserire il nome di dominio /etc/hostsè facoltativo e puoi eseguire un sistema senza alcun effetto negativo.

L'unico aspetto negativo di lasciarlo fuori è che il nome host completo del sistema non verrà visualizzato correttamente. Ad esempio hostname -f,.

Il modo in cui funziona il rilevamento del nome host completo:

  1. Prima ottiene il nome host o "shortname". Questo è l'output di uname -no hostname.
  2. Quindi ottiene l'indirizzo IP per quel nome host consultando /etc/hosts(o qualunque cosa tu abbia /etc/resolv.conf, e tornando a queste ultime fonti se non lo trovi /etc/hosts).
  3. Una volta che ha l'IP, quindi effettua una ricerca inversa consultando nuovamente /etc/hosts.
  4. Una volta che ha un record /etc/hosts, la prima voce viene utilizzata come nome host completo.

In breve, se si desidera che il nome host completo funzioni, è necessario:

127.0.0.1 fully.qualified.hostname hostname localhost.localdomain localhost

o

127.0.0.1 localhost.localdomain localhost
1.2.3.4 fully.qualified.hostname hostname

1
Non ho considerato questo punto. Avere un nome host completo è inutile per un PC desktop e può essere problematico per un laptop (perché è probabile che un laptop venga portato in reti diverse) ma è utile per un server. Apache2, ad esempio, si lamenta quando non è in grado di determinare il suo nome di dominio completo.
Lgeorget,

@lgeorget Puoi anche usare solo quello libnss-myhostnameche si occupa di risolvere il tuo nome di dominio completo, ma non ha bisogno di una voce/etc/hsots
Ulrich Dangel,

La configurazione sopra può causare problemi, vedere questa discussione sull'attuale pratica di Debian di impostare il hostsfile e questa sull'uso (o mancanza) della localhost.localdomainvoce.
Joó Ádám,

1
sudosi lamenta anche se il nome host non è in /etc/hosts:sudo: unable to resolve host <hostname>
x-yuri

3

Fintanto che il tuo host è d'accordo con il tuo nome di dominio, specificandolo o meno in /etc/hostsnon cambierà nulla. Un'altra pratica è di averlo specificato come domainparametro in /etc/resolv.conf. Non specificarlo potrebbe semplificarti la vita se, un giorno, l'amministratore di rete lo cambia. Specificare che non cambia nulla, per quanto ne so.

Si dovrebbe lasciare 127.0.0.1 localhosto 127.0.0.1 localhost localhost.localdomainin /etc/hosts. Alcune applicazioni potrebbero iniziare ad avere un comportamento davvero strano che si localhostlega a qualcosa di diverso dal tuo indirizzo di loopback perché questa è un'impostazione davvero, davvero, inaspettata.


2

Devi specificare il nome di dominio completo nella prima posizione dopo l'indirizzo IP.

Come leggiamo in man 5 hosts:

Per ogni host dovrebbe essere presente una riga singola con le seguenti informazioni:

IP_address canonical_hostname [aliases ...]

Se non si segue la regola, alcuni software potrebbero non funzionare. Ad esempio, il sistema di gestione della configurazione Puppet potrebbe iniziare a cambiare il nome host avanti e indietro a ogni esecuzione solo perché non è stata specificata la parte del dominio o perché è stato inserito un alias senza dominio nella riga prima del nome di dominio completo.


0

Non sono sicuro che questo sia davvero "opzionale" (come Patrick ha indicato sopra). Ho finalmente rintracciato un problema con i permessi di nfs che non sono tornati a nessuno: nessuno. Sembra che le autorizzazioni funzionino correttamente con i montaggi nfs (usando idmapd), il nome di dominio del server deve corrispondere esattamente al nome di dominio del client. Da alcuni documenti che ho trovato - hostname -fmeno il nome host effettivo deve essere identico tra client e server O devi specificare un nome di dominio per il client /etc/idmapd.conf, il che significa che ogni client.

Esiste una regola ufficiale su dove specificare il nome di dominio? Il domainnamecomando non sembra prelevarlo da / etc / hosts .. quindi inserire / etc / hosts mi dà fastidio, dal momento che significa che è memorizzato in più posizioni sul filesystem ..

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.