Qual é o objetivo do / etc / hosts?

21

Pelo que entendi, o hostsarquivo é um dos vários recursos do sistema que auxilia no endereçamento de nós de rede em uma rede de computadores. Mas o que deveria estar dentro dele? Quando instalo o Ubuntu por padrão

127.0.0.1 localhost 

estarei lá. Por quê?

  • Como /etc/hostsfunciona no caso de sistemas JVM como o Cassandra?
  • Quando o DNS é alternativo, acho que não em um único computador?
MikiBelavista
fonte
Muito relacionado: unix.stackexchange.com/questions/388875/…
Kusalananda
Meu /etc/hostscontém 127.0.0.2 mycouchdb bookmarkdb myothercouchappe 127.0.0.3 myapachi websiteeu os uso para me ajudar com o meu desenvolvimento em execução na minha máquina local. Eu tenho 3 serviços escutando na porta 80. Não quero colocá-los no DNS, pois eles são apenas locais.
Ctrl-alt-delor
Você já tentou man 5 hosts?
Restabelece Monica - M. Schröder
O Linux não possui uma página de manual para isso, onde é explicada com mais detalhes? Esta é a mais fundamental das perguntas.
Rob

Respostas:

45

O arquivo /etc/hostscomeçou nos velhos tempos da DARPA como o arquivo de resolução para todos os hosts conectados à Internet (antes da existência do DNS). Ele tem a prioridade máxima, o que significa que esse arquivo é preferido antes de qualquer outro sistema de nomes. 1 1

No entanto, como um único arquivo, ele não é dimensionado bem: o tamanho do arquivo se torna muito grande muito em breve. É por isso que o sistema DNS foi desenvolvido, um sistema hierárquico de nomes distribuídos. Ele permite que qualquer host encontre o endereço numérico de outro host com eficiência.

O conceito muito antigo do /etc/hostsarquivo é muito simples, apenas um endereço e um nome de host:

127.0.0.1      localhost

para cada linha. Essa é uma lista simples de pares de endereço-host. 2

Seu principal uso atual é ignorar a resolução do DNS. Uma correspondência encontrada no /etc/hostsarquivo será usada antes de qualquer entrada DNS. De fato, se o nome pesquisado (como localhost) for encontrado no arquivo, nenhuma resolução DNS será executada.


1 Bem, a ordem da resolução de nomes é realmente definida em /etc/nsswitch.conf, que geralmente possui esta entrada:

hosts:          files dns

o que significa "tente arquivos ( /etc/hosts); e se falhar, tente o DNS".

Mas essa ordem pode ser alterada ou expandida.


