Incluir nome de domínio ou não no / etc / hosts?

15

Estou configurando um cluster VMWare de nós do CentOS. É uma prática recomendada incluir um nome de domínio após a máquina? Quais são os possíveis problemas de deixar de fora? Um domínio complica ou simplifica a configuração?

Por exemplo, se meu nó estiver em 192.168.1.93, devo mudar /etc/hostsde

127.0.0.1 localhost.localdomain localhost

para

127.0.0.1 localhost.cluster localhost
192.168.1.93 computernode1.cluster computenode1

ou

127.0.0.1 localhost
192.168.1.93 computenode1

ou

#127.0.0.1 localhost
192.168.1.93 computenode1

ou

192.168.1.93 localhost
192.168.1.93 computenode1
T. Webster
fonte

Respostas:

24

Colocar o nome do domínio /etc/hostsé opcional e você pode executar um sistema sem nenhum efeito prejudicial.

A única desvantagem de deixá-lo de fora é que o nome completo do host do sistema não será exibido corretamente. Por exemplo hostname -f,.

A maneira como a detecção do nome completo do host funciona:

  1. Primeiro ele obtém o nome do host ou 'nome abreviado'. Esta é a saída de uname -nou hostname.
  2. Em seguida, ele obtém o endereço IP desse nome de host consultando /etc/hosts(ou o que você tiver /etc/resolv.conf, e retornando às últimas fontes, se não for encontrado /etc/hosts).
  3. Depois de ter o IP, ele faz uma pesquisa inversa consultando novamente /etc/hosts.
  4. Depois de registrar /etc/hosts, a primeira entrada é usada como o nome completo do host.

Em poucas palavras, se você quiser que o nome completo do host funcione, faça o seguinte:

127.0.0.1 fully.qualified.hostname hostname localhost.localdomain localhost

ou

127.0.0.1 localhost.localdomain localhost
1.2.3.4 fully.qualified.hostname hostname
Patrick
fonte
1
Eu não considerei esse ponto. Ter um nome de host totalmente qualificado é inútil para um PC de mesa e pode ser problemático para um laptop (porque é provável que um laptop seja trazido em redes diferentes), mas é útil para um servidor. O Apache2, por exemplo, reclama quando não pode determinar seu FQDN.
precisa saber é o seguinte
@lgeorget Você também pode apenas usar libnss-myhostnameque cuida de resolver o FQDN, mas não precisa de uma entrada no/etc/hsots
Ulrich Dangel
A configuração acima pode causar problemas, consulte esta discussão sobre a prática atual do Debian de configurar o hostsarquivo e esta sobre o uso (ou a falta dele) da localhost.localdomainentrada.
Joó Ádám
1
sudotambém reclama se o nome do host não estiver em /etc/hosts:sudo: unable to resolve host <hostname>
x-yuri 14/10
3

Desde que seu host concorde com o seu nome de domínio, especificá-lo ou não /etc/hostsnão mudará nada. Outra prática é especificá-lo como o domainparâmetro em /etc/resolv.conf. Não especificá-lo pode simplificar sua vida se, um dia, o administrador da rede a alterar. Especificá-lo não muda nada, tanto quanto eu sei.

Você deve definitivamente deixar 127.0.0.1 localhostou 127.0.0.1 localhost localhost.localdomainem /etc/hosts. Alguns aplicativos podem começar a ter um comportamento realmente estranho e vincular- localhostse a algo diferente do seu endereço de loopback, porque essa é uma configuração realmente, realmente inesperada.

lgeorget
fonte
2

Você precisa especificar um nome de domínio totalmente qualificado na primeira posição após o endereço IP.

Como lemos em man 5 hosts:

Para cada host, uma única linha deve estar presente com as seguintes informações:

Endereço IP canonical_hostname [aliases ...]

Se não seguir a regra, algum software poderá quebrar. Por exemplo, o sistema de gerenciamento de configuração do Puppet pode começar a mudar o nome do host para frente e para trás em cada execução apenas porque você não especificou parte do domínio ou porque colocou o alias sem domínio na linha antes do FQDN.

sinapse
fonte
0

Não tenho certeza se isso é realmente "opcional" (como Patrick indicou acima). Eu finalmente encontrei um problema com as permissões do nfs revertendo para ninguém: ninguém. Parece que, para as permissões funcionarem corretamente com as montagens nfs (usando o idmapd), o nome do domínio do servidor deve corresponder exatamente ao nome do domínio do cliente. De alguns documentos que encontrei - hostname -fmenos o nome do host real deve ser idêntico entre o cliente e o servidor OU você deve especificar um nome de domínio para o cliente /etc/idmapd.conf, o que significa cada cliente.

Existe uma regra oficial sobre onde especificar o nome de domínio? O domainnamecomando não parece retirá-lo do / etc / hosts .. então colocar o / etc / hosts me incomoda, pois significa que ele está armazenado em vários locais no sistema de arquivos.

tyto
fonte