Woher kennt mein DHCP-Server den Hostnamen meines Computers, wenn ich keinen in der dhclient.conf definiert habe?

12

Ich versuche, einige unkonventionelle DNS-Probleme im Zusammenhang mit DHCP in unserem Netzwerk zu lösen (ich vermute, dass derzeit mehr als ein DHCP-Server ausgeführt wird), und beim Versuch, dies herauszufinden, ist mir bei einem neuen Server etwas Merkwürdiges aufgefallen installieren.

Bei dem fraglichen Server handelt es sich um eine virtuelle Xen-Maschine, auf der Ubuntu 9.10 Server ausgeführt wird. Der physische Xen-Server befindet sich ebenfalls in unserem Netzwerk. Als ich die VM zum ersten Mal in Xen hochfuhr (ich habe sie von einer lokalen Virtualbox-VM importiert, die auf meinem Computer ausgeführt wurde, auf dem sie in einem anderen Netzwerk ausgeführt wurde), wurde eine DHCP-Lease von unserem Büronetzwerk und alles war gut.

Ich überprüfte die dhclient.eth0.leasesDatei, um festzustellen, was konfiguriert wurde, und stellte fest, dass die alte DHCP-Lease aus dem vorherigen Netzwerk, in dem sich der Computer befand, noch vorhanden war, sowie die neue DHCP-Lease für das Büronetzwerk, mit dem er derzeit verbunden ist. Es gibt zwei Dinge, die mir sofort aufgefallen sind:

  1. Die alten DHCP-Lease-Informationen aus dem vorherigen Netzwerk haben keine options host-nameLeitung, was bedeutet, dass die ursprüngliche VirtualBox-Version der VM diese Option nicht an den DHCP-Server gesendet hat. Oder bedeutet dies, dass der alte DHCP-Server die Option DHCP-Hostname nicht unterstützt hat? Damals wurde der interne DHCP-Server von VirualBox verwendet ...

  2. Die neuen DHCP - Lease - Informationen haben eine haben options host-nameLinie, die die richtigen, aktuellen Hostnamen für den Server ( „Fozzie“) enthält. Wenn ich das richtig verstehe, bedeutet dies, dass der Server seinen Hostnamen an den DHCP-Server in unserem Netzwerk gesendet hat.

Es gibt eine Reihe von Dingen, die ich über all das nicht verstehe.

Erstens habe ich dhclient.confzu keinem Zeitpunkt für den Server gewechselt. Es wird die Standardkonfiguration verwendet. Tatsächlich enthält es die folgende Zeile wörtlich:

send host-name "<hostname>"

Meine erste Frage ist also, wie zum Teufel hat es gewusst, den echten Hostnamen des Servers zu senden, wenn die Konfiguration nicht so eingerichtet ist, dass sie ihn überhaupt sendet?

Zweitens , warum beinhaltete die erste DHCP-Lease (für das alte Netzwerk) diese nicht option host-name, die zweite DHCP-Lease (für das neue Netzwerk) jedoch, wenn ich keine der Konfigurationsdateien berührt habe?

Ich habe lediglich die ursprüngliche VirtualBox-Maschine als OVF exportiert und dann in XenServer importiert. Wie hat sie meinen Hostnamen auf magische Weise über DHCP konfiguriert, wenn er nicht einmal mit dem tatsächlichen Hostnamen in konfiguriert ist dhclient.conf?

Drittens : Wenn ich laufe hostname, kehrt der Server zurück fozzie.our.domain, dhclient.eth0.leasessagt aber, dass die Option hostname auf fozzie(keine Domäne) gesetzt wurde. Woher wusste es, die Domain zu entfernen?

Mike Spross
quelle

Antworten:

11

OK, nach einer langen Zeit im Internet und dem Versuch, manSeiten durchzulesen, habe ich meistens herausgefunden, was los ist:

[H] wie zum Teufel hat es gewusst, den tatsächlichen Hostnamen des Servers zu senden, wenn die Konfiguration nicht so eingerichtet ist, dass er ihn überhaupt sendet?

Offensichtlich send host-name "<hostname>"und insbesondere <hostname>hat Ubuntu eine besondere Bedeutung. Es teilt dhclientmit, dass der aktuelle Hostname Ihres Computers an den DHCP-Server gesendet werden soll. Beachten Sie, dass hierbei zwischen Groß- und Kleinschreibung unterschieden wird (dh, wenn Sie <HOSTNAME>Folgendes eingeben, sendet dhclient den Literaltext <HOSTNAME>an den DHCP-Server). Wie hier und hier berichtet , funktioniert dies auf Ubuntu Feisty und höher, da es Teil eines Patches ist, um (ironischerweise) ein Problem zu beheben, bei dhclientdem der Hostname des Computers nicht standardmäßig gesendet wird.

[W] Warum enthielt die erste DHCP-Lease (für das alte Netzwerk) nicht die Option Hostname, aber die zweite DHCP-Lease (für das neue Netzwerk) enthielt sie, wenn ich keine der Konfigurationsdateien berührt habe?

Dies scheint nur so zu sein, weil nicht alle DHCP-Server den Hostnamen an den Client zurücksenden. Gestern haben wir noch einen Linux-basierten ClarkConnect-Router als DHCP-Server verwendet, der den Hostnamen an jeden Client zurücksendet. Heute haben wir DHCP auf diesem Server deaktiviert und auf den integrierten DHCP-Server auf unserem primären Domänencontroller umgestellt. Unsere DHCP-Leases vom PDC enthalten auch keine option host-name, aber es scheint nichts zu beeinflussen. Die Maschinen werden in DNS aktualisiert und können sich alle nach Hostnamen finden.

Wenn ich laufe hostname, kehrt der Server zurück fozzie.our.domain, dhclient.eth0.leasessagt aber, dass die Option hostname auf fozzie(keine Domäne) gesetzt wurde. Woher wusste es, die Domain zu entfernen?

Damit verstehe ich die Feinheiten von DHCP nicht ganz. Unser DHCP-Server wurde so eingestellt, dass alle unsere Clients mit unserer Domain konfiguriert werden. Ich vermute, der DHCP-Server war intelligent genug, um den Domain-Namen-Teil aus dem vom Client gesendeten Hostnamen zu entfernen.

Hat jemand Korrekturen oder Erläuterungen, um diese Antwort zu ergänzen? Es scheint immer noch ein bisschen "handgewellt" zu sein, also werde ich es nicht akzeptieren, wie es ist.

Mike Spross
quelle