系统管理指南:IP 服务

DHCP 客户机无法获取所请求的主机名

以下列表介绍了客户机在获取其请求的主机名时可能会遇到的问题以及建议的解决方案。

问题:

客户机接受了无法发布 DNS 更新的 DHCP 服务器所提供的地址。

解决方法:

如果有两台 DHCP 服务器可用于客户机,则这两台服务器都应配置为提供 DNS 更新。有关配置 DHCP 服务器和 DNS 服务器的信息,请参见通过 DHCP 服务器启用动态 DNS 更新

要确定是否将 DHCP 服务器配置为提供 DNS 更新,请执行下列操作:

  1. 确定客户机的 DHCP 服务器的 IP 地址。在客户机系统上,使用 snoop 或其他应用程序来捕获网络包。请参见如何使用 snoop 监视 DHCP 网络通信流量,并在客户机而不是服务器上执行此过程。在 snoop 输出中,查找 DHCP 服务器标识符以获取服务器的 IP 地址。

  2. 登录到 DHCP 服务器系统以检验此系统是否配置为进行 DNS 更新。请以超级用户身份键入以下命令:

    dhcpconfig -P

    如果将 UPDATE_TIMEOUT 列为服务器参数,则会将 DHCP 服务器配置为进行 DNS 更新。

  3. 在 DNS 服务器上,查看 /etc/named.conf 文件。在相应域的 zone 部分中查找 allow-update 关键字。如果服务器允许通过 DHCP 服务器进行 DNS 更新,则 DHCP 服务器的 IP 地址将在 allow-update 关键字中列出。

问题:

客户机使用 FQDN 选项来指定主机名。Oracle Solaris : DHCP 当前不支持 FQDN 选项,因为此选项没有正式包含在 DHCP 协议中。

解决方法:

在服务器上,使用 snoop 或其他应用程序来捕获网络包。请参见如何使用 snoop 监视 DHCP 网络通信流量。在 snoop 输出中,查找来自客户机的包中的 FQDN 选项。

将客户机配置为使用 Hostname 选项指定主机名。Hostname 的选项代码为 12。请参阅客户机文档以获取有关说明。

有关 Oracle Solaris : 客户机,请参见如何使 Oracle Solaris : DHCPv4 客户机请求特定的主机名

问题:

为客户机提供地址的 DHCP 服务器不知道客户机的 DNS 域。

解决方法:

在 DHCP 服务器上,查找具有有效值的 DNSdmain 选项。在为此客户机处理的宏中,将 DNSdmain 选项设置为正确的 DNS 域名。DNSdmain 通常包含在网络宏中。有关更改宏中的选项值的信息,请参见修改 DHCP 宏

问题:

客户机所请求的主机名对应于未由 DHCP 服务器管理的 IP 地址。Oracle Solaris : DHCP 服务器无法对不属于该服务器管理的 IP 地址执行 DNS 更新。

解决方法:

检查 syslog 以获取 DHCP 服务器发出的以下消息之一:

将客户机配置为请求其他名称。请参见如何使 Oracle Solaris : DHCPv4 客户机请求特定的主机名。选择映射到由 DHCP 服务器管理的地址的名称。您可以在 DHCP 管理程序的“地址”选项卡中看到地址映射。或者,选择未映射到任何 IP 地址的地址。

问题:

客户机所请求的主机名对应于当前不可用的 IP 地址。此地址可能正在使用,已租用给其他客户机或者准备提供给其他客户机。

解决方法:

检查 syslog 以获取 DHCP 服务器发出的以下消息: ICMP ECHO reply to OFFER candidate: n.n.n.n

将客户机配置为选择对应于其他 IP 地址的名称。或者,从使用此地址的客户机中回收此地址。

问题:

无法将 DNS 服务器配置为接受来自 DHCP 服务器的更新。

解决方法:

在 DNS 服务器上,检查 /etc/named.conf 文件。在 DHCP 服务器域相应的 zone 部分内的 allow-update 关键字中,查找 DHCP 服务器的 IP 地址。如果不存在此 IP 地址,则无法将 DNS 服务器配置为接受来自 DHCP 服务器的更新。

有关配置 DHCP 服务器的信息,请参见如何针对 DHCP 客户机启用动态 DNS 更新

如果 DHCP 服务器具有多个接口,则可能需要将 DNS 服务器配置为接受来自所有 DHCP 服务器地址的更新。在 DNS 服务器上,启用调试以查看更新是否到达 DNS 服务器。如果 DNS 服务器收到更新请求,请检查调试模式输出以确定无法进行更新的原因。有关 DNS 调试模式的信息,请参见 in.named.1M 手册页。

问题:

DNS 更新可能未在分配的时间内完成。如果 DNS 更新未在已配置的时间限制内完成,则 DHCP 服务器不会将主机名返回给客户机。但是,它会继续尝试完成 DNS 更新。

解决方法:

使用 nslookup 命令确定更新是否已成功完成。请参见 nslookup(1M) 手册页。

例如,假定 DNS 域为 hills.example.org,DNS 服务器的 IP 地址为 10.76.178.11。客户机要注册的主机名为 cathedral。您可以使用以下命令确定是否已向此 DNS 服务器中注册了 cathedral

nslookup cathedral.hills.example.org 10.76.178.11

如果更新成功完成,但用时超过了分配的时间,则需要增大超时值。请参见如何针对 DHCP 客户机启用动态 DNS 更新。在此过程中,应该增加在超时之前等待 DNS 服务器发出响应的秒数。