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

18

Colocado abaixo desta questão é uma amostra de um arquivo /etc/hosts de um Linux (CentOS) e uma máquina Windows. O arquivo Linux tem duas entradas com guias após o endereço IP (que é localhost.localdomain localhost) e o Windows tem apenas um. Se eu quiser editar o arquivo hosts no Windows para ter o nome da máquina (etest) em vez de localhost, simplesmente substituo 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.localdomain e localhost parecem indicar que precisarei que a máquina faça parte de um domínio. Isso é verdade?

Posso simplesmente editar as duas entradas para etest , para que ele seja:

127.0.0.1       etest etest

ou é necessário que eu substitua uma entrada por um nome de domínio?

Além disso, deixe-me saber qual é a segunda linha do arquivo /etc/hosts 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
    
por Thomas 12.05.2011 / 10:35

4 respostas

12

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

    
por 12.05.2011 / 10:49
19

O formato de /etc/hosts no Linux e no Windows é o mesmo:

IP address        hostname [hostalias]...

onde os colchetes são a forma 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 deveria ter que tornar seu host parte de um domínio. Experimente e veja. Mas seria uma boa ideia usar .localdomain se você não tiver um nome de domínio real. Ele pode tornar a resolução do nome do host um pouco mais rápida devido à opção ndots em /etc/resolv.conf .

Observe que, nesse sentido, domínio significa domínio DNS (como google.com ou 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.1 no novo esquema de endereçamento. Execute ifconfig lo e você verá que ele tem dois endereços. Observe a entrada que começa 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.

    
por 12.05.2011 / 11:03
5

Eu não posso falar sobre como o Windows pode ser diferente do Linux, mas o formato da definição da máquina local afeta os resultados que você obterá do comando 'hostname'.

O formato que eu acho mais consistente é o seguinte:

127.0.0.1 etest.mydomain.com etest localhost

O que eu achei importante é 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, em seguida, usar os comandos 'hostname -s' (nome abreviado) e 'hostname -f' (nome de domínio totalmente qualificado ou FQDN), verá o que significar. Deve ser algo como isto:

$ hostname -s
etest

$ hostname -f
etest.mydomain.com

'hostname' por si só deve retornar o 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, verá que "hostname -f" fornece respostas como "localhost" ou "hostname: system error". O único arranjo que descobri que funciona corretamente é colocar o FQDN primeiro.

Eu sempre defino a linha de endereço local do IPv6 (:: 1) da mesma maneira, por exemplo:

::1 etest.mydomain.com etest localhost

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

    
por 22.08.2015 / 00:12
0

Mantenha o arquivo de hosts do Slaves como

127.0.0.1 localhost

Mantenha o arquivo host mestre como

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

100% de trabalho

    
por 28.12.2017 / 07:57

Tags