Por que meu nome de host aparece com o endereço 127.0.1.1 em vez de 127.0.0.1 em / etc / hosts?

205

Esta pode ser uma pergunta pouco noobish, mas eu estava dando uma olhada no / etc / hosts na minha nova instalação do Xubuntu e vi isso:

127.0.0.1 localhost
127.0.1.1 myhostname

Na maioria dos nixes que usei, a segunda linha é omitida e, se eu quiser adicionar meu nome de host ao arquivo de hosts, basta fazer o seguinte:

127.0.0.1 localhost myhostname

Existe alguma diferença entre esses dois arquivos em algum sentido prático?

Tom
fonte
Gostaria de saber apenas excluir a segunda linha ou algum processo no debian / ubuntu regenerará a linha e a adicionará novamente?
simgineer

Respostas:

159

Não há muita diferença entre os dois; 127/8(por exemplo: 127.0.0.0=> 127.255.255.255) estão todos ligados à interface de loopback.

A razão pela qual está documentada no manual Debian no cap. 5 Configuração de rede - 5.1.1. A resolução do nome do host .

Por fim, é uma solução alternativa de erro; o relatório original é 316099 .

Daniel Pittman
fonte
5
O motivo real: "A associação do nome do host do sistema ao último teve o efeito indesejado de tornar 'localhost.localdomain' o nome de host canônico associado ao nome do host do sistema. Ou seja, 'hostname --fqdn' retornou 'localhost.localdomain'."
Cmroanirgo 29/05
Na verdade, eu rastreei até esse documento lists.debian.org/debian-boot/2005/06/msg00938.html e parece que é porque Thomas estava sentindo a necessidade de usar 1.1 em vez de 0.1, o que é equivalente, corrija-me se estou errado, mas isso significa que essa resposta é realmente apenas uma migalha de pão?
Brian Thomas
@BrianThomas essa mensagem sugere por que eles não são equivalentes. Eles queriam localhoste myhostnamefossem distintos - caso contrário, um seria um pseudônimo do outro. Observe que isso não funciona no IPv6, onde há apenas um endereço de loopback. Isso pode ser evitado usando um módulo NSS, conforme mencionado no encadeamento, porque pode ser mais flexível que / etc / hosts e retornar nomes canônicos diferentes, apesar de terem o mesmo endereço IP. Eu sei disso porque meu sistema está configurado usando um módulo NSS .
sourcejedi
46

Para resumir as informações vinculadas:

  • É (discutível) útil ter uma entrada na /etc/hoststradução do nome de domínio totalmente qualificado da máquina para seu endereço IP permanente.
  • debian-installere, mais especificamente, seu netcfgcomponente atualmente (pelo menos até março de 2013) cria essa entrada.
  • Se não se sabe que a máquina possui um endereço IP permanente, o debian-installer ainda deseja que ele tenha esse tipo de entrada.
  • O endereço 127.0.1.1usa a interface de loopback , respondida por sua própria máquina, exatamente como 127.0.0.1é uma entrada distinta na /etc/hostsqual pode ser considerada separadamente de 127.0.0.1se / quando necessário.

Thomas Hood explica como adicionar esta entrada da seguinte maneira:

[Isso] garantirá que, se o nome do host UNIX for resolvido, ele sempre será seu próprio nome de host canônico

mas:

A longo prazo, o nome do host UNIX não deve ser colocado em / etc / hosts.

einpoklum
fonte
.. e entao... ? devo usuário 127.0.0.1 para o meu fdqn? ou 127.0.1.1? ou o lan ip estático?
realtebo 27/08/18
1
@realtebo: 1. É útil e, portanto, é adicionado pelo instalador. 2. Não há "deve" aqui; e é relevante apenas quando o seu FQDN não possui um endereço permanente.
einpoklum
9

Fiquei curioso, e não gostei de nenhuma outra resposta, porque elas não pareciam responder ao que eu estava procurando pelo menos.

A resposta: Olhando para trás neste documento , quase parece que Thomas estava afirmando que estava dando outro ip dedicado no loopback, permitindo que fosse canônico.

Ambos apontam para o seu loopback. O uso do seguinte 127.0.1.1 é um IP real, no loopback, enquanto 127.0.0.1 é o próprio dispositivo ou outro ip no loopback. Ambos terminam na mesma sub-rede, representando o loopback, mas são separados por ip. Eles são equivalentes ao DNS, mas separados por terem um IP dedicado.

O ponto é que você pode ter todas as suas entradas em uma linha como esta

127.0.0.1 localhost localhost.domain www.myfakednsname.com myakednsname.com 

Se o seu nome de host for local, o que significa que não há uma entrada DNS global da Internet mapeada para um IP da Internet real, nesse caso, Thomas estava dizendo que você PRECISA ter a 2ª linha de entrada, assim para dedicá-la lá (para canônica).

127.0.0.1 localhost localhost.localdomain
127.0.1.1 myfakednsname
Brian Thomas
fonte
com toda a justiça, depois de finalmente compor isso de uma maneira que fazia sentido para mim, vejo que é praticamente o que o einpoklum estava tentando explicar como parece em retrospectiva.
Brian Thomas
OK voto negativo, não sei porquê. Eu ainda acredito que esta é a melhor resposta, ou eu não teria dito, depois de desembarcar aqui. a resposta original ajudou, mas não capturou todos os detalhes. Eu iria com este.
Brian Thomas