O que determina o nome do host do Linux?

13

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

Eu 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. Quando eu reiniciei o Fedora, o Fedora atualizou meu nome de host para o nome que eu configurei na instalação do Ubuntu.

Eu sempre achei que o nome do host foi configurado e armazenado na partição da instalação da distribuição, e de fato o conteúdo do / etc / hostname no Fedora ainda lê "localhost.localdomain", mas executar o comando hostname mostra o novo nome do host . Ambas as instalações compartilham uma partição de inicialização efi, mas são de outra forma discretas. Eu estou querendo saber de onde e porque a instalação do Fedora está lendo o novo nome de host?

    
por fedora 18.05.2017 / 20:31

3 respostas

12

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

strace hostname
...
uname({sysname="Linux", nodename="my.hostname.com", ...}) = 0
...

Na página man do syscall do uname , ele diz que o syscall recupera a seguinte estrutura do kernel:

  struct utsname {
               char sysname[];    /* Operating system name (e.g., "Linux") */
               char nodename[];   /* Name within "some implementation-defined
                                     network" */
               char release[];    /* Operating system 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
           };

Então o nome do domínio vem do sistema NIS / YP, se acreditarmos no comentário. Então, mais do que provável, pode haver um serviço NIS / YP em sua rede que está trotando de volta o nome para você que é definido pelo sistema operacional do Ubuntu.

    
por 18.05.2017 / 21:01
5

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

Existe o kernel que considera o nome do host local (como tratado pelas chamadas do sistema gethostname / uname e sethostname) independentemente de qualquer conectividade de rede - essas mecânicas ainda existiriam se você criasse um kernel sem capacidade de rede TCP / IP .

Existe um ou mais nomes de host que estão realmente conectados a TCP / IP (ou outra pilha de rede - nem todos os endereços de rede do mundo são IP!) que o host possui, e eles são manipulados no espaço do usuário pelas funções da biblioteca resolvedora (parte da libc), que determinará tal nome interpretando as fontes (arquivo local / etc / hosts, DNS, NIS ....) de acordo com as regras que você der nos arquivos de configuração apropriados (/etc/nsswitch.conf , / etc / host.conf etc ...).

    
por 19.05.2017 / 10:20
3

Provavelmente, o Ubuntu conectou-se à Internet através do seu roteador doméstico durante a instalação. Por fazer isso, ele relatou seu nome de host para o roteador e obteve um IP local temporário.

Quando você reinicializar no Fedora, ele se conectará ao mesmo roteador para obter seu endereço IP, mas o antigo contrato criado para o Ubuntu ainda é válido. Como é a mesma máquina com a mesma placa de rede e o mesmo endereço MAC de hardware, ela reutilizará o mesmo contrato.

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

Infelizmente eu não tenho nenhuma evidência ou citação para apoiar a minha resposta, eu posso apenas falar com a experiência pessoal de instalar o Ubuntu em dual-boot com o Windows. Naquela época, o Ubuntu se recusou a definir o mesmo nome de host durante a instalação como o 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 que se aplica à sua situação também, tente revogar sua concessão de IP na interface de configuração do seu roteador e depois reinicialize o Fedora. Se ele não usar mais o nome do host do Ubuntu, eu devo estar certo.

    
por 18.05.2017 / 21:00