hostname
é usado para exibir o nome DNS do sistema e para exibir ou definir seu nome de host ou nome de domínio NIS.
Um sistema de computador (Linux) possui apenas um nome de host?
Na hospedagem virtual, vários nomes de host podem ser resolvidos para diferentes diretórios raiz em um servidor da web. Se um sistema de computador (Linux) pode ter apenas um nome de host, como é possível a hospedagem virtual?
Obrigado.
hostname
já foi usada na resolução do nome do host para o endereço IP? (2) A significa endereço IPv4, AAAA IPv6. O que é AAA?avahi
dependem do nome do host da máquina. Nesse caso,hostname.local
resolveria o endereço IP local da máquina. Vejo que alguém escreveu uma resposta que é uma expansão do meu primeiro comentário ... muito simultânea para as notificações do meu navegador.Respostas:
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 pelagethostname()
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 sePS1
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 IP192.0.2.9
. Poderia servir dois domínios diferentes e o DNS seria configurado para terwww.example.org
ewww.example.com
ambos apontam para192.0.2.9
, enquanto o nome do host interno do sistema pode serorange.example.org
ou apenasorange
. Nesse caso, a configuração do DNS normalmente também teria uma pesquisa inversa no192.0.2.9
ponto de volta ao nomeorange.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.
fonte
hostname
já foi usada na resolução do nome do host para o endereço IP?hostname
comandos, correto? O roteador age como um DNS para resolver as saídas dehostname
endereços IP privados na rede?mDNS
. Para melhor ou pior, permite que os proprietários do sistema escolham seus próprios nomes de host, acessíveis por outros sistemas na rede local, sem a necessidade de se registrar em um servidor DNS.Não.
[Ignorarei completamente que qualquer pessoa possa dar ao seu host o nome que desejar, tendo um registro DNS apontando para seu endereço, ou que você possa ter mais de um apelido para ele
/etc/hosts
ou quaisquer considerações filosóficas sobre o nome de um nome realmente é ]Em um sistema linux, o nome do host é simplesmente um recurso por processo (o "espaço de nome UTS") que é herdado por seus filhos por padrão, mas pode ser separado de
unshare(2)
ouclone(2)
com oCLONE_NEWUTS
sinalizador. Você deve olhar para onamespaces(7)
manual.Assim como pids, números de portas, pontos de montagem etc. o nome do host não é mais um identificador global e pode ser virtualizado da mesma forma que o espaço de endereço (memória virtual) ou a tabela de descritores de arquivo de um processo.
Hospedagem virtual é algo completamente diferente, e geralmente é feito configurando um registro DNS curinga (por exemplo,
*.foo.com
=>13.13.13.13
) com um servidor Web executando13.13.13.13
e servindo diferentes diretórios / recursos com base no valor doHost:
cabeçalho http [1] (que é altamente configurável ; a maioria dos servidores da Web pode servir recursos diferentes com base em qualquer cabeçalho http, não apenasHost:
). Em tudo isso, o sistema operacional do sistema em que o servidor da web está sendo executado não faz parte.[1] ou no valor da indicação do nome do servidor no caso de https, que permite que o mesmo servidor da Web use certificados diferentes para diferentes hosts virtuais.
fonte
Você geralmente define um único nome de host em / etc / hostname. E você define muitos nomes de domínio em / etc / hosts.
Os espaços de nome UTS permitem que um único sistema pareça ter diferentes nomes de host e domínio para diferentes processos. Para mais informações: https://en.wikipedia.org/wiki/Linux_namespaces . Portanto, é absolutamente possível ter vários nomes de host e nomes de domínio para o mesmo sistema. Por exemplo, o contêiner do docker dentro do mesmo host possui um nome de host diferente do sistema do host.
fonte