2 (atualmente) O arquivo hosts contém linhas de texto que consistem em um endereço IP no primeiro campo de texto seguido por um ou mais nomes de host. Cada campo é separado por espaços em branco - as guias geralmente são preferidas por razões históricas, mas também são usados ​​espaços. Linhas de comentário podem ser incluídas; eles são indicados por um octóforo (#) na primeira posição dessas linhas. Linhas totalmente em branco no arquivo são ignoradas. Por exemplo, um arquivo típico de hosts pode conter o seguinte:

127.0.0.1   localhost loopback
::1         localhost localhost6 ipv6-localhost ipv6-loopback mycomputer.local
192.168.0.8 mycomputer.lan
10.0.0.27   mycomputer.lan

Este exemplo contém entradas para os endereços de loopback do sistema e seus nomes de host; a primeira linha é um conteúdo padrão típico do arquivo de hosts. A segunda linha possui vários nomes adicionais (provavelmente válidos apenas em sistemas locais). O exemplo ilustra que um endereço IP pode ter vários nomes de host (host local e loopback) e que um nome de host pode ser mapeado para os endereços IP IPv4 e IPv6, conforme mostrado na primeira e na segunda linhas, respectivamente. Um nome ( mycomputer.lan) pode resolver para vários endereços ( 192.168.0.8 10.0.0.27). No entanto, nesse caso, qual deles é usado depende das rotas (e suas prioridades) definidas para o computador.

Alguns sistemas operacionais mais antigos não tinham como relatar uma lista de endereços para um determinado nome.

Isaac
fonte
5

Usar o arquivo / etc / hosts para atribuir um nome legível a humanos a um sistema local em um ambiente de área de trabalho é perfeitamente razoável. O arquivo hosts é ótimo para uso em uma rede doméstica ou mesmo em um ambiente de pequenas empresas. Isso não pode ser público, como o endereçamento da Internet - você precisa de DNS. Se a rede local for grande o suficiente, ou simplesmente cortar sub-redes diferentes, ou qualquer outro motivo útil, o DNS será preferido.

O arquivo de hosts locais e o DNS são gerenciados com prioridades diferentes, para que nunca haja conflitos.

francois P
fonte
4
Eu discordaria de conflitos, tive vários problemas difíceis de depurar porque as /etc/hostsentradas obsoletas da provisão de host por grupo A deixaram no futuro falhas nas operações por grupo B (meu grupo) , e acabamos configurando algo para higienizar o conteúdo de/etc/hosts
thrig 02/02/19
conflitos dentro do arquivo pode existir fora do curso, mas então ele é o proprietário da máquina própria culpa :)
francois P
2
Também discordo de nunca ter conflitos. Eu tive que depurar erros muito estranhos devido a entradas de host obsoletas em conflito com alterações no DNS.
Rui F Ribeiro
@ thrig: Talvez o problema seja que seus grupos são muito grandes para usar efetivamente o / etc / hosts. Funciona perfeitamente bem para as 5 máquinas (no momento) na minha rede doméstica.
jamesqf
Bem, o sistema não acha que há um conflito. Ele tem instruções claras sobre a prioridade das coisas: p
StarWeaver
3

no linux, ouso dizer que sempre deve haver pelo menos 127.0.0.1 localhostdentro do arquivo /etc/hosts , bem como o endereço IPv6 correspondente para o host local .

É simplesmente a resolução do nome do host para um endereço IPv4 ou IPv6 numérico. Quando você tenta conectar-se a (a) unix.stackexchange.com em algum lugar do mundo que provavelmente não está perto de você, ou (b) myotherpc na rede local em sua casa, é um /etc/hostsou algum servidor de nome de domínio (DNS) que está executando a resolução do host; portanto, quando você digita unix.stackexchage.com, que é humano com o que você se importa, não precisa se lembrar de 185.53.179.7 , que é o que o computador realmente precisa saber.

Como foi apontado, no linux /etc/nsswitchnormalmente existe uma definição da ordem de resolução do nome do host, ou seja, verifique primeiro o DNS antes de verificar o NIS e, finalmente, verifique o arquivo, /etc/hostscaso contrário, o host não foi encontrado

Como você gerencia a verificação de pedidos e o que / onde / quem gerencia o serviço DNS ou NIS depende de você, ou você pode substituir tudo modificando / etc / nsswitch para apenas fazer check-in /etc/hostse nunca verificar com DNS ou NIS ou ...

Para uma rede doméstica simples de poucos computadores, digamos 2 a N, um administrador simplesmente edita /etc/hostsem todos os computadores para estar correto, seria mais fácil, mais rápido e mais barato do que configurar um Servidor de Nome de Domínio ou algum outro serviço para ter um local mestre ou autoridade para resolver o nome do host no endereço IP.

para pesquisa na web linux, a história e a razão por trás localhost. Muitas coisas no linux dependem do nome localhost resolvido para 127.0.0.1 e, se isso não acontecer, causará problemas, e essa definição de host local deve / deve ocorrer em um arquivo de sistema local como / etc / hosts.

/etc/hostsnormalmente é a palavra final e a última coisa para o sistema operacional linux recorrer à resolução de nomes de host. no Windows XP e 7, o arquivo correspondente é C:\Windows\System32\drivers\etc\lmhosts Não sei sobre o Windows 8 ou 10.

Ron
fonte
Um uso típico do arquivo hosts, principalmente no Windows, é desviar a tentativa de um programa de 'ligar para casa' para um dispositivo nulo. Longe de mim sugerir que isso pode impedir uma verificação de legalidade.
Laurence Payne
Eu ainda não encontrei o editor no meu iPhone que me permite editar / etc / hosts ... então eu corro DNS na minha lan
ivanivan