Formato di / etc / hosts su Linux (diverso da Windows?)


22

Incollato di seguito questa domanda è un esempio di un /etc/hostsfile da un computer Linux (CentOS) e Windows. Il file Linux ha due voci a schede dopo l'indirizzo IP (ovvero localhost.localdomain localhost) e Windows ne ha solo una. Se voglio modificare il file hosts in Windows per avere il nome della macchina (etest) invece di localhost, sostituisco semplicemente la parola localhost con il nome della macchina che desidero. Non è necessario che la macchina faccia parte di un dominio.

In una macchina Linux, le due voci localhost.localdomaine localhostsembrano indicare che avrò bisogno che la macchina faccia parte di un dominio. È vero?

Posso semplicemente modificare entrambe le voci in etestmodo che legga:

127.0.0.1       etest etest

o è necessario sostituire una voce con un nome di dominio?

Inoltre, per favore fatemi sapere a cosa /etc/hostsserve la seconda riga del file sulla macchina Linux.

::1     localhost6.localdomain6 localhost6

hosts file su una macchina Linux:

# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1       localhost.localdomain localhost
::1     localhost6.localdomain6 localhost6

hosts file su un computer Windows:

# Copyright (c) 1993-1999 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host

127.0.0.1       localhost

Di recente ho pubblicato una domanda simile, ma non ha suscitato molto interesse. unix.stackexchange.com/questions/11844/etc-hosts-for-debian . Questo è meglio scritto, però.
Faheem Mitha,

Risposte:


13

Si desidera sempre che l'indirizzo 127.0.0.1 si risolva prima in localhost. Se esiste un dominio puoi usarlo anche tu, ma assicurati che localhost sia elencato secondo. Se si desidera aggiungere alias per il proprio computer che cercheranno l'indirizzo di loopback, è possibile continuare ad aggiungerli come valori separati da spazio su quella riga. Specificare qui un dominio è facoltativo, ma non rimuovere "localhost" dalle opzioni.


5
Anche ":: 1" è l'equivalente ipv6 di 127.0.0.1 (che è per ipv4).
XQYZ,

Questo significa che avere una linea come questa invece di quella che ho pubblicato con la mia domanda sarebbe più saggio? Ho incluso un alias separato da spazio (etest my hostname) lasciando intatto localhost.localdomain localhost. In caso contrario, pubblica un esempio di ciò che suggerisci come voce ideale per includere il nome host della mia macchina e avere voci localhost nel file hosts.
Thomas,

1
127.0.0.1 localhost.localdomain localhost etest
Thomas,

1
@Thomas: il tuo esempio è proprio come dovrebbe essere. Procedi con questo e se hai bisogno di aggiungere altri alias per i test (ad esempio con il nome di host virtuali in apache) puoi continuare ad aggiungerli alla linea.
Caleb,

22

Il formato di /etc/hostssu Linux e Windows è lo stesso:

IP address        hostname [hostalias]...

dove le parentesi sono il solito modo di indicare che qualcosa è facoltativo (in realtà non digitarli) e i punti ( ...) indicano che può essercene più di uno.

Non dovresti rendere il tuo host parte di un dominio. Provalo e vedi. Ma sarebbe una buona idea usare .localdomainse non hai un vero nome di dominio. Può rendere la risoluzione del nome host un po 'più veloce grazie ndotsall'opzione in /etc/resolv.conf.

Si noti che in questo senso dominio significa dominio DNS (come google.como stackexchange.com), non un dominio Windows o qualcosa del genere.

La riga che inizia con ::1è per IPv6 . ::1è come 127.0.0.1nel nuovo schema di indirizzamento. Esegui ifconfig loe 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.


(...) significa che può essercene più di uno: gli extra sono delimitati da spazi o virgole o da entrambi?
Guy,

1
spazi. Suppongo sia più corretto, lo è hostname [hostalias[,hostalias]*].
Mikel,

6

Non posso parlare di come Windows possa differire da Linux, ma il formato della definizione della macchina locale influenza i risultati che otterrai dal comando 'hostname'.

Il formato che trovo funziona in modo molto coerente è questo:

127.0.0.1 etest.mydomain.com etest localhost

La cosa importante che ho trovato è avere prima il nome di dominio completo e gli alias, in qualsiasi ordine, dopo di esso.

Se si sperimenta la riorganizzazione dei nomi dopo l'indirizzo IP e quindi l'utilizzo dei comandi 'hostname -s' (nome breve) e 'hostname -f' (nome di dominio completo o FQDN) vedrai cosa intendo. Dovrebbe assomigliare a qualcosa di simile a questo:

$ hostname -s
etest

$ hostname -f
etest.mydomain.com

'hostname' da solo dovrebbe restituire qualsiasi nome inserito per l'host in /etc/conf.d/hostname o / etc / hostname (la posizione del file varia in base alla 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 scoperto che funziona correttamente è mettere prima l'FQDN.

Ho sempre impostato la riga dell'indirizzo locale IPv6 (:: 1) allo stesso modo, ovvero:

::1 etest.mydomain.com etest localhost

Conosco alcune distribuzioni che 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 per avere entrambe le linee con gli stessi nomi.


0

Mantieni il file hosts di Slaves come

127.0.0.1 localhost

Mantieni il file host principale come

<private ip> master
<private ip> slave1
<private ip> slave2

100% funzionante


Si prega di chiarire la risposta e utilizzare la formattazione corretta. Non è necessario inserire il tuo nome nella risposta.
Lambert,
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.