Sim e não. Existem duas coisas distintas chamadas nomes de host.
O nome do host "interno" é basicamente uma string mantida pelo kernel. É aquele retornado pelo hostname
comando (ou pela gethostname()
chamada) e é único dentro de um sistema (*) .
É usado principalmente quando um programa deseja gerar algum identificador para o sistema em que está sendo executado. Por exemplo, \h
no Bash se PS1
expande para o nome do host. Da mesma forma, os arquivos de log no estilo syslog também incluem o nome do host nas entradas de log.
(* Embora, como comenta Stephen Kitt, os namespaces possam ser usados para mostrar nomes de host diferentes para processos no mesmo sistema. Isso é usado principalmente para contêineres, que tentam agir como se fossem sistemas distintos.)
Depois, há também nomes DNS que são usados por outros sistemas para procurar o endereço IP de outro. Pode haver mais de um nome DNS que aponte para o mesmo endereço IP e, portanto, o mesmo host.
O nome do host interno e os nomes DNS não precisam ser os mesmos. Suponha que alguém tenha um servidor da web que eles decidiram ligar orange
(*) , com o endereço IP 192.0.2.9
. Poderia servir dois domínios diferentes e o DNS seria configurado para ter www.example.org
e www.example.com
ambos apontam para 192.0.2.9
, enquanto o nome do host interno do sistema pode ser orange.example.org
ou apenas orange
. Nesse caso, a configuração do DNS normalmente também teria uma pesquisa inversa no 192.0.2.9
ponto de volta ao nome orange.example.org
, mas não há nada para forçar isso.
(* porque eles gostam de nomear seus servidores como frutas. Alguém pode usar webserver1
isso, mas o ponto é que ele não precisa ser nomeado como um dos domínios reais.)
Além disso, a hospedagem virtual exige que o navegador informe ao servidor da Web o nome do site que ele tentou acessar. Caso contrário, o servidor não saberia qual site virtual o cliente tentou acessar. HTTP tem o Host
cabeçalho para isso.
O que atrapalha a distinção entre um nome DNS e o nome do host interno é o protocolo mDNS
(implementado, por exemplo, pelo daemon avahi ) e outros protocolos de descoberta. O mDNS possibilita que os hosts consultem todos os outros hosts na mesma rede em busca de informações de nome e tornem seus próprios nomes de host visíveis em outros hosts sem configurá-los explicitamente no DNS.