O / etc / hosts deve conter uma entrada como '127.0.0.1 localhost myhost.example.org myhost'?

16

Ao analisar vários sistemas Linux e FreeBSD, notei que em alguns sistemas há /etc/hostsuma entrada para o nome público do host, mas não em outros sistemas.

Qual é a melhor prática aqui? Meu arquivo / etc / hosts deve conter uma entrada para o FQDN dos hosts (por exemplo, myhost.example.org) e para o nome abreviado do host (por exemplo, myhost)? O registro do FQDN deve apontar para o host local ou o IP externo da caixa?

Por exemplo, a configuração padrão em muitas caixas RHEL / EL não coloca o nome do host público em /etc/hosts:

myhost # cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
myhost #

A outra variante é que o nome abreviado do host e o FQDN também apontam para 127.0.0.1. Disseram-me que essa é uma prática mais antiga que é desaprovada atualmente, mas muitos administradores ainda fazem isso.

myhost # cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 myhost myhost.example.org
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
myhost #    

A terceira variante é que o FQDN e o nome abreviado do host recebem o endereço IP externo do host. Essa terceira variação parece ótima para mim porque reduz as pesquisas nos servidores DNS.

myhost # cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
74.125.239.xxx myhost myhost.example.org
myhost #  

Qual é a melhor prática aqui?

Stefan Lasiewski
fonte
2
ele se resume a quais apelidos os programas estão usando (por exemplo, o Mysql gosta / precisa ter um apelido 'localhost'), 127.0.0.1 localhost myhostdeve ser suficiente e, 74.125.239.xxx myhost myhost.example.orgcomo você disse, salva pesquisas de DNS. "Prática recomendada", a menos que exista um padrão, é "o que as pessoas conhecedoras usam".
LinuxDevOps 25/03

Respostas:

12

Você está disposto a aceitar o DNS em funcionamento como um ponto de falha no seu ambiente ou não. Alguns serviços / aplicativos falharão em determinadas configurações se um sistema não puder resolver o nome da máquina local.

Se você possui um serviço absolutamente crítico que deve estar em execução em todas as situações, não é incomum adicionar uma entrada no arquivo hosts para que o serviço possa continuar operando na situação em que a resolução do DNS falha.

Se você pode aceitar seu DNS como um ponto de falha ou se seus serviços não falharem no caso de uma resolução quebrada, as entradas de configuração no arquivo hosts podem ser evitadas.

Eu sugiro fortemente que você torne seus servidores DNS o mais sólido possível e, se você precisar configurar o arquivo hosts, use um sistema de gerenciamento de configuração para fazê-lo. Você realmente deve evitar manualmente evitar tocar em um arquivo de hosts.

Zoredache
fonte
13
Só para adicionar isso, na maioria dos casos /etc/hosts, o DNS será substituído, não sendo usado como fallback no caso de uma falha no DNS. Esta é uma distinção que acho que deveria ser feita. (Não está tentando escolher nit.) Tudo depende da ordem definida em /etc/nsswitch.conf.
Aaron Copley
4
A outra questão é que a consulta aos servidores DNS é muito mais lenta que a consulta ao /etc/hostsarquivo. Muitos aplicativos consultam seus nomes de host repetidamente, várias vezes por segundo. Adicionar o nome do host /etc/hostsreduzirá a latência e deve acelerar o aplicativo.
Stefan Lasiewski