O que determina o nome do host Linux?

O que determina o nome do host Linux?

Nos poucos anos que uso Linux como sistema principal, especificamente o Fedora, sempre vi meu hostname definido apenas como "localhost", com exceção de quando me conecto a algumas redes e ele se torna meu IP. Hoje experimentei o seguinte comportamento que estou tendo problemas para entender.

Configurei uma instalação do Ubuntu em outra partição do meu laptop, definindo um nome de computador/nome de host durante a instalação do Ubuntu. Porém, quando reiniciei o Fedora, o Fedora atualizou meu nome de host para o nome que defini na instalação do Ubuntu.

Sempre pensei que o nome do host estava configurado e armazenado na partição de instalação da distribuição e, de fato, o conteúdo de /etc/hostname no Fedora ainda dizia "localhost.localdomain", mas a execução do hostnamecomando mostra o novo nome do host. Ambas as instalações compartilham uma partição de inicialização efi, mas são discretas. Estou me perguntando de onde e por que a instalação do Fedora está lendo o novo nome de host?

Responder1

O hostnameprograma executa um syscall uname, como pode ser visto na execução:

strace hostname
...

e="Linux", nodename="my.hostname.com", ...}) = 0 ... Na página man do uname syscall, diz que o syscall recupera a seguinte estrutura do kernel:

  struct utsname {
               char sysname[];    /* Operating system name (e. */
               char nodename[];   /* Name within "some implementation-defined
                                     network" */
               char release[ystem release (e.g., "2.6.28") */
               char version[];    /* Operating system version */
               char machine[];    /* Hardware identifier */
           #ifdef _GNU_SOURCE
               char domainname[]; /* NIS or YP domain name */
           #endif
           };

Portanto, o nome de domínio vem do NISystem, se acreditarmos no comentário. Portanto, é mais do que provável que o serviço / YP no seu nhat esteja retornando para você o nome definido pelo sistema operacional Ubuntu.

Responder2

Existem dois conceitos independentes (!) de nome de host em um sistema Linux.

Existe tudo o que o kernel considera o nome do host local (conforme tratado pelas chamadas de sistema gethostname/uname e sethostname) independente de qualquer conectividade de rede - essa mecânica ainda existiria se você construísse um kernel sem capacidade para rede TCP/IP.

Há um ou mais nomes de host que estão realmente conectados aos endereços TCP/IP (ou outra pilha de rede - nem todas as redes do mundo são IP!) que o host possui, e estes são tratados no espaço do usuário pelas funções da biblioteca do resolvedor (parte de libc), que determinará tal nome interpretando as fontes (arquivo /etc/hosts local, DNS, NIS....) de acordo com as regras fornecidas nos arquivos de configuração apropriados (/etc/nsswitch.conf, /etc /host.conf etc...).

Responder3

Provavelmente o Ubuntu se conectou à internet através do seu roteador doméstico durante a instalação. Para fazer isso, ele reportou seu nome de host ao roteador e obteve um IP local temporário.

Quando você reiniciar o Fedora, ele se conectará ao mesmo roteador para obter seu endereço IP, mas a antiga concessão criada para o Ubuntu ainda é válida. Como é a mesma máquina com a mesma placa de rede e o mesmo endereço MAC de hardware, ela reutilizará o mesmo arrendamento.

Meu palpite é que o roteador envia o nome do host no qual a concessão de IP foi registrada e o Fedora o pega.

Infelizmente não tenho nenhuma evidência ou citação para apoiar minha resposta, posso apenas falar da experiência pessoal de instalação do Ubuntu em inicialização dupla com o Windows. Naquela época, o Ubuntu se recusou a definir durante a instalação o mesmo nome de host que eu usei no Windows, porque alegou que o nome já estava presente na rede. Provavelmente temos algo semelhante acontecendo aqui.

Para verificar se o que eu acho se aplica à sua situação também, tente revogar sua concessão de IP na interface de configuração do seu roteador e reinicie o Fedora. Se não for mais necessário o nome de host do Ubuntu, devo estar certo.

informação relacionada