Como meu servidor DHCP sabe o nome do host da minha máquina quando não defini um no dhclient.conf?

12

Estou tentando resolver alguns problemas funky de DNS relacionados ao DHCP em nossa rede (suspeito que tenhamos mais de um servidor DHCP em execução no momento) e, enquanto tentava descobrir isso, notei algo estranho com um novo servidor. configuração.

O servidor em questão é uma máquina virtual Xen executando o Ubuntu 9.10 Server. O servidor físico Xen também está em nossa rede e, quando inicializei a VM pela primeira vez no Xen (importei-a de uma VM Virtualbox local em execução na minha máquina, onde estava sendo executada em uma rede diferente), obtive um Locação de DHCP da nossa rede de escritórios e tudo estava bem.

Verifiquei o dhclient.eth0.leasesarquivo para ver o que foi configurado e vi que a antiga concessão DHCP da rede anterior ainda estava na máquina, assim como a nova concessão DHCP para a rede do escritório à qual está conectado atualmente. Há duas coisas que notei imediatamente:

  1. As informações antigas de concessão de DHCP da rede anterior não têm uma options host-namelinha, o que eu entendo como a versão original do VirtualBox da VM não estava enviando essa opção ao servidor DHCP. Ou isso significa que o antigo servidor DHCP não suporta a opção de nome de host DHCP? Ele estava usando o servidor DHCP interno do VirualBox na época ...

  2. As novas informações de concessão DHCP faz ter uma options host-namelinha, que inclui o nome do host correto, atual para o servidor ( "Fozzie"). Se bem entendi, isso significa que o servidor enviou seu nome de host ao servidor DHCP em nossa rede.

Há várias coisas que não entendo sobre tudo isso.

Primeiro , não mudei dhclient.confpara o servidor em nenhum momento; está usando a configuração padrão. De fato, contém a seguinte linha literalmente:

send host-name "<hostname>"

Então, minha primeira pergunta é: como diabos ele sabia enviar o nome real do host do servidor, se a configuração não estiver configurada para enviá-lo em primeiro lugar?

Segundo , por que a primeira concessão de DHCP (para a rede antiga) não incluiu option host-name, mas a segunda concessão de DHCP (na nova rede) a incluiu, se eu não toquei em nenhum dos arquivos de configuração?

Tudo o que fiz foi exportar a máquina VirtualBox original como um OVF e depois importá-la para o XenServer. Então, como ele configurou magicamente meu nome de host via DHCP, se ele nem mesmo foi configurado com o nome de host real dhclient.conf?

Terceiro : Quando executo hostname, o servidor retorna fozzie.our.domain, mas dhclient.eth0.leasesdiz que a opção de nome do host foi definida como fozzie(sem domínio). Como soube retirar o domínio?

Mike Spross
fonte

Respostas:

11

OK, depois de muito tempo vasculhando a Internet e tentando ler as manpáginas, eu principalmente descobri o que estava acontecendo:

Como diabos sabia enviar o nome real do host do servidor se a configuração não estiver configurada para enviá-lo em primeiro lugar?

Aparentemente, send host-name "<hostname>"e mais especificamente <hostname>, tem um significado especial no Ubuntu. Ele diz dhclientpara enviar o nome do host atual da sua máquina para o servidor DHCP. Observe que isso faz distinção entre maiúsculas e minúsculas (ou seja, se você digitar <HOSTNAME>, o dhclient enviará o texto literal <HOSTNAME>ao servidor DHCP). Conforme relatado aqui e aqui , isso funciona no Ubuntu Feisty e acima, fazendo parte de um patch para (ironicamente) corrigir um problema ao dhclientnão enviar o nome do host da máquina por padrão.

[Por que a primeira concessão de DHCP (para a rede antiga) não incluiu a opção nome do host, mas a segunda concessão de DHCP (na nova rede) incluiu, se eu não toquei em nenhum dos arquivos de configuração?

Parece que isso ocorre porque nem todos os servidores DHCP ecoam o nome do host de volta ao cliente. Ontem, ainda estamos usando um roteador ClarkConnect baseado em Linux como nosso servidor DHCP, que ecoava o nome do host de volta para cada cliente. Hoje, desativamos o DHCP nesse servidor e passamos a usar o servidor DHCP interno em nosso controlador de domínio principal. Nossas concessões de DHCP do PDC também não incluem option host-name, mas parecem não afetar nada. As máquinas são atualizadas no DNS e podem se encontrar por nome de host.

Quando executo hostname, o servidor retorna fozzie.our.domain, mas dhclient.eth0.leasesdiz que a opção de nome do host foi definida como fozzie(sem domínio). Como soube retirar o domínio?

Não sou eu que entendo completamente os meandros do DHCP. Nosso servidor DHCP foi configurado para configurar todos os nossos clientes com nosso domínio. Suponho que o servidor DHCP tenha sido inteligente o suficiente para remover a parte do nome de domínio do nome do host enviado pelo cliente.

Alguém tem alguma correção ou esclarecimento para adicionar a esta resposta? Ainda parece um pouco "ondulado", então não vou aceitá-lo como está.

Mike Spross
fonte