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 esse arquivo é preferido antes de qualquer outro sistema de nomes. 1
No entanto, como um arquivo único, não dimensiona bem: o tamanho do arquivo se torna grande demais 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 maneira eficiente.
O conceito antigo muito do arquivo /etc/hosts
é 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 é contornar a resolução de DNS. Uma correspondência encontrada no arquivo /etc/hosts
será usada antes de qualquer entrada de DNS. De fato, se o nome pesquisado (como localhost
) for encontrado no arquivo, nenhuma resolução de DNS será executada.
1 Bem, a ordem da resolução de nomes está realmente definida em /etc/nsswitch.conf
, que geralmente tem esta entrada:
hosts: files dns
que significa "tente arquivos ( /etc/hosts
); e se falhar, tente DNS."
Mas esse pedido pode ser alterado ou expandido.
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 espaços em branco - as guias geralmente são preferidas por motivos históricos, mas 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 de hosts típico 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 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 os endereços IP IPv4 e IPv6, conforme mostrado nas primeira e 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 para relatar uma lista de endereços para um determinado nome.