
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 hostname
comando 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 hostname
programa 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.