Il formato di /etc/hosts
su Linux e Windows è lo stesso:
IP address hostname [hostalias]...
dove le parentesi sono il solito modo per indicare che qualcosa è facoltativo (non scriverle effettivamente) e i punti (...
) significa che può essercene più di uno.
Non dovresti rendere il tuo host parte di un dominio. Provalo e vedrai. Ma sarebbe una buona idea usare .localdomain
se non hai un vero nome di dominio. Può rendere la risoluzione del nome host un po' più veloce grazie al ndots
opzione in /etc/resolv.conf
.
Nota che in questo senso, dominio significa dominio DNS (come google.com
o stackexchange.com
), non un dominio Windows o qualcosa del genere.
La riga che inizia con ::1
è per IPv6. ::1
è come 127.0.0.1
secondo il nuovo schema di indirizzamento. Esegui ifconfig lo
e dovresti vedere che ha due indirizzi. Nota la voce che inizia con inet6
.
$ ifconfig lo
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
...
Vedi la pagina man hosts(5) per maggiori dettagli.
Vuoi sempre che l'indirizzo 127.0.0.1 venga risolto prima in localhost. Se c'è un dominio puoi usare anche quello, ma assicurati che localhost sia elencato per secondo. Se vuoi aggiungere alias per la tua macchina che cercherà l'indirizzo di loopback, puoi continuare ad aggiungerli come valori separati da spazio su quella riga. Specificare un dominio qui è facoltativo, ma non rimuovere "localhost" dalle opzioni.
Non posso parlare di come Windows possa differire da Linux, ma il formato della definizione della macchina locale influisce sui risultati che otterrai dal comando 'hostname'.
Il formato che trovo funzioni più costantemente bene è questo:
127.0.0.1 etest.mydomain.com etest localhost
La cosa importante che ho trovato è avere prima l'FQDN e gli alias, in qualsiasi ordine, dopo.
Se provi a riorganizzare i nomi dopo l'indirizzo IP e quindi a utilizzare i comandi 'hostname -s' (nome breve) e 'hostname -f' (nome di dominio completo o FQDN), capirai cosa intendo. Dovrebbe assomigliare a questo:
$ hostname -s
etest
$ hostname -f
etest.mydomain.com
'hostname' da solo dovrebbe restituire qualsiasi nome tu abbia inserito per l'host in /etc/conf.d/hostname o /etc/hostname (la posizione del file varia a seconda della distribuzione, ma dovrebbe essere trovata sotto /etc da qualche parte).
Se cambi l'ordine dei nomi potresti scoprire che "hostname -f" ti dà risposte come "localhost" o "hostname:errore di sistema". L'unica disposizione che ho trovato che funziona correttamente è l'inserimento dell'FQDN al primo posto.
Ho sempre impostato la riga dell'indirizzo locale IPv6 (::1) allo stesso modo, ovvero:
::1 etest.mydomain.com etest localhost
So che alcune distribuzioni impostano il nome IPv6 su qualcosa come ip6-localhost. Non uso ancora IPv6, quindi non posso commentare quali sarebbero le migliori impostazioni per questa linea. Posso solo dire che in una rete IPv4 funziona avere entrambe le linee con gli stessi nomi.