Pelo que entendi, o hosts
arquivo é um dos vários recursos do sistema que auxiliam no endereçamento de nós de rede em uma rede de computadores. Mas o que deve estar dentro dele? Quando eu instalo o Ubuntu por padrão
127.0.0.1 localhost
estarei lá. Por quê?
- Como
/etc/hosts
funciona no caso de sistemas JVM como Cassandra? - Quando é a alternativa DNS, acho que não em um único computador?
O arquivo
/etc/hosts
começ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 este arquivo é preferido antes de qualquer outro sistema de nomes. 1No entanto, como um único arquivo, ele não é bem dimensionado: o tamanho do arquivo torna-se 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 algum outro host de forma eficiente.
O conceito muito
/etc/hosts
antigo do arquivo é muito simples, apenas um endereço e um nome de host:para cada linha. Essa é uma lista simples de pares de endereço-host. 2
Seu principal uso atual é contornar a resolução de DNS. Uma correspondência encontrada no
/etc/hosts
arquivo será usada antes de qualquer entrada de DNS. De fato, se o nome pesquisado (comolocalhost
) for encontrado no arquivo, nenhuma resolução de DNS será executada.1 Bem, a ordem de resolução de nomes é realmente definida em
/etc/nsswitch.conf
, que geralmente tem esta entrada:que significa "tente os arquivos (
/etc/hosts
); e se falhar, tente o DNS".Mas essa ordem pode ser alterada ou ampliada.
2 (nos dias atuais) 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 um espaço em branco – as guias geralmente são preferidas por razões históricas, mas os espaços também são usados. Linhas de comentário podem ser incluídas; eles são indicados por um octothorpe (#) na primeira posição de tais linhas. Linhas totalmente em branco no arquivo são ignoradas. Por exemplo, um arquivo típico de hosts pode conter o seguinte:
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 hosts. A segunda linha tem 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 (localhost e loopback) e que um nome de host pode ser mapeado para 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.
Usar o arquivo /etc/hosts para dar um nome legível para um sistema local dentro de um ambiente de desktop é perfeitamente razoável. O arquivo hosts é ótimo para usar em uma rede doméstica ou mesmo em um ambiente de pequena empresa. Isso não pode ser público, como o endereçamento da Internet - então você precisa do DNS. Se a rede local for grande o suficiente, ou simplesmente cortada em diferentes sub-redes, ou qualquer outro motivo útil, o DNS é o preferido.
O arquivo de hosts locais e o DNS são gerenciados com prioridades diferentes, portanto, nunca há conflitos.
no linux, ouso dizer que sempre deve haver pelo menos
127.0.0.1 localhost
dentro do arquivo/etc/hosts
, bem como o endereço IPv6 correspondente para localhost .É simplesmente resolução de nome de host para um endereço IPv4 ou IPv6 numérico. Quando você tenta se conectar a (a) unix.stackexchange.com em algum lugar na terra que provavelmente não esteja perto de você, ou (b) myotherpc na rede local em sua casa, é um
/etc/hosts
ou algum servidor de nome de domínio (DNS) que está fazendo a resolução do host, então quando você digita unix.stackexchage.com que, como humano, é o que importa, você não precisa se lembrar de 185.53.179.7 para isso, que é o que o computador realmente precisa saber.Como foi apontado, no linux
/etc/nsswitch
normalmente há que define a ordem de resolução do nome do host, o que significa verificar o DNS primeiro antes de verificar o NIS e, por último, verificar o arquivo ,/etc/hosts
caso contrário , o host não foi encontradoComo 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/hosts
e nunca verificar com DNS ou NIS ou...Para uma rede doméstica simples de poucos computadores, digamos 2 para N, um administrador simplesmente editaria
/etc/hosts
em cada computador para estar correto, seria mais fácil, rápido e barato do que configurar um Servidor de Nome de Domínio ou algum outro serviço para ter um local mestre ou autoridade para fazer a resolução do nome do host para o endereço IP.para linux web, pesquise a história e a razão por trás
localhost
. Muitas coisas no linux dependem do nome localhost resolvendo para 127.0.0.1 e se isso não acontecer causará problemas, e esta definição de localhost iria/deveria acontecer em um arquivo de sistema local como /etc/hosts./etc/hosts
é, por padrão, geralmente a palavra final e a última coisa para o sistema operacional linux recorrer para a resolução do nome do host. no Windows XP e 7, o arquivo correspondente éC:\Windows\System32\drivers\etc\lmhosts
Não sei sobre o Windows 8 ou 10.