linux – 当我没有在dhclient.conf中定义一个时,我的DHCP服务器如何知道我的机器的主机名?

我正试图在我们的网络上解决与DHCP相关的一些时髦的DNS问题(我怀疑我们目前运行的是多个DHCP服务器),并且在试图解决这个问题时,我发现有一些奇怪的新服务器我只是建立.

有问题的服务器是运行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&gt ;,则dhclient会将文字文本< HOSTNAME>发送到DHCP服务器).据报道herehere,这适用于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服务器,它将主机名回显给每个客户端.今天我们在该服务器上禁用了D​​HCP,并切换到使用主域控制器上的内置DHCP服务器.我们从PDC的DHCP租约也不包括选项主机名,但它似乎不会影响任何东西.机器在DNS中更新,他们都可以通过主机名找到对方.

When I run hostname,the server
returns fozzie.our.domain,but
dhclient.eth0.leases says the hostname
option was set to fozzie (no domain).
How did it kNow to strip off the
domain?

这是我不完全理解DHCP的复杂性.我们的DHCP服务器已设置为使用我们的域配置所有客户端.我猜测DHCP服务器足够聪明,可以从客户端发送的主机名中删除域名部分.

任何人都有任何更正或澄清添加到这个答案?它似乎仍然有点“手工波浪”,所以我不会原样接受它.

相关文章

在Linux上编写运行C语言程序,经常会遇到程序崩溃、卡死等异...
git使用小结很多人可能和我一样,起初对git是一无所知的。我...
1. 操作系统环境、安装包准备 宿主机:Max OSX 10.10.5 虚拟...
因为业务系统需求,需要对web服务作nginx代理,在不断的尝试...
Linux模块机制浅析 Linux允许用户通过插入模块,实现干预内核...
一、Hadoop HA的Web页面访问 Hadoop开启HA后,会同时存在两个...