系统管理指南:IP 服务

对 DHCP 服务器问题进行疑难解答

在配置服务器时,您可能会遇到以下几类问题:

NIS+ 问题和 DHCP 数据存储

如果使用 NIS+ 作为 DHCP 数据存储,则可能遇到以下几类问题:

无法选择 NIS+ 作为 DHCP 数据存储

如果您尝试使用 NIS+ 作为数据存储,则 DHCP 管理程序可能不会提供 NIS+ 作为数据存储的选择。如果使用 dhcpconfig 命令,则可能会看到一条消息,指出 NIS+ 似乎未安装,它当前未运行。这两种症状表示尽管网络可能正在使用 NIS+,但尚未针对此服务器配置 NIS+。必须先将服务器系统配置为 NIS+ 客户机,然后才能选择 NIS+ 作为数据存储。

在将 DHCP 服务器系统设置为 NIS+ 客户机之前,以下语句必须成立:

有关配置 NIS+ 客户机的详细信息,请参见《System Administration Guide: Naming and Directory Services (NIS+)》中的“Setting Up NIS+ Client Machines”

未完全配置用于 DHCP 数据存储的 NIS+

将 NIS+ 成功用于 DHCP 之后,如果对 NIS+ 进行更改,则可能会遇到错误。这些更改可能会引起配置问题。请使用以下问题说明和解决方法来帮助确定配置问题的原因。

问题:

NIS+ 域中不存在根对象。

解决方法:

键入以下命令:

/usr/lib/nis/nisstat

此命令会显示域的统计信息。如果不存在根对象,则不会返回任何统计信息。

使用《System Administration Guide: Naming and Directory Services (NIS+)》设置 NIS+ 域。

问题:

NIS+ 无法用于 passwdpublickey 信息。

解决方法:

键入以下命令来查看名称服务转换器的配置文件:

cat /etc/nsswitch.conf

passwdpublickey 项中检查 "nisplus" 关键字。有关配置名称服务转换器的信息,请参阅《System Administration Guide: Naming and Directory Services (NIS+)》

问题:

域名为空。

解决方法:

键入以下命令:

domainname

如果此命令列出一个空字符串,则表明域尚未设置域名。请使用本地文件进行数据存储或者为网络设置 NIS+ 域。请参阅《System Administration Guide: Naming and Directory Services (NIS+)》

问题:

NIS_COLD_START 文件不存在。

解决方法:

在服务器系统上键入以下命令来确定此文件是否存在:

cat /var/nis/NIS_COLD_START

使用本地文件进行数据存储或者创建 NIS+ 客户机。请参阅《System Administration Guide: Naming and Directory Services (NIS+)》

有关 DHCP 数据存储的 NIS+ 访问问题

NIS+ 访问问题可能会导致有关 DES 凭证不正确或者更新 NIS+ 对象或表的权限不足的错误消息。请使用以下问题说明和解决方案来确定所遇到的 NIS+ 访问错误的原因。

问题:

DHCP 服务器系统没有创建对 NIS+ 域中 org_dir 对象的访问权限。

解决方法:

键入以下命令:


nisls -ld org_dir

访问权限以 r---rmcdrmcdr--- 形式列出,其中权限分别应用于无人 (nobody)、属主 (owner)、组 (group) 和全局 (world)。对象的属主将在随后列出。

通常,org_dir 目录对象为属主和组提供了完全权限。完全权限包括读取、修改、创建和销毁。org_dir 目录对象仅会为全局和无人这两个类提供读取访问权限。

DHCP 服务器名必须作为 org_dir 对象的属主列出,或者作为组的主体列出。组必须具有创建访问权限。请使用以下命令列出组:


nisls -ldg org_dir

如有必要,可使用 nischmod 命令更改 org_dir 的权限。例如,要向组添加创建权限,可键入以下命令:


nischmod g+c org_dir

有关更多信息,请参见 nischmod(1) 手册页。

问题:

DHCP 服务器没有在 org_dir 对象下创建表的权限。

通常,此问题表示服务器系统的主体名不是 org_dir 对象的所属组的成员,或者不存在所属组。

解决方法:

键入以下命令查找所属组的名称:


niscat -o org_dir

查找显示如下内容的行:

Group : "admin.example.com."

使用以下命令列出组中的主体名:


nisgrpadm -l groupname

例如,以下命令可列出组 admin.example.com 的主体名:

nisgrpadm -l admin.example.com

服务器系统名应作为组的显式成员列出,或者作为隐式成员包括在组中。如有必要,可使用 nisgrpadm 命令将服务器系统的名称添加到组中。

例如,要将服务器名称 pacific 添加到组 admin.example.com 中,可键入以下命令:


nisgrpadm -a admin.example.com pacific.example.com

有关更多信息,请参见 nisgrpadm(1) 手册页。

问题:

DHCP 服务器在 NIS+ cred 表中没有有效的数据加密标准 (Data Encryption Standard, DES) 凭证。

解决方法:

如果存在凭证问题,则会显示错误消息,表明用户在 NIS+ 名称服务中没有 DES 凭证。

使用 nisaddcred 命令可为 DHCP 服务器系统添加安全凭证。

以下示例说明如何在域 example.com 中为系统 mercury 添加 DES 凭证:


nisaddcred -p unix.mercury@example.com \
-P mercury.example.com. DES example.com.

此命令会提示输入超级用户口令,生成加密密钥时需要使用此口令。

有关更多信息,请参见 nisaddcred(1M) 手册页。

DHCP 中的 IP 地址分配错误

