Formato de / etc / hosts en Linux (¿diferente de Windows?)

22

Pegado debajo de esta pregunta hay una muestra de un /etc/hostsarchivo de una máquina Linux (CentOS) y Windows. El archivo Linux tiene dos entradas con pestañas después de la dirección IP (que es localhost.localdomain localhost) y Windows solo tiene una. Si quiero editar el archivo de hosts en Windows para tener el nombre de la máquina (etest) en lugar de localhost, simplemente reemplazo la palabra localhost con el nombre de la máquina que quiero. La máquina no necesita ser parte de un dominio.

En una máquina Linux, las dos entradas localhost.localdomainy localhostparece indicar que voy a necesitar la máquina para ser parte de un dominio. ¿Es esto cierto?

¿Puedo simplemente editar ambas entradas para etestque se lea:

127.0.0.1       etest etest

¿o es necesario que sustituya una entrada con un nombre de dominio?

Además, hágame saber para qué /etc/hostssirve la segunda línea del archivo en la máquina Linux.

::1     localhost6.localdomain6 localhost6

hosts archivo en una máquina 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 archivo en una máquina de 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
Thomas
fuente
Recientemente publiqué una pregunta similar, pero no atrajo mucho interés. unix.stackexchange.com/questions/11844/etc-hosts-for-debian . Sin embargo, este está mejor escrito.
Faheem Mitha

Respuestas:

13

Siempre desea que la dirección 127.0.0.1 se resuelva primero en localhost. Si hay un dominio, también puede usarlo, pero luego asegúrese de que localhost aparezca en segundo lugar. Si desea agregar alias para su máquina que buscará la dirección de bucle invertido, puede seguir agregándolos como valores separados por espacios en esa línea. Especificar un dominio aquí es opcional, pero no elimine "localhost" de las opciones.

Caleb
fuente
55
También ":: 1" es el equivalente de ipv6 de 127.0.0.1 (que es para ipv4).
XQYZ
¿Significa esto que sería más sabio tener una línea como esta en lugar de la que publiqué con mi pregunta? He incluido un alias separado por espacios (etest mi nombre de host) dejando el localhost.localdomain localhost intacto. De lo contrario, publique un ejemplo de lo que sugiere como la entrada ideal para incluir el nombre de host de mi máquina y tener entradas de host local en el archivo de hosts.
Thomas
1
127.0.0.1 localhost.localdomain localhost etest
Thomas
1
@Thomas: Tu ejemplo es como debería ser. Siga con eso, y si necesita agregar más alias para las pruebas (por ejemplo, con el nombre de hosts virtuales en apache), puede seguir agregándolos a la línea.
Caleb
22

El formato de /etc/hostsen Linux y Windows es el mismo:

IP address        hostname [hostalias]...

donde los corchetes son la forma habitual de indicar que algo es opcional (en realidad no los escriba) y los puntos ( ...) significan que puede haber más de uno.

No debería tener que hacer que su host forme parte de un dominio. Pruébalo y verás. Pero sería una buena idea usarlo .localdomainsi no tiene un nombre de dominio real. Puede hacer que la resolución del nombre de host sea un poco más rápida debido a la ndotsopción en /etc/resolv.conf.

Tenga en cuenta que, en este sentido, dominio significa dominio DNS (como google.como stackexchange.com), no un dominio de Windows ni nada de eso.

La línea que comienza ::1es para IPv6 . ::1es como 127.0.0.1bajo el nuevo esquema de direccionamiento. Corre ifconfig loy deberías ver que tiene dos direcciones. Tenga en cuenta la entrada que comienza 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
...

Consulte la página de comando man hosts (5) para obtener más detalles.

Mikel
fuente
(...) significa que puede haber más de uno: ¿Están los extras delimitados con espacios o comas o ambos?
Guy
1
espacios Supongo que para ser más correcto, lo es hostname [hostalias[,hostalias]*].
Mikel
6

No puedo hablar de cómo Windows puede diferir de Linux, pero el formato de la definición de la máquina local afecta los resultados que obtendrá del comando 'hostname'.

El formato que encuentro que funciona mejor consistentemente es este:

127.0.0.1 etest.mydomain.com etest localhost

Lo importante que he encontrado es tener el FQDN primero y los alias, en cualquier orden, después.

Si experimenta reorganizando los nombres después de la dirección IP y luego usando los comandos 'hostname -s' (nombre corto) y 'hostname -f' (nombre de dominio completo o FQDN) verá lo que quiero decir. Debería verse más o menos así:

$ hostname -s
etest

$ hostname -f
etest.mydomain.com

'hostname' por sí mismo debería devolver el nombre que ingresó para el host en /etc/conf.d/hostname o / etc / hostname (la ubicación del archivo varía según la distribución, pero debe encontrarse en / etc en alguna parte).

Si cambia el orden de los nombres, puede encontrar que "hostname -f" le da respuestas como "localhost" o "hostname: error del sistema". El único arreglo que he encontrado que funciona correctamente es poner el FQDN primero.

Siempre configuro la línea de dirección local IPv6 (:: 1) de la misma manera, es decir:

::1 etest.mydomain.com etest localhost

Sé que algunas distribuciones establecen el nombre de IPv6 en algo así como ip6-localhost. Realmente todavía no uso IPv6, así que no puedo comentar cuál sería la mejor configuración para esta línea. Solo puedo decir que en una red IPv4 funciona tener ambas líneas con los mismos nombres.

Angelo Babudro
fuente
0

Mantener el archivo de hosts Slaves como

127.0.0.1 localhost

Mantener el archivo de host maestro como

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

100% de trabajo

Puneet
fuente
Por favor aclare su respuesta y use el formato adecuado. No necesita poner su nombre en su respuesta.
Lambert