dhcp服务器显示主机名,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(无域).如何剥离域名?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的C++例子,使用QT库向本地路由器的DHCP服务器申请IP地址,并获取网关、子网掩码和DNS: ```c++ #include <QCoreApplication> #include <QNetworkInterface> #include <QNetworkAddressEntry> #include <QProcess> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // 获取本地网络接口列表 QList<QNetworkInterface> interfaces = QNetworkInterface::allInterfaces(); // 遍历接口列表,找到第一个支持DHCP的接口 QNetworkInterface dhcpInterface; foreach (QNetworkInterface iface, interfaces) { if (iface.flags().testFlag(QNetworkInterface::IsUp) && iface.flags().testFlag(QNetworkInterface::IsRunning) && !iface.flags().testFlag(QNetworkInterface::IsLoopBack)) { QList<QNetworkAddressEntry> entries = iface.addressEntries(); foreach (QNetworkAddressEntry entry, entries) { if (entry.dhcp()) { dhcpInterface = iface; break; } } } } // 如果找到支持DHCP的接口,执行dhclient命令来获取IP地址、网关、子网掩码和DNS if (!dhcpInterface.isNull()) { QString interfaceName = dhcpInterface.name(); QProcess process; process.start("dhclient " + interfaceName); if (process.waitForFinished()) { QString output = process.readAllStandardOutput(); QStringList lines = output.split("\n"); QString ipAddress, gateway, netmask, dns; foreach (QString line, lines) { if (line.contains("bound to")) { ipAddress = line.section(" ", 2).trimmed(); } else if (line.contains("routers")) { gateway = line.section(" ", 2).trimmed(); } else if (line.contains("subnet mask")) { netmask = line.section(" ", 2).trimmed(); } else if (line.contains("domain-name-servers")) { dns = line.section(" ", 2).trimmed(); } } // 输出获取到的IP地址、网关、子网掩码和DNS qDebug() << "IP address: " << ipAddress; qDebug() << "Gateway: " << gateway; qDebug() << "Netmask: " << netmask; qDebug() << "DNS: " << dns; } } return a.exec(); } ``` 请注意,这个例子只能在Linux系统上运行,并且需要root权限才能执行dhclient命令。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值