Comment mon serveur DHCP connaît-il le nom d'hôte de ma machine alors que je ne l'ai pas défini dans dhclient.conf ?

J’essaie de résoudre des problèmes DNS bizarres liés au DHCP sur notre réseau (je soupçonne que nous avons plus d’un serveur DHCP en fonctionnement en ce moment), et en essayant de comprendre cela, j’ai remarqué quelque chose d’étrange avec un nouveau serveur que je viens de configurer.

Le serveur en question est une machine virtuelle Xen exécutant Ubuntu 9.10 Server. Le serveur Xen physique est aussi sur notre réseau, et quand j’ai démarré la VM pour la première fois dans Xen (je l’ai importée depuis une VM VirtualBox locale fonctionnant sur ma machine, où elle fonctionnait sur un réseau différent), elle a obtenu un bail DHCP de notre réseau de bureau et tout allait bien.

J’ai vérifié le fichier dhclient.eth0.leases pour voir ce qui avait été configuré, et j’ai vu que l’ancien bail DHCP du réseau précédent sur lequel la machine était était toujours là, ainsi que le nouveau bail DHCP pour le réseau de bureau auquel elle est actuellement connectée. Il y a deux choses que j’ai remarquées tout de suite :

Les anciennes informations de bail DHCP du réseau précédent n’ont pas de ligne options host-name, ce qui signifie, à mon avis, que la version VirtualBox originale de la VM n’envoyait pas cette option au serveur DHCP. Ou est-ce que cela signifie que l’ancien serveur DHCP ne supportait pas l’option de nom d’hôte DHCP ? Il utilisait le serveur DHCP interne de VirtualBox à l’époque…

Les nouvelles informations de bail DHCP ont une ligne options host-name, qui inclut le nom d’hôte actuel correct pour le serveur (« fozzie »). Si je comprends bien, cela signifie que le serveur a envoyé son nom d’hôte au serveur DHCP de notre réseau.

Il y a un certain nombre de choses que je ne comprends pas à propos de tout cela.

Premièrement, je n’ai pas modifié dhclient.conf pour le serveur à aucun moment ; il utilise la configuration par défaut. En fait, il contient la ligne suivante textuellement :

send host-name "<hostname>"

Donc ma première question est : comment diable a-t-il su envoyer le vrai nom d’hôte du serveur si la configuration n’est pas configurée pour l’envoyer en premier lieu ?

Deuxièmement, pourquoi le premier bail DHCP (pour l’ancien réseau) n’incluait-il pas option host-name, mais le deuxième bail DHCP (sur le nouveau réseau) l’incluait-il, si je n’ai touché à aucun des fichiers de configuration ?

Tout ce que j’ai fait, c’est exporter la machine VirtualBox originale en OVF, puis l’importer dans XenServer, alors comment s’est-elle magiquement configurée avec mon nom d’hôte via DHCP si ce n’est même pas configuré avec le vrai nom d’hôte dans dhclient.conf ?

Troisièmement : Quand j’exécute hostname, le serveur renvoie fozzie.our.domain, mais dhclient.eth0.leases dit que l’option hostname a été définie sur fozzie (sans domaine). Comment a-t-il su retirer le domaine ?

OK, après un long moment à parcourir Internet et à essayer de lire les pages man, j’ai en grande partie compris ce qui se passe :

Comment diable a-t-il su envoyer le vrai nom d’hôte du serveur si la configuration n’est pas configurée pour l’envoyer en premier lieu ?

Apparemment, send host-name "<hostname>", et plus spécifiquement, <hostname>, a une signification spéciale sur Ubuntu. Il dit à dhclient d’envoyer le nom d’hôte actuel de votre machine au serveur DHCP. Notez que ceci est sensible à la casse (c.-à-d. si vous tapez <HOSTNAME>, dhclient enverra le texte littéral <HOSTNAME> au serveur DHCP). Comme rapporté ici et ici, cela fonctionne sur Ubuntu Feisty et supérieur, faisant partie d’un correctif pour (ironiquement) résoudre un problème avec dhclient qui n’envoyait pas le nom d’hôte de la machine par défaut.

Pourquoi le premier bail DHCP (pour l’ancien réseau) n’incluait-il pas option host-name, mais le deuxième bail DHCP (sur le nouveau réseau) l’incluait-il, si je n’ai touché à aucun des fichiers de configuration ?

Cela semble simplement être parce que tous les serveurs DHCP ne renvoient pas le nom d’hôte au client. Hier, nous utilisions encore un routeur ClarkConnect basé sur Linux comme serveur DHCP, qui renvoyait le nom d’hôte à chaque client. Aujourd’hui, nous avons désactivé le DHCP sur ce serveur et sommes passés à l’utilisation du serveur DHCP intégré à notre contrôleur de domaine principal. Nos baux DHCP du PDC n’incluent pas non plus option host-name, mais cela ne semble rien affecter. Les machines sont mises à jour dans le DNS, et elles peuvent toutes se trouver mutuellement par nom d’hôte.

Quand j’exécute hostname, le serveur renvoie fozzie.our.domain, mais dhclient.eth0.leases dit que l’option hostname a été définie sur fozzie (sans domaine). Comment a-t-il su retirer le domaine ?

C’est moi qui ne comprends pas pleinement les subtilités du DHCP. Notre serveur DHCP était configuré pour configurer tous nos clients avec notre domaine. Je suppose que le serveur DHCP était assez intelligent pour retirer la partie nom de domaine du nom d’hôte envoyé par le client.

Quelqu’un a-t-il des corrections ou des clarifications à ajouter à cette réponse ? Elle semble encore un peu approximative, donc je ne l’accepterai pas telle quelle.