有问题的服务器是运行Ubuntu 9.10服务器的Xen虚拟机.物理Xen服务器也在我们的网络上,当我第一次在Xen中启动VM时(我从在我的机器上运行的本地VirtualBox VM导入它,它在不同的网络上运行),它有一个从我们的办公室网络DHCP租赁,一切都很好.
我检查了dhclient.eth0.leases文件以查看配置的内容,并看到该机器所在的旧网络中的旧DHCP租约仍然存在,以及它当前连接到的办公网络的新DHCP租约.我立即注意到了两件事:
>来自先前网络的旧DHCP租约信息没有选项主机名行,我认为这意味着VM的原始VirtualBox版本未将此选项发送到DHCP服务器.或者这是否意味着旧的DHCP服务器不支持DHCP主机名选项?当时正在使用VirualBox的内部DHCP服务器……
>新的DHCP租约信息确实有一个选项host-name行,其中包含服务器的正确当前主机名(“fozzie”).如果我理解正确,这意味着服务器将其主机名发送到我们网络上的DHCP服务器.
关于这一切,我有很多不明白的事情.
首先,我没有在任何时候为服务器更改dhclient.conf;它使用默认配置.实际上它逐字包含以下行:
发送主机名“< hostname>”
所以我的第一个问题是,如果配置没有设置为首先发送它,它是如何知道发送服务器的真实主机名?
第二,为什么第一个DHCP租约(对于旧网络)不包括选项主机名,但第二个DHCP租约(在新网络上)确实包含它,如果我没有触及任何配置文件?
我所做的只是将原始VirtualBox机器导出为OVF,然后将其导入XenServer,那么如果它甚至没有在dhclient.conf中配置实际主机名,它如何通过DHCP神奇地配置我的主机名?
第三:当我运行主机名时,服务器返回fozzie.our.domain,但dhclient.eth0.leases表示主机名选项设置为fozzie(无域).如何剥离域名?
解决方法
[H]ow in the heck did it know to send
the server’s real hostname if the
configuration isn’t set up to send it
in the first place?
显然,发送主机名“< hostname>”,更具体地说,< hostname>,对Ubuntu具有特殊意义.它告诉dhclient将您机器的当前主机名发送到DHCP服务器.请注意,这是区分大小写的(例如,如果您键入< HOSTNAME> ;,则dhclient会将文字文本< HOSTNAME>发送到DHCP服务器).据报道here和here,这适用于Ubuntu Feisty及以上版本,是一个补丁(讽刺性地)解决dhclient默认情况下不发送机器主机名的问题的一部分.
[W]hy did the first DHCP lease (for the
old network) not include option
host-name,but the second DHCP lease
(on the new network) did include it,
if I haven’t touched any of the
configuration files?
这似乎是因为并非所有DHCP服务器都会将主机名回送给客户端.昨天我们仍然使用基于Linux的ClarkConnect路由器作为我们的DHCP服务器,它将主机名回显给每个客户端.今天我们在该服务器上禁用了DHCP,并切换到使用主域控制器上的内置DHCP服务器.我们从PDC的DHCP租约也不包括选项主机名,但它似乎不会影响任何东西.机器在DNS中更新,他们都可以通过主机名找到对方.
When I run
hostname
,the server
returnsfozzie.our.domain
,but
dhclient.eth0.leases
says the hostname
option was set tofozzie
(no domain).
How did it know to strip off the
domain?
这是我不完全理解DHCP的复杂性.我们的DHCP服务器已设置为使用我们的域配置所有客户端.我猜测DHCP服务器足够聪明,可以从客户端发送的主机名中删除域名部分.
任何人都有任何更正或澄清添加到这个答案?它似乎仍然有点“手工波浪”,所以我不会原样接受它.