Formato de / etc / hosts no Linux (diferente do Windows?)

22

Colada abaixo desta pergunta, há uma amostra de um /etc/hostsarquivo de uma máquina Linux (CentOS) e Windows. O arquivo Linux possui duas entradas com guias após o endereço IP (localhost.localdomain localhost) e o Windows possui apenas uma. Se eu quiser editar o arquivo hosts no Windows para ter o nome da máquina (etest) em vez de localhost, basta substituir a palavra localhost pelo nome da máquina que desejo. A máquina não precisa fazer parte de um domínio.

Em uma máquina Linux, as duas entradas localhost.localdomaine localhostparecem indicar que precisarei que a máquina faça parte de um domínio. Isso é verdade?

Posso simplesmente editar as duas entradas para etestque ele leia:

127.0.0.1       etest etest

ou é necessário substituir uma entrada por um nome de domínio?

Além disso, deixe-me saber para que /etc/hostsserve a segunda linha do arquivo na máquina Linux.

::1     localhost6.localdomain6 localhost6

hosts arquivo em uma 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 arquivo em uma máquina 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
fonte
Postei uma pergunta semelhante recentemente, mas ela não atraiu muito interesse. unix.stackexchange.com/questions/11844/etc-hosts-for-debian . Este é melhor escrito, no entanto.
Faheem Mitha

Respostas:

13

Você sempre deseja que o endereço 127.0.0.1 seja resolvido primeiro para o host local. Se houver um domínio, você também poderá usá-lo, mas verifique se o host local está listado em segundo. Se você deseja adicionar aliases à sua máquina que pesquisam o endereço de loopback, você pode continuar adicionando-os como valores separados por espaço nessa linha. A especificação de um domínio aqui é opcional, mas não remova "localhost" das opções.

Caleb
fonte
5
Também ":: 1" é o equivalente do ipv6 a 127.0.0.1 (que é para o ipv4).
XQYZ
Isso significa que ter uma linha como essa em vez da que eu postei com minha pergunta seria mais sábio? Eu incluí um alias separado por espaço (etest meu hostname) deixando o localhost.localdomain localhost intacto. Caso contrário, publique um exemplo do que você sugere como a entrada ideal para incluir o nome do host da minha máquina e ter entradas de host local no arquivo de hosts.
1516 Thomas
1
127.0.0.1 localhost.localdomain localhost etest
Thomas
1
@ Thomas: Seu exemplo é exatamente como deveria ser. Continue com isso e, se precisar adicionar mais aliases para teste (por exemplo, com o nome de hosts virtuais no apache), você poderá anexá-los à linha.
Caleb
22

O formato /etc/hostsno Linux e Windows é o mesmo:

IP address        hostname [hostalias]...

onde os colchetes são a maneira usual de indicar que algo é opcional (na verdade não os digita) e os pontos ( ...) significam que pode haver mais de um.

Você não precisa tornar seu host parte de um domínio. Experimente e veja. Mas seria uma boa ideia usar .localdomainse você não tiver um nome de domínio real. Ele pode fazer a resolução de nomes de host um pouco mais rápido devido à ndotsopção /etc/resolv.conf.

Observe que, nesse sentido, domínio significa domínio DNS (como google.comou stackexchange.com), não um domínio do Windows ou algo assim.

A linha que começa com ::1é para IPv6 . ::1é como 127.0.0.1no novo esquema de endereçamento. Execute ifconfig loe você verá que ele tem dois endereços. Observe a entrada começando com 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 a página do manual hosts (5) para obter mais detalhes.

Mikel
fonte
(...) significa que pode haver mais de um: os extras são delimitados por espaços, vírgulas ou ambos?
Guy
1
espaços. Suponho que seja mais correto, é hostname [hostalias[,hostalias]*].
Mikel
6

Não sei como o Windows pode diferir do Linux, mas o formato da definição da máquina local afeta os resultados que você obterá no comando 'hostname'.

O formato que eu acho que funciona de maneira mais consistente é o seguinte:

127.0.0.1 etest.mydomain.com etest localhost

O importante que eu descobri é ter o FQDN primeiro e os aliases, em qualquer ordem, depois dele.

Se você tentar reorganizar os nomes após o endereço IP e usar os comandos 'hostname-s' (nome abreviado) e 'hostname -f' (nome de domínio totalmente qualificado ou FQDN), verá o que quero dizer. Deve ser algo como isto:

$ hostname -s
etest

$ hostname -f
etest.mydomain.com

'hostname' por si só deve retornar qualquer nome que você digitou para o host em /etc/conf.d/hostname ou / etc / hostname (a localização do arquivo varia de acordo com a distribuição, mas deve ser encontrada em / etc em algum lugar).

Se você alterar a ordem dos nomes, poderá descobrir que "hostname -f" fornece respostas como "localhost" ou "hostname: system error". O único arranjo que achei que funciona corretamente é colocar o FQDN em primeiro lugar.

Eu sempre defino a linha de endereço local IPv6 (:: 1) da mesma maneira, ou seja:

::1 etest.mydomain.com etest localhost

Eu sei que algumas distribuições definem o nome do IPv6 para algo como ip6-localhost. Ainda não uso o IPv6, por isso não posso comentar quais seriam as melhores configurações para essa linha. Posso apenas dizer que em uma rede IPv4 ele trabalha para ter as duas linhas com os mesmos nomes.

Angelo Babudro
fonte
0

Mantenha o arquivo hosts do Slaves como

127.0.0.1 localhost

Mantenha o arquivo host principal como

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

100% trabalhando

Puneet
fonte
Esclareça sua resposta e use a formatação adequada. Você não precisa colocar seu nome na sua resposta.
Lambert