当客户机尝试获取或检验 IP 地址时,可能会出现一些问题,这些问题记录到 syslog 中或以服务器调试模式输出。以下列出的常见错误消息后指明了可能的原因和解决方案。


There is no n.n.n.n dhcp-network table for DHCP client's network

原因:

客户机正在请求特定的 IP 地址或请求延长其当前 IP 地址的租用期。DHCP 服务器无法找到此地址的 DHCP 网络表。

解决方法:

DHCP 网络表可能已被错误地删除。您可以通过使用 DHCP 管理程序或 dhcpconfig 命令再次添加网络来重新创建网络表。


ICMP ECHO reply to OFFER candidate: n.n.n.n, disabling

原因:

要提供给 DHCP 客户机的 IP 地址已处于使用状态。如果多台 DHCP 服务器拥有此地址,则可能会出现此问题。如果已为非 DHCP 网络客户机手动配置了地址,也可能会出现此问题。

解决方法:

确定正确的地址拥有权。更正 DHCP 服务器数据库或主机的网络配置。


ICMP ECHO reply to OFFER candidate: n.n.n.n. No corresponding dhcp network record.

原因:

要提供给 DHCP 客户机的 IP 地址在网络表中没有记录。此错误表示选择了 IP 地址之后,便从 DHCP 网络表中删除了此地址记录。此错误仅会在完成重复地址检查之前的短时间内出现。

解决方法:

使用 DHCP 管理程序或 pntadm 命令查看 DHCP 网络表。如果 IP 地址缺失,请从 DHCP 管理程序的“地址”选项卡上的“编辑”菜单中选择“创建”来创建地址。您还可以使用 pntadm 创建 IP 地址。


DHCP network record for n.n.n.nis unavailable, ignoring request.

原因:

所请求的 IP 地址的记录不在 DHCP 网络表中,因此服务器将删除此请求。

解决方法:

使用 DHCP 管理程序或 pntadm 命令查看 DHCP 网络表。如果 IP 地址缺失,请从 DHCP 管理程序的“地址”选项卡上的“编辑”菜单中选择“创建”来创建地址。您还可以使用 pntadm 创建地址。


n.n.n.n currently marked as unusable.

原因:

无法提供所请求的 IP 地址,因为此地址已在网络表中标记为不可用。

解决方法:

您可以使用 DHCP 管理程序或 pntadm 命令来使此地址可用。


n.n.n.n was manually allocated. No dynamic address will be allocated.

原因:

已经为客户机 ID 指定了一个手动分配的地址,并且此地址标记为不可用。服务器无法为此客户机分配其他地址。

解决方法:

您可以使用 DHCP 管理程序或 pntadm 命令使此地址可用,或者为此客户机手动分配其他地址。


Manual allocation (n.n.n.n, client ID) has n other records. Should have 0.

原因:

已经为具有指定客户机 ID 的客户机手动指定了多个 IP 地址。一台客户机只能指定一个地址。服务器将选择网络表中最近手动指定的地址。

解决方法:

使用 DHCP 管理程序或 pntadm 命令修改 IP 地址,从而删除其他手动分配的地址。


No more IP addresses on n.n.n.nnetwork.

原因:

在指定网络中,当前由 DHCP 管理的所有 IP 地址均已分配。

解决方法:

使用 DHCP 管理程序或 pntadm 命令为该网络创建新的 IP 地址。


Client: clientid lease on n.n.n.n expired.

原因:

租用期不可协商并已超时。

解决方法:

客户机应该自动重新启动协议以获取新的租用期。


Offer expired for client: n.n.n.n

原因:

服务器为客户机提供 IP 地址,但客户机响应时间太长而导致所提供的地址过期。

解决方法:

客户机应该再次自动发出一条搜索消息。如果此消息也超时,请增加 DHCP 服务器对所提供的地址进行高速缓存的超时时间。在 DHCP 管理程序中,从“服务”菜单中选择“修改”。


Client: clientid REQUEST is missing requested IP option.

原因:

客户机的请求未指定所提供的 IP 地址,所以 DHCP 服务器忽略了该请求。如果使用的第三方 DHCP 客户机不符合更新的 DHCP 协议 RFC 2131,则可能会出现此问题。

解决方法:

更新客户机软件。


Client: clientid is trying to renew n.n.n.n, an IP address it has not leased.

原因:

此客户机在 DHCP 网络表中的 IP 地址与该客户机在其更新请求中指定的 IP 地址不匹配。DHCP 服务器未更新租期。如果在客户机仍在使用该 IP 地址时删除该客户机的记录,则可能会出现此问题。

解决方法:

使用 DHCP 管理程序或 pntadm 命令检查网络表,并在必要时更正客户机的记录。应将客户机 ID 绑定到指定的 IP 地址。如果客户机 ID 未绑定,请编辑地址属性以添加客户机 ID。


Client: clientid is trying to verify unrecorded address: n.n.n.n, ignored.

原因:

指定的客户机尚未在 DHCP 网络表中注册此地址,所以此 DHCP 服务器忽略了该请求。

网络中的其他 DHCP 服务器可能已为此客户机指定了该地址。但是,也可能是由于在客户机仍在使用 IP 地址时删除了该客户机的记录。

解决方法:

使用 DHCP 管理程序或 pntadm 命令检查此服务器以及网络中任何其他 DHCP 服务器上的网络表。如有必要,请进行更正。

您也可以不执行任何操作并使租用过期。客户机会自动请求新的地址租用期。

如果希望客户机立即获取新的租用期,请键入以下命令,在客户机上重新启动 DHCP 协议:


ifconfig interface dhcp release
ifconfig interface dhcp start