Arquivo Hosts: É incorreto ter o mesmo endereço IP em várias linhas?


28

Por um tempo eu tenho formatado meu arquivo de hosts assim. Observe o mesmo ip em duas linhas:

e.f.g.h foo.mydevsite.com
e.f.g.h foo.myOtherDevSite.com

Li recentemente que os apelidos devem ser consolidados em uma linha:

e.f.g.h foo.mydevsite.com foo.myOtherDevSite.com 

No entanto, eu não gosto desse método porque você não pode comentar facilmente certos aliases ou adicionar comentários a aliases específicos, como este:

  a.b.c.d foo.mydevsite.com          # myDevSite on box 1
# a.b.c.d foo.myOtherSite.com        # myOtherSite on box 1 
  a.b.c.d ubuntuBox                  

  e.f.g.h foo.myOtherSite.com        # myOtherSite testing environment

Até agora, isso tem funcionado bem; há algum problema com isso?

Respostas:


28

Eu encontrei este tópico que discute fazer algo nesse sentido. O segmento é bastante inflexível sobre não ter várias linhas alinhando o /etc/hostsarquivo.

trecho - Re: / etc / hosts: Duas linhas com o mesmo endereço IP?

Não, não vai. Os resolvedores param na primeira resolução. Tendo algo como:

   127.0.0.1 localhost.localdomain localhost
   127.0.0.1 somenode.somedom.com somenode

Não fará o que você está falando. MAS tendo:

   127.0.0.1 somenode.somedom.com somenode
   127.0.0.1 localhost.localdomain localhost

Causará todos os tipos de estragos. Incluindo o encaminhamento.

Eu geralmente não faria o que você está tentando. Se você precisar de mais evidências, a página de manual diz para não fazer isso:

excerto man hosts

Esta página de manual descreve o formato do arquivo / etc / hosts. Este arquivo é um arquivo de texto simples que associa endereços IP a nomes de host, uma linha por endereço IP. Para cada host, uma única linha deve estar presente com as seguintes informações:

         IP_address canonical_hostname [aliases...]

Tudo isso dito, se seus nomes de host são FQDN e não se sobrepõem, provavelmente você está seguro para fazer o que está fazendo. Lembre-se de que, se houver sobreposição como a mencionada no tópico acima, você poderá resolver os problemas.


1
Não observo os efeitos observados por nenhuma das partes nesse segmento. Por exemplo, várias linhas para 127.0.0.1 não afetam a saída de hostname(contra o OP) e todas são resolvidas corretamente (contra o respondente).
Goldilocks

1
Mas o gethostbyaddr()que eles levantam é significativo. +1
goldilocks 26/11/13

Muito interessante! Eu não sabia que um arquivo de hosts era usado bidirecionalmente (obter o nome do host do ip, obter o ip do host). Isso definitivamente traz alguns problemas. Talvez eu deva procurar um processo de criação de arquivo de hosts que agarre uma versão legível por humanos e, em seguida, "corrija" concatenando aliases de host em uma linha. Deve ser um script muito fácil.
AlexMA #

1
@AlexMA - se você está achando que /etc/hostsestá causando luto, sempre pode configurar o DNS. Eu corro BIND por esse motivo exato, (1) b / c é mais fácil de gerenciar centralmente, e (2) recebo a resolução da maneira que desejo a partir daí, sem muitas dores de cabeça. Existem opções mais leves, como o DNSMasq, para fazer isso também. Esses sistemas também podem ser usados ​​em uma única caixa!
slm

@slm Isso soa como uma opção muito boa para um ambiente de produção. Provavelmente também um projeto valioso de aprendizado.
AlexMA #

5

Eu acredito que o terceiro método tem funcionado bem; há algum problema com isso?

Eu sempre fiz isso um pouco, mas há um problema em potencial, pois, de acordo com man gethostbyaddressa chamada do sistema, pode ser usado /etc/hostspara associar um endereço IP a um nome. Embora o caso muito mais comum seja o contrário (obtenha o endereço do nome), esteja ciente disso caso algo engraçado aconteça.


Como eu suspeitava, mas queria ter certeza de que não parece haver uma boa documentação. Eu também não tinha certeza se poderia haver mais problemas com algumas distribuições unix extremamente rigorosas. Em breve, darei a você o crédito da resposta, se mais ninguém concordar com uma postura diferente.
AlexMA #

Bem, slmvale a pena considerar o argumento ; talvez o sistema não fosse para ser usado dessa maneira, afinal. Vou continuar fazendo isso (nb: eu apenas uso isso para 127.0.0.1 para que eu possa transplantar e testar coisas localmente sem modificar uma configuração de host virtual), mas adicionei uma ressalva ao último parágrafo.
Goldilocks

Na verdade Eu editei este para levar em conta "um problema potencial" ...
Goldilocks

0

O Apache 2.4 se recusou a iniciar no meu sistema Unix. A causa raiz foi linhas duplicadas no / etc / hosts. Depois de remover a linha duplicada, pude iniciar o servidor da web.


4
Esta é uma informação útil, mas provavelmente deve ser um comentário e não uma resposta, de acordo com as diretrizes deste site.
AlexMA # 14/02
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.