系统管理指南:IP 服务

第 3 部分 DHCP

本部分介绍有关动态主机配置协议 (Dynamic Host Configuration Protocol, DHCP) 的概念性信息,以及 Oracle Solaris : DHCP 服务在规划、配置、管理和故障排除方面所涉及的任务。

第 12 章 关于 Oracle Solaris : DHCP(概述)

本章介绍动态主机配置协议 (Dynamic Host Configuration Protocol, DHCP) 并解释了该协议的基础概念,同时也说明了在网络中使用 DHCP 的优点。

本章包含以下信息:

关于 DHCP 协议

使用 DHCP 协议,可以使 TCP/IP 网络中的主机系统在引导时针对网络自动进行配置。DHCP 使用客户机/服务器机制。服务器为客户机存储和管理配置信息,并根据客户机的请求提供此信息。该信息中包含客户机的 IP 地址,以及有关客户机可使用的网络服务的信息。

DHCP 由早期的 BOOTP 协议发展而来,后者设计用于在 TCP/IP 网络上引导系统。对于客户机和服务器之间传送的消息,DHCP 使用与 BOOTP 相同的格式。然而,与 BOOTP 消息不同,DHCP 消息可包含客户机的网络配置数据。

DHCP 的主要优点是它能够通过租用来管理 IP 地址的指定。可通过租用回收未使用的 IP 地址。这些回收的 IP 地址可以重新指定给其他客户机。使用 DHCP 的站点所用的 IP 地址池小于为所有客户机指定永久性 IP 地址时所需的 IP 地址池。

使用 Oracle Solaris : DHCP 的优势

在设置 TCP/IP 网络以及进行该网络的日常管理时,某些任务很耗时,而 DHCP 可以帮助您处理这些任务。请注意,Oracle Solaris : DHCP 只能使用 IPv4。

Oracle Solaris : DHCP 拥有下列优点:

DHCP 的工作原理

您必须先安装和配置 DHCP 服务器。在配置过程中,您需要指定客户机在网络上运行时所需的有关网络的信息。具备该信息后,客户机便可请求并接收网络信息。

下图显示了 DHCP 服务事件的序列。圆圈中的数字与图表之后的说明中的编号相对应。

图 12–1 DHCP 服务事件的序列

图表显示了 DHCP 客户机和服务器之间的通信序列。图表之后的说明对该序列进行了解释。

上图显示了以下步骤:

  1. 客户机通过将搜索消息广播到本地子网上的有限广播地址 (255.255.255.255) 来搜索 DHCP 服务器。如果存在路由器并已将其配置为充当 BOOTP 中继代理的角色,请求便会传送到不同子网上的其他 DHCP 服务器。客户机的广播包括其唯一的 ID,在 Oracle Solaris : DHCP 实现中,此 ID 由客户机的介质访问控制 (Media Access Control, MAC) 地址派生而来。在以太网上,MAC 地址与以太网地址相同。

    接收搜索消息的 DHCP 服务器可以通过查看以下信息来确定客户机的网络:

    • 请求来自哪个网络接口?服务器会确定客户机是位于通过接口连接的网络上,还是正在使用连接到该网络的 BOOTP 中继代理。

    • 请求中包含 BOOTP 中继代理的 IP 地址吗?当请求通过中继代理时,中继代理会将其地址插入到请求标头中。当服务器检测到中继代理地址时,服务器知道该地址的网络部分表示客户机的网络地址,这是因为中继代理必须连接到客户机的网络。

    • 客户机的网络有子网吗?服务器会查看 netmasks 表,来查找由中继代理地址或接收请求的网络接口地址指定的网络使用的子网掩码。服务器一旦知道了所用的子网掩码,就可以确定网络地址的哪一部分表示主机地址,然后可以选择适用于客户机的 IP 地址。有关 netmasks 的信息,请参见 netmasks(4) 手册页。

  2. 在 DHCP 服务器确定客户机的网络之后,便会选择相应的 IP 地址并确认该地址尚未使用。然后,DHCP 服务器通过广播一条提供消息来响应客户机。该提供消息中包含选定的 IP 地址以及有关可为客户机配置的服务的信息。每台服务器都会暂时保留所提供的 IP 地址,直到客户机确定是否使用该 IP 地址为止。

  3. 客户机会根据所提供的服务的数量和类型来选择最佳内容。客户机会广播一条请求来指定提供最佳内容的服务器的 IP 地址。该广播确保所有发出响应的 DHCP 服务器都知道客户机已经选择了一台服务器。未被选中的服务器会取消对之前提供的 IP 地址的保留。

  4. 被选中的服务器会为客户机分配 IP 地址,并将信息存储到 DHCP 数据存储中。该服务器还会向客户机发送一条确认消息 (acknowledgement message, ACK)。确认消息包含客户机的网络配置参数。客户机使用 ping 实用程序测试此 IP 地址,以确保它没有被其他系统使用。然后,客户机会继续引导以加入网络。

  5. 客户机会监视租用时间。当设定的时间段过去时,客户机会向所选的服务器发送一条新消息来延长租用时间。

  6. 接收请求的 DHCP 服务器会延长租用时间,前提是租用仍然遵循由管理员设置的本地租用策略。如果服务器在 20 秒内没有响应,客户机便会广播一条请求,以便其他 DHCP 服务器之一可以延长租用期。

  7. 当客户机不再需要 IP 地址时,便会通知服务器已释放了 IP 地址。此通知可以在正常关机时发送,也可以手动发送。

Oracle Solaris : DHCP 服务器

Oracle Solaris : DHCP 服务器在主机系统上作为 Oracle Solaris : 中的守护进程运行。该服务器有两个基本功能:

Oracle Solaris : DHCP 服务器也可配置为执行以下附加功能:

DHCP 服务器管理

您能够以超级用户身份使用 DHCP 管理程序或命令行实用程序(如DHCP 命令行实用程序中所述),来启动、停止和配置 DHCP 服务器。通常,DHCP 服务器配置为在系统引导时自动启动,在系统关闭时自动停止。一般情况下,您无需手动启动和停止服务器。

DHCP 数据存储

Oracle Solaris : DHCP 服务器使用的所有数据都保存在数据存储内。数据存储可能包含纯文本文件、NIS+ 表或二进制格式文件。当配置 DHCP 服务时,请选择要使用的数据存储的类型。选择 DHCP 数据存储一节中介绍了数据存储类型之间的差异。您可以使用 DHCP 管理程序或 dhcpconfig 命令将数据存储从一种格式转换为另一种格式。

您还可以将数据从一台 DHCP 服务器的数据存储移动到另一台服务器的数据存储。您可以使用用于数据存储的导出和导入实用程序,即使服务器正在使用不同的数据存储格式时也是如此。借助 DHCP 管理程序或 dhcpconfig 命令,您可以导出和导入数据存储的全部内容或其中一部分内容。


注 –

如果您开发自己的代码模块来创建 Oracle Solaris : DHCP(服务器和管理工具)和数据库之间的接口,则可以针对 DHCP 数据存储使用任何数据库或文件格式。有关更多信息,请参见《Solaris DHCP Service Developer’s Guide》


在 Oracle Solaris : DHCP 数据存储内有两种类型的表。您可以使用 DHCP 管理程序或命令行实用程序来查看和管理这些表的内容。数据表的类型如下:

dhcptab

dhcptab 表包含客户机可以从 DHCP 服务器获取的所有信息。DHCP 服务器在每次启动时都会扫描 dhcptab 表。dhcptab 表的文件名根据所用的数据存储的不同而异。例如,由 NIS+ 数据存储 SUNWnisplus 创建的 dhcptab 表为 SUNWnisplus1_dhcptab

DHCP 协议定义了许多可传送到客户机的标准信息项。这些项被称为参数、符号或选项。在 DHCP 协议中,选项由数字代码和文本标签定义,但没有值。下表显示了一些常用的标准选项。

表 12–1 DHCP 标准选项样例

代码 

标签 

说明 

Subnet

子网掩码 IP 地址 

Router

路由器的 IP 地址 

DNSserv

DNS 服务器的 IP 地址 

12 

Hostname

客户机主机名的文本字符串 

15 

DNSdmain

DNS 域名 

当您在配置服务器的过程中提供信息时,会自动为一些选项指定值。您也可以在以后明确为其他选项指定值。各个选项及其值将被传送到客户机以提供配置信息。例如,选项/值对 DNSdmain=Georgia.Peach.COM 会将客户机的 DNS 域名设置为 Georgia.Peach.COM

这些选项和其他选项可组合成名为的容器,此容器简化了将信息传送到客户机的过程。在服务器配置过程中会自动创建一些宏,这些宏包含在配置过程中被指定值的选项。宏也可以包含其他宏。

dhcptab 表的格式在 dhcptab(4) 手册页中进行了介绍。在 DHCP 管理程序中,在“选项”和“宏”选项卡中显示的所有信息都来自 dhcptab 表。有关选项的更多信息,请参见关于 DHCP 选项。有关宏的更多信息,请参见关于 DHCP 宏

请注意,不应手动编辑 dhcptab 表。您应该使用 dhtadm 命令或 DHCP 管理程序来创建、删除或修改选项和宏。

DHCP 网络表

DHCP 网络表将客户机标识符映射到 IP 地址和与每个地址关联的配置参数。网络表的格式在 dhcp_network(4) 手册页中进行了介绍。在 DHCP 管理程序中,在“地址”选项卡中显示的所有信息都来自网络表。

DHCP 管理程序

DHCP 管理程序是可用于执行与 DHCP 服务关联的所有管理功能的图形用户界面 (graphical user interface, GUI) 工具。此工具除了用于管理服务器之外,还可用于管理服务器所用的数据。您必须以超级用户身份运行 DHCP 管理程序。

可以通过以下方法在服务器上使用 DHCP 管理程序:

使用 DHCP 管理程序,您可以通过以下方法管理 IP 地址、网络配置宏和网络配置选项:

DHCP 管理程序允许您通过以下方法管理 DHCP 数据存储:

DHCP 管理程序提供了使用此工具可执行的过程的全面联机帮助。有关更多信息,请参见关于 DHCP 管理程序

DHCP 命令行实用程序

所有 DHCP 管理功能都可以通过命令行实用程序来执行。如果您以超级用户身份登录或以指定给 DHCP 管理配置文件的用户身份登录,就可以运行实用程序。请参见设置用户访问 DHCP 命令的权限

下表列出了实用程序,并说明了每个实用程序的用途。

表 12–2 DHCP 命令行实用程序

命令 

说明和用途 

手册页链接 

in.dhcpd

DHCP 服务守护进程。使用命令行参数,您可以设置数个运行时选项。

in.dhcpd(1M)

dhcpconfig

用于配置和取消配置 DHCP 服务器。使用该实用程序,您可以从命令行执行许多 DHCP 管理程序功能。该实用程序主要在需要自动执行某些配置功能的站点的脚本中使用。dhcpconfig 从服务器系统的网络拓扑文件中收集信息,来创建对初始配置有用的信息。

dhcpconfig(1M)

dhtadm

用于添加、删除和修改 DHCP 客户机的配置选项和宏。使用该实用程序,您可以间接编辑 dhcptab 表,以确保 dhcptab 表的格式正确。不能直接编辑 dhcptab 表。

dhtadm(1M)

pntadm

用于管理 DHCP 网络表。您可以使用该实用程序来执行以下任务:

  • 在 DHCP 管理下添加和删除 IP 地址和网络。

  • 修改指定的 IP 地址的网络配置。

  • 在 DHCP 管理下显示有关 IP 地址和网络的信息。

pntadm(1M)

基于角色的 DHCP 命令访问控制

dhcpconfigdhtadmpntadm 命令的安全性由基于角色的访问控制 (role-based access control, RBAC) 设置决定。在缺省情况下,这些命令只能由超级用户运行。如果您想在其他用户名下使用这些命令,必须按照设置用户访问 DHCP 命令的权限中所述,将该用户名指定到 DHCP 管理配置文件中。

DHCP 服务器配置

当您在要运行 DHCP 服务器的系统上首次运行 DHCP 管理程序时,需要对 Oracle Solaris : DHCP 服务器进行配置。

DHCP 管理程序服务器配置对话框将提示您输入在网络上启用并运行 DHCP 服务器时所需的基本信息。某些缺省值可从现有的系统文件中获取。如果您没有为网络配置系统,就没有缺省值。DHCP 管理程序会提示输入以下信息:

您也可以使用 dhcpconfig 命令来配置 DHCP 服务器。该实用程序自动从现有的系统文件中收集信息来提供有用的初始配置。因此,您必须确保在运行 dhcpconfig 之前这些文件是正确的。有关 dhcpconfig 用来获取信息的各种文件的信息,请参见 dhcpconfig(1M) 手册页。

IP 地址分配

Oracle Solaris : DHCP 服务器支持以下类型的 IP 地址分配:

网络配置信息

您需要确定要提供给 DHCP 客户机的信息。在配置 DHCP 服务器时,需要提供有关网络的基本信息。然后,您可以添加更多想要提供给客户机的信息。

DHCP 服务器以选项/值对和宏的形式将网络配置信息存储在 dhcptab 表中。选项是指您要提供给客户机的网络数据的关键字。值被指定到选项并以 DHCP 消息的形式传送到客户机。例如,NIS 服务器地址通过一个名为 NISservs 的选项传送。NISservs 选项有一个与 DHCP 服务器指定的 IP 地址列表相同的值。宏提供了一种将要提供给客户机的任意数目的选项组合起来的便捷方法。您可以使用 DHCP 管理程序创建宏来组合选项并将值指定到选项。如果您更喜欢使用命令行工具,则可以通过 DHCP 配置表管理实用程序 dhtadm 来使用选项和宏。

关于 DHCP 选项

在 Oracle Solaris : DHCP 中,选项是要传送到客户机的一条网络信息。DHCP 介绍中也将选项称为符号标记。选项由数字代码和文本标签进行定义。在 DHCP 服务中使用选项时,便会为其赋值。

DHCP 协议为通常会指定的网络数据定义了大量的标准选项: SubnetRouterBroadcstNIS+domHostnameLeaseTim 便是其中的几个示例。dhcp_inittab(4) 手册页中给出了标准选项的完整列表。您绝不能修改标准选项关键字。但是,您可以在将选项纳入宏时为与网络相关的选项指定值。

您可以为不是由标准选项表示的数据创建新的选项。您所创建的选项必须归为以下三种类别之一:

第 15 章介绍创建、修改和删除 DHCP 选项的过程。

关于 DHCP 宏

在 Oracle Solaris : DHCP 服务中,是指网络配置选项以及您为这些选项指定的值的集合。创建宏是为了组合要传送到特定的客户机或客户机类型的选项。例如,专用于特定子网中所有客户机的宏可能包含子网掩码、路由器 IP 地址、广播地址、NIS+ 域和租用时间的选项/值对。

DHCP 服务器的宏处理

当 DHCP 服务器处理宏时,它将宏中定义的网络选项及值放在 DHCP 消息中传送给客户机。对于特定类型的客户机,服务器会自动处理一些宏。

要让服务器自动处理宏,宏的名称必须符合下表中所示的类别之一。

表 12–3 自动处理的 DHCP 宏类别

宏类别 

说明 

客户机类 

宏名称与某类客户机相匹配,客户机类由客户机类型或操作系统分别指明或者由二者共同指明。例如,如果服务器有一个名为 SUNW.Sun-Blade-100 的宏,则所有硬件实现为 SUNW.Sun-Blade-100 的客户机都会自动收到 SUNW.Sun-Blade-100 宏中的值。

网络地址 

宏名称与 DHCP 管理的网络 IP 地址相匹配。例如,如果服务器有一个名为 10.53.224.0 的宏,则所有连接到 10.53.224.0 网络的客户机都会自动收到 10.53.224.0 宏中的值。

客户机 ID 

宏名称与客户机的某个唯一标识符相匹配,该标识符通常是从以太网地址或 MAC 地址中派生而来。例如,如果服务器有一个名为 08002011DF32 的宏,则客户机 ID 为 08002011DF32(从以太网地址 8:0:20:11:DF:32 中派生而来)的客户机会自动收到名为 08002011DF32 的宏中的值。

仅当以下条件之一成立时,才能处理其名称未使用表 12–3 中列出的任何类别的宏:


注 –

当配置服务器时,在缺省情况下会创建一个名称与服务器名称相匹配的宏。系统会为任何客户机自动处理该服务器宏,因为没有使用可引发自动处理的任一名称类型对该客户机进行命名。以后在服务器上创建 IP 地址时,便会将这些 IP 地址映射为在缺省情况下使用该服务器宏。


宏处理的顺序

    当 DHCP 客户机请求 DHCP 服务时,DHCP 服务器会确定与客户机相匹配的宏。服务器处理这些宏,并使用宏类别来确定处理的顺序。会首先处理最常见的类别,最后处理最特殊的类别。宏的处理顺序如下:

  1. 客户机类宏-最常见的类别

  2. 网络地址宏-比客户机类稍特殊

  3. 映射到 IP 地址的宏-比网络地址宏稍特殊

  4. 客户机 ID 宏-最特殊的类别,与某台客户机有关

包含在其他宏中的宏会作为容器宏的一部分来进行处理。

如果多个宏中包含同一选项,则会使用最特殊类别的宏中的该选项的值,因为它是最后处理的。例如,如果网络地址宏包含值为 24 小时的租用时间选项,而客户机 ID 宏包含值为 8 小时的租用时间选项,则客户机收到的租用时间为 8 小时。

DHCP 宏的大小限制

为宏中所有选项指定的值的总长度不得超过 255 个字节,包括选项代码和长度信息。此限制由 DHCP 协议指定。

最可能受此限制影响的是那些用于将路径传送到 Oracle Solaris : 安装服务器上的文件的宏。一般情况下,应该能够传送所需的最小量的供应商信息。在需要输入路径名的选项中,应该使用简短的路径名。如果创建指向长路径的符号链接,则可以传送更简短的链接名。

Oracle Solaris : DHCP 客户机

“客户机”一词有时用来指代在网络上充当客户机角色的物理计算机。但是,本文档中介绍的 DHCP 客户机是一种软件实体。Oracle Solaris : DHCP 客户机是在配置为从 DHCP 服务器接收网络配置的系统上的 Oracle Solaris : 中运行的守护进程 (dhcpagent)。其他供应商提供的 DHCP 客户机也可以使用 Oracle Solaris : DHCP 服务器的服务。但是,本文档仅介绍 Oracle Solaris : DHCP 客户机。

有关 Oracle Solaris : DHCP 客户机的详细信息,请参见第 16 章

第 13 章 规划 DHCP 服务(任务)

您可以在正在创建的或已经存在的网络中使用 DHCP 服务。如果要设置网络,请在尝试设置 DHCP 服务之前先阅读第 2 章。如果网络已经存在,请继续阅读本章内容。

本章介绍在网络上设置 DHCP 服务之前需要执行的操作。虽然您还可以使用命令行实用程序 dhcpconfig 来设置 DHCP 服务,但是此信息旨在用于 DHCP 管理程序。

本章包含以下信息:

为 DHCP 服务准备网络(任务列表)

在将网络设置为使用 DHCP 之前,必须收集信息以帮助您确定是配置一台还是多台服务器。使用下表中的任务列表来识别为使用 DHCP 服务而需要进行的网络准备工作。下表列出了各项任务、对任务内容的说明,以及对任务步骤进行详细描述的章节。

任务 

说明 

参考 

映射网络拓扑。 

确定并找到系统上可用的服务。 

映射网络拓扑

确定所需的 DHCP 服务器数量。 

根据预期的 DHCP 客户机数量确定所需的 DHCP 服务器数量。 

确定DHCP 服务器的数量

更新系统文件和 netmasks 表。

准确反映网络拓扑。 

更新系统文件和网络掩码表

映射网络拓扑

如果尚未映射网络拓扑,则应映射网络的物理结构。指明路由器和客户机的位置,以及提供网络服务的服务器的位置。此网络拓扑图可以帮助您确定用于提供 DHCP 服务的服务器。该图还可帮助确定 DHCP 服务器可以提供给客户机的配置信息。

有关规划网络的更多信息,请参见第 2 章

DHCP 配置过程可以从服务器的系统和网络文件中收集一些网络信息。更新系统文件和网络掩码表中介绍了这些文件。但是,您可能需要为客户机提供其他必须输入服务器宏的服务信息。检查网络拓扑时,请记录需要客户机识别的任何服务器的 IP 地址。例如,以下服务器可能会在系统上提供服务。DHCP 配置不会搜索这些服务器。

要避免的网络拓扑

在一些 IP 网络环境中,多个局域网 (local area networks, LAN) 共享同一网络硬件介质。这些网络可能会使用多个网络硬件接口或多个逻辑接口。DHCP 在这种共享介质网络中不能很好地工作。当多个 LAN 在同一物理网络上运行时,DHCP 客户机的请求便会发送到所有网络硬件接口。这种效果就好像将客户机同时连接到所有 IP 网络上一样。

DHCP 必须能够确定客户机的网络地址,以便为客户机指定一个适当的 IP 地址。如果在硬件介质上提供多个网络,则服务器无法确定客户机的网络。服务器在不知道网络号的情况下不能指定 IP 地址。

可以仅在其中一个网络上使用 DHCP。如果一个网络不能满足您的 DHCP 需求,则必须重新配置网络。您应该考虑以下建议:

确定DHCP 服务器的数量

您选择的数据存储选项会直接影响支持 DHCP 客户机所必需的服务器数量。下表显示了针对每种数据存储,一台 DHCP 服务器可以支持的 DHCP 和 BOOTP 客户机的最大数量。

表 13–1 一台 DHCP 服务器支持的客户机最大估计数量

数据存储类型 

支持的客户机最大数量 

文本文件 

10,000 

NIS+ 

40,000 

二进制文件 

100,000 

此最大数量是一个一般原则,不是绝对数量。一台 DHCP 服务器的客户机容量很大程度上依赖于服务器每秒必须处理的事务数量。租用时间和使用模式对事务处理率有重要影响。例如,假定租用设置为 12 小时并且用户在夜间关闭系统。如果许多用户在早上同一时间打开系统,服务器就会遇到事务处理高峰,因为许多客户机会同时请求租用。在这种环境中,DHCP 服务器只能支持较少的客户机;而在租用时间较长的环境或者由持续连接的设备(如电缆调制解调器)构成的环境中,DHCP 服务器可以支持更多客户机。

选择 DHCP 数据存储一节对各种数据存储类型进行了比较。

更新系统文件和网络掩码表

在 DHCP 配置过程中,DHCP 工具会扫描服务器上的各种系统文件,以查找可用于配置服务器的信息。

在运行 DHCP 管理程序或 dhcpconfig 配置服务器之前,必须确保系统文件中的信息是最新的。如果在配置服务器之后发现错误,请使用 DHCP 管理程序或 dhtadm 修改服务器上的宏。

下表列出了在 DHCP 服务器配置过程中收集到的一些信息及信息来源。请确保在服务器上配置 DHCP 之前已经正确设置了此信息。如果配置服务器之后对系统文件进行更改,则应重新配置服务以反映这些更改。

表 13–2 用于 DHCP 配置的信息

信息 

源 

注释 

时区 

系统日期、时区设置 

在安装 Oracle Solaris : 的过程中初始设置的日期和时区。您可以使用 date 命令更改日期。可以通过编辑 /etc/default/init 文件(设置 TZ 环境变量)来更改时区。有关更多信息,请参见 TIMEZONE(4) 手册页。

DNS 参数 

/etc/resolv.conf

DHCP 服务器使用 /etc/resolv.conf 文件获取 DNS 参数,如 DNS 域名和 DNS 服务器地址。有关 resolv.conf 的更多信息,请参见《系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)》resolv.conf(4) 手册页。

NIS 或 NIS+ 参数 

系统域名、nsswitch.conf、NIS 或 NIS+

DHCP 服务器使用 domainname 命令获取服务器系统的域名。nsswitch.conf 文件可指示服务器在何处查找基于域的信息。如果服务器系统是 NIS 或 NIS+ 客户机,则 DHCP 服务器会执行查询以获取 NIS 或 NIS+ 服务器的 IP 地址。有关更多信息,请参见 nsswitch.conf(4) 手册页。

缺省路由器 

系统路由表、用户提示符 

DHCP 服务器搜索网络路由列表来为连接到本地网络的客户机查找缺省路由器。如果客户机不在同一网络上,则 DHCP 服务器一定会提示您有关信息。 

子网掩码 

网络接口、netmasks

DHCP 服务器查看自己的网络接口来确定本地客户机的网络掩码和广播地址。如果请求已由中继代理转发,则服务器会在中继代理的网络上获取 netmasks 表中的子网掩码。

广播地址 

网络接口、netmasks

对于本地网络,DHCP 服务器通过查询网络接口来获取广播地址。对于远程网络,服务器使用 BOOTP 中继代理的 IP 地址和远程网络的网络掩码来计算网络的广播地址。 

为 DHCP 服务器配置制定决策(任务列表)

本节介绍在网络上配置第一台 DHCP 服务器之前要制定的一些决策。下表将指导您做出配置网络以使用 DHCP 所需的决定,并为每项任务提供相关链接,使其跳转至说明执行每项任务的步骤的章节。

任务 

说明 

参考 

为 DHCP 选择一台服务器。 

决定服务器是否满足系统运行 DHCP 服务的要求。 

选择运行 DHCP 服务的主机

选择数据存储。 

比较数据存储类型,确定最适用于站点的数据存储。 

选择 DHCP 数据存储

设置租用策略。 

了解 IP 地址租用,以帮助确定适用于站点的租用策略。 

设置租用策略

选择路由器地址或路由器搜索。 

确定 DHCP 客户机是使用路由器搜索还是使用特定的路由器。 

确定用于 DHCP 客户机的路由器

选择运行 DHCP 服务的主机

了解网络拓扑之后,可以根据以下系统要求来选择设置 DHCP 服务器的主机。

主机必须满足以下要求:

选择 DHCP 数据存储

您可以选择在文本文件、二进制文件或 NIS+ 目录服务中存储 DHCP 数据。下表总结了每种数据存储类型的功能,并指明了使用每种数据存储类型的环境。

表 13–3 DHCP 数据存储的比较

数据存储类型 

性能 

维护 

共享 

环境 

二进制文件 

高性能、高容量 

低维护成本,无需数据库服务器。必须使用 DHCP 管理程序或 dhtadmpntadm 来查看内容。建议对常规文件进行备份。

不能在 DHCP 服务器之间共享数据存储。 

包含许多网络的中型到大型环境,其中每个网络都包含数以千计的客户机。适用于小型到中型 ISP。 

NIS+  

中等性能和容量,依赖于 NIS+ 服务的性能和容量 

DHCP 服务器系统必须配置为 NIS+ 客户机。需要对 NIS+ 服务进行维护。必须使用 DHCP 管理程序或 dhtadmpntadm 来查看内容。建议使用 nisbackup 进行常规备份。

DHCP 数据分布在 NIS+ 中,并且多台服务器可以访问相同容器。 

小型到中型环境,其中每个网络最多可包含 5000 台客户机。 

文本文件 

中等性能、低容量 

低维护成本,无需数据库服务器。ASCII 格式是可读格式,不需要使用 DHCP 管理程序、dhtadmpntadm 来查看。建议对常规文件进行备份。

DHCP 服务器之间可以共享数据存储,前提是 DHCP 数据存储在一个通过 NFS 挂载点导出的文件系统上。 

包含少于 10,000 台客户机的小型环境,其中每个网络包含数百台到一千台客户机。 

由于 NIS 不支持快速增量更新,因此不会提供传统的 NIS 作为数据存储选项。如果网络使用的是 NIS,则应使用文本文件或二进制文件进行数据存储。

设置租用策略

租用期可指定 DHCP 服务器允许 DHCP 客户机使用特定 IP 地址的时间。在服务器的初始配置过程中,必须指定站点范围的租用策略。租用策略可指明租用时间,并指定客户机是否可以续订其租约。服务器会使用您提供的信息设置缺省宏中的选项值,这些宏在配置过程中由服务器创建。可以通过在创建的配置宏中设置选项来为特定的客户机或客户机类型设置不同的租用策略。

租用时间以小时数、天数或星期数的形式指定租用有效的时间。为客户机指定 IP 地址或者重新协商 IP 地址的租用时,会计算租用的截止日期和时间。同时还会将租用时间的小时数添加到客户机的 DHCP 确认的时间标记中。例如,假定 DHCP 确认的时间标记为 2005 年 9 月 16 日上午 9:15,并且租用时间为 24 小时。本示例中的租用截止时间为 2005 年 9 月 17 日上午 9:15。租用截止时间存储在客户机的 DHCP 网络记录中,可以使用 DHCP 管理程序或通过 pntadm 实用程序查看该时间。

租用时间值应该相对较小,以便快速回收过期地址,另外,该值还应该足够大,以使租用时间长于 DHCP 服务中断的时间。修复运行 DHCP 服务的系统后,客户机应当能够正常工作。一般原则是指定的时间应该是预期的系统停机时间的两倍。例如,如果需要四个小时来获取和更换故障部件并重新引导系统,请将租用时间指定为八个小时。

租用协商选项可确定客户机是否可以在租用过期之前与服务器重新协商租用。如果允许协商租用,则客户机会跟踪租用中剩余的时间。当租用时间经过一半时,客户机会请求 DHCP 服务器将租用延长到最初的租用时间。在系统多于 IP 地址的环境中,应禁用租用协商。然后,对于 IP 地址的使用强制执行时间限制。如果 IP 地址足够多,则应启用租用协商,以避免在租用到期时强制客户机关闭网络接口。如果使客户机获取新的租用,则客户机的 TCP 连接(如 NFS 和 telnet 会话)可能会中断。可以在服务器配置过程中针对所有客户机启用租用协商。您可以通过使用配置宏中的 LeaseNeg 选项针对特定的客户机或客户机类型启用租用协商。


注 –

在网络上提供服务的系统应保留它们的 IP 地址。这类系统不应受短期租用的限制。如果为这类系统指定保留的手动 IP 地址而不是永久租用的 IP 地址,则可以在这些系统中使用 DHCP。然后,可以检测何时不再使用系统的 IP 地址。


确定用于 DHCP 客户机的路由器

主机系统使用路由器来进行本地网络之外的任何网络通信。主机必须知道这些路由器的 IP 地址。

配置 DHCP 服务器时,必须通过两种方法之一为 DHCP 客户机提供路由器地址。其中一种方法是为路由器提供特定的 IP 地址。但是,首选方法是指定客户机应通过路由器搜索协议来查找路由器。

如果网络上的客户机可以执行路由器搜索,则即使只有一个路由器,也应该使用路由器搜索协议。通过路由器搜索,客户机可轻松适应网络中路由器的变化。例如,假定一个路由器出现故障并由具有新地址的路由器取代。客户机可以自动搜索新地址,而不必获取新的网络配置以得到新路由器地址。

为 IP 地址管理制定决策(任务列表)

作为 DHCP 服务设置的一部分,需要确定服务器要管理的 IP 地址的几个方面。如果网络需要多台 DHCP 服务器,可将某些 IP 地址的任务指定给每一台服务器。必须决定如何划分地址的责任。下表是一个任务列表,描述在网络上使用 DHCP 时管理 IP 地址的任务。该表还包括指向详细说明如何执行每项任务的相关章节的链接。

任务 

说明 

参考 

指定服务器应管理的地址。 

确定希望 DHCP 服务器管理的地址及其数量。 

IP 地址的数目和范围

决定服务器是否应自动为客户机生成主机名。 

了解如何生成客户机主机名,以便决定是否生成主机名。 

生成客户机主机名

确定要指定给客户机的配置宏。 

了解客户机配置宏,以便为客户机选择一个合适的宏。 

缺省客户机的配置宏

确定要使用的租用类型。 

了解租用类型,以帮助确定最适合您的 DHCP 客户机的类型。 

动态和永久租用类型

IP 地址的数目和范围

在服务器的初始配置过程中,可以使用 DHCP 管理程序,通过指定块中的地址总数和第一个地址来添加一个 IP 地址块(或称地址范围)。DHCP 管理程序可根据此信息添加一个连续地址的列表。如果有几个非连续地址块,则可以通过在初始配置之后再次运行 DHCP 管理程序的地址向导来添加其他地址。

在配置 IP 地址之前,需要了解待添加地址的初始块中的地址数目,以及地址范围中第一个地址的 IP 地址。

生成客户机主机名

DHCP 的动态性质意味着 IP 地址不会与使用它的系统的主机名永久关联。如果选择此选项,DHCP 管理工具可生成一个客户机名称来与每个 IP 地址关联。客户机名称由一个前缀(或称作根名称)、一个连字符和一个由服务器指定的编号组成。例如,如果根名称为 charlie,则客户机名称为 charlie-1charlie-2charlie-3,依此类推。

缺省情况下,生成的客户机名称以管理客户机的 DHCP 服务器的名称开头。此策略在包含多台 DHCP 服务器的环境下非常有用,因为您可以在 DHCP 网络表中快速查看任何给定的 DHCP 服务器所管理的客户机。不过,可以将根名称更改为您所选择的任何名称。

配置 IP 之前,请确定是否需要 DHCP 管理工具生成客户机名称,如果是,请再确定要使用的根名称。

如果指定在配置 DHCP 的过程中注册主机名,则可以将生成的客户机名称映射到 /etc/inet/hosts 、DNS 或 NIS+ 中的 IP 地址。有关更多信息,请参见客户机主机名注册

缺省客户机的配置宏

在 Oracle Solaris : DHCP 中,是指网络配置选项及其指定值的集合。DHCP 服务器使用宏来确定要发送到 DHCP 客户机的网络配置信息。

配置 DHCP 服务器时,管理工具将通过两种方法收集信息:一种是从系统文件中收集,另一种是通过用户指定的提示符或命令行选项直接从用户处收集。使用此信息,管理工具可创建以下宏:

客户机会先接收包含在网络地址宏中的选项,然后再接收映射到 IP 地址的宏中的选项。此处理顺序使服务器宏中的选项优先级高于网络地址宏中的任何冲突的选项。有关宏处理顺序的更多信息,请参见宏处理的顺序

动态和永久租用类型

租用类型可确定租用策略是否适用于您所配置的 IP 地址。在服务器的初始配置过程中,可以通过 DHCP 管理程序为正在添加的地址选择动态或永久租用。如果使用 dhcpconfig 命令配置 DHCP 服务器,则租用为动态租用。

如果某个 IP 地址具有动态租用,则 DHCP 服务器可管理该地址。DHCP 服务器可以将 IP 地址分配给客户机、延长租用时间、检测地址不再使用的时间以及回收该地址。如果某个 IP 地址具有永久租用,则 DHCP 服务器只能分配该地址。然后,客户机将一直拥有该地址,直到将其明确释放为止。释放该地址时,服务器可将其指定给另一台客户机。只要将地址配置为永久租用类型,它即可不受租用策略的限制。

配置 IP 地址范围时,选择的租用类型会应用于此范围内的所有地址。要最大限度地利用 DHCP,应针对大多数地址使用动态租用。如有必要,可随后将各个地址修改为永久租用。但是,应该将永久租用的总数保持在最小程度。

保留的 IP 地址和租用类型

可以通过将 IP 地址手动指定给特定的客户机来保留它们。保留的地址既可以与永久租用关联,也可以与动态租用关联。将保留的地址指定给一个永久租用时,以下语句成立:

如果将保留的地址指定给动态租用,则只能将该地址分配给与其绑定的客户机。但是,客户机必须像地址未保留那样跟踪租用时间并协商延长租用期。使用此策略,您可以通过查看网络表来跟踪客户机使用地址的时间。

在初始配置过程中,不能为所有 IP 地址创建保留的地址。保留的地址旨在少量地用于单个地址。

规划多台 DHCP 服务器

如果要配置多台 DHCP 服务器来管理 IP 地址,请考虑以下几条原则:

规划远程网络的 DHCP 配置

完成 DHCP 的初始配置之后,即可将 IP 地址放入 DHCP 管理的远程网络中。但是,由于系统文件不是服务器的本地文件,并且 DHCP 管理程序和 dhcpconfig 无法查找提供缺省值的信息,因此必须提供此信息。尝试配置远程网络之前,请确保您了解以下信息:

有关添加 DHCP 网络的过程,请参见添加 DHCP 网络

选择用于配置 DHCP 的工具

收集信息和规划 DHCP 服务之后,即可准备配置 DHCP 服务器。您可以使用 DHCP 管理程序或命令行实用程序 dhcpconfig 配置服务器。使用 DHCP 管理程序,可以选择选项并指定之后用于创建 DHCP 服务器所用的 dhcptab 和网络表的数据。dhcpconfig 实用程序要求使用命令行选项指定数据。

DHCP 管理程序功能

DHCP 管理程序是一种基于 Java™ 技术的 GUI 工具,可提供 DHCP 配置向导。第一次在未配置为 DHCP 服务器的系统上运行 DHCP 管理程序时,配置向导会自动启动。DHCP 配置向导提供了一系列对话框,提示您配置服务器所需的基本信息: 数据存储格式、租用策略、DNS/NIS/NIS+ 服务器和域,以及路由器地址。向导从系统文件中获取某些信息,您只需确认信息是否正确,或者在需要时更正信息。

完成对话框并确认信息之后,DHCP 服务器守护进程便会在服务器系统上启动。然后,系统将提示您启动“添加地址向导”来配置网络的 IP 地址。最初仅会为 DHCP 配置服务器的网络,并且为其他服务器选项指定缺省值。完成初始配置之后,可以再次运行 DHCP 管理程序,以添加网络并修改其他服务器选项。

有关 DHCP 配置向导的更多信息,请参见使用 DHCP 管理程序来配置和取消配置 DHCP 服务器。有关 DHCP 管理程序的更多详细信息,请参见关于 DHCP 管理程序

dhcpconfig 功能

dhcpconfig 实用程序支持可用于配置和取消配置 DHCP 服务器,转换为新的数据存储以及从其他 DHCP 服务器中导入/导出数据的选项。使用 dhcpconfig 实用程序配置 DHCP 服务器时,此实用程序可从更新系统文件和网络掩码表中介绍的系统文件中获取信息。您不能像使用 DHCP 管理程序那样来查看和确认从系统文件中获取的信息。因此,在运行 dhcpconfig 之前更新系统文件非常重要。您也可以使用命令行选项覆盖 dhcpconfig 在缺省情况下从系统文件中获取的值。dhcpconfig 命令可以在脚本中使用。有关更多信息,请参见 dhcpconfig(1M) 手册页。

DHCP 管理程序与 dhcpconfig 的比较

下表总结了两种服务器配置工具之间的差异。

表 13–4 DHCP 管理程序与 dhcpconfig 命令的比较

功能 

DHCP 管理程序 

带有选项的 dhcpconfig

从系统中收集的网络信息。 

允许您查看从系统文件中收集的信息,并在需要时更改此信息。 

您可以使用命令行选项指定网络信息。 

配置速度。 

通过省略不必要的服务器选项的提示并改用缺省值来加快配置过程。您可以在完成初始配置之后更改不必要的选项。 

最快的配置过程,但是您可能需要指定许多选项值。 

第 14 章介绍了可用于通过 DHCP 管理程序或 dhcpconfig 实用程序来配置服务器的过程。

第 14 章 配置 DHCP 服务(任务)

当您在网络上配置 DHCP 服务时,需要配置并启动第一台 DHCP 服务器。其他 DHCP 服务器可以在以后添加,而且如果数据存储支持共享数据,这些 DHCP 服务器可以从共享位置访问相同的数据。本章介绍有关配置 DHCP 服务器并将网络及其关联 IP 地址纳入 DHCP 管理的任务,同时还介绍了取消配置 DHCP 服务器的方法。

每个任务都包括一个帮助您在 DHCP 管理程序下执行该任务的过程和一个使用 dhcpconfig 实用程序执行等效任务的过程。本章包含以下信息:

如果您在配置 DHCP 服务时遇到困难,请参见第 17 章

在配置 DHCP 服务后,请参见第 15 章以获取有关管理 DHCP 服务的信息。

使用 DHCP 管理程序来配置和取消配置 DHCP 服务器

本节介绍通过 DHCP 管理程序来帮助您配置和取消配置 DHCP 服务器的过程。请注意,您必须运行 X Window 系统(例如,CDE 或 GNOME)才能使用 DHCP 管理程序。

可以超级用户身份使用 /usr/sadm/admin/bin/dhcpmgr 命令来运行 DHCP 管理程序。有关实用程序的常规信息,请参见关于 DHCP 管理程序。有关运行 DHCP 管理程序的更多详细信息,请参见如何启动和停止 DHCP 服务(DHCP 管理程序)

当您在没有配置 DHCP 的服务器上运行 DHCP 管理程序时,屏幕上会显示以下信息。您可以指定是要配置 DHCP 服务器还是要配置 BOOTP 中继代理。

图 14–1 DHCP 管理程序中的“选择服务器配置”对话框

对话框中显示了“配置为 DHCP 服务器”和“配置为 BOOTP 中继”选项,同时还显示了“确定”、“取消”和“帮助”按钮。

配置 DHCP 服务器

在配置 DHCP 服务器时,DHCP 管理程序会启动“DHCP 配置向导”来提示您提供配置服务器所需的信息。下图显示了该向导的初始屏幕。

图 14–2 “DHCP 配置向导”的初始屏幕

对话框中显示了存储选择、向后和向前箭头、“取消”和“帮助”按钮。

完成对向导提示的回答时,DHCP 管理程序会创建下表列出的项。

表 14–1 在 DHCP 服务器配置过程中创建的项

项 

说明 

内容 

服务配置文件 /etc/inet/dhcpsvc.conf

记录服务器配置选项的关键字和值。 

数据存储类型、位置以及与 in.dhcpd 一起用来在引导系统时启动 DHCP 守护进程的选项。请勿手动编辑此文件。必须使用 dhcpmgrdhcpconfig 来修改 DHCP 配置信息。

dhcptab

DHCP 管理程序会在 dhcptab 表不存在的情况下创建该表。

具有指定值的宏和选项。 

名为 Locale 的语言环境宏(可选)

包含本地时区相对于标准时间 (Universal time, UTC) 的偏移(以秒为单位)。 

具有指定秒数的 UTCoffst 选项。

服务器宏(其名称与服务器的节点名称相匹配)

包含由配置 DHCP 服务器的管理员的输入来决定值的选项。这些选项适用于所有使用该服务器所拥有的地址的客户机。 

Locale 宏以及以下选项:

  • Timeserv,设置为指向服务器的主 IP 地址。

  • LeaseTim,设置为租用的秒数。

  • LeaseNeg,前提是您选择了可协商租用。

  • DNSdmainDNSserv,前提是配置了 DNS。

  • Hostname不得为它指定值。该选项的出现表明了主机名必须从名称服务中获取。

网络地址宏(其名称与客户机网络的网络地址相同)

包含由配置 DHCP 服务器的管理员的输入来决定值的选项。这些选项适用于所有驻留在宏名称所指定的网络上的客户机。 

包括以下选项:  

  • Subnet,设置为本地子网的子网掩码

  • Router,设置为路由器的 IP 地址,或 RDiscvyF,让客户机可以使用路由器搜索功能

  • Broadcst,设置为广播 IP 地址。该选项仅在网络不是点对点网络时出现。

  • MTU,即最大传输单元

  • NISdmainNISservs,前提是配置了 NIS

  • NIS+domNIS+serv,前提是配置了 NIS+

网络的网络表

在您为该网络创建 IP 地址之前,会创建一个空白的表。 

直到您添加了 IP 地址之后才有内容。 

Procedure如何配置 DHCP 服务器(DHCP 管理程序)

开始之前

请确保配置 DHCP 服务器之前已阅读第 13 章。特别是,应参阅为 DHCP 服务器配置制定决策(任务列表)中的说明执行下列任务:

  1. 以超级用户的身份登录服务器系统。

  2. 启动 DHCP 管理程序。


    #/usr/sadm/admin/bin/dhcpmgr &
    
  3. 选择“配置为 DHCP 服务器”选项。

    将启动“DHCP 配置向导”,帮助您配置服务器。

  4. 根据在规划阶段所做的决定来选择选项或键入所需的信息。

    如果有问题,请单击向导窗口中的“帮助”来打开 Web 浏览器并显示“DHCP 配置向导”的帮助信息。

  5. 在结束指定所需信息时,请单击“完成”来结束服务器配置。

  6. 在“启动地址向导”提示下,单击“是”来配置服务器的 IP 地址。

    使用“添加地址到网络”向导,您可以指定纳入 DHCP 控制的地址。

  7. 按照您在规划阶段所作的决定来回答提示。

    有关更多信息,请参见为 IP 地址管理制定决策(任务列表)。如果有问题,请单击向导窗口中的“帮助”来打开 Web 浏览器并显示“添加地址到网络”向导的帮助信息。

  8. 检查您的选择,然后单击“完成”,将 IP 地址添加到网络表中。

    网络表将根据您所指定范围内的每个地址的记录进行更新。

另请参见

您可以使用“网络向导”将更多的网络添加到 DHCP 服务器,如添加 DHCP 网络中所述。

配置 BOOTP 中继代理

在配置 BOOTP 中继代理时,DHCP 管理程序将执行以下操作:

下图显示了在选择配置 BOOTP 中继代理时的屏幕显示。

图 14–3 DHCP 管理程序中的“配置 BOOTP 中继”对话框

对话框中显示了带有一个“添加”按钮且标记为 DHCP 服务器的输入字段,同时还显示了带有向上和向下箭头以及“删除”按钮的空白列表。

Procedure如何配置 BOOTP 中继代理(DHCP 管理程序)

开始之前

请确保配置 BOOTP 中继代理之前已阅读第 13 章。特别是,应参阅选择运行 DHCP 服务的主机中的说明选择要使用的系统。

  1. 以超级用户的身份登录服务器系统。

  2. 启动 DHCP 管理程序。


    #/usr/sadm/admin/bin/dhcpmgr &
    

    如果系统没有配置为 DHCP 服务器或 BOOTP 中继代理,将启动“DHCP 配置向导”。如果系统已经配置为 DHCP 服务器,则必须首先取消配置服务器。请参见取消配置 DHCP 服务器和 BOOTP 中继代理

  3. 选择“配置为 BOOTP 中继”。

    将打开“配置 BOOTP 中继”对话框。

  4. 键入一台或多台 DHCP 服务器的 IP 地址或主机名,然后单击“添加”。

    指定的 DHCP 服务器必须配置为可以处理该 BOOTP 中继代理接收的 BOOTP 或 DHCP 请求。

  5. 单击“确定”退出对话框。

    请注意,DHCP 管理程序只提供用于退出应用程序的“文件”菜单和用于管理服务器的“服务”菜单。禁用的菜单选项仅在 DHCP 服务器上有用。

取消配置 DHCP 服务器和 BOOTP 中继代理

在取消配置 DHCP 服务器或 BOOTP 中继代理时,DHCP 管理程序将执行以下操作:

下图显示了在选择取消配置 DHCP 服务器时的屏幕显示。

图 14–4 DHCP 管理程序中的“取消配置服务”对话框

对话框中显示了删除 DHCP 数据的选择,同时还显示了“确定”、“取消”和“帮助”按钮。

已取消配置的服务器上的 DHCP 数据

在取消配置 DHCP 服务器时,您必须决定如何处理 dhcptab 表和 DHCP 网络表。如果数据在服务器之间共享,则不能删除 dhcptab 和 DHCP 网络表。如果删除这些表,便无法在网络上使用 DHCP。数据可通过 NIS+ 或在导出的本地文件系统上共享。文件 /etc/inet/dhcpsvc.conf 记录了所用的数据存储及其位置。

您可以取消配置 DHCP 服务器,但按原样保留数据,方法是不选择任何删除数据的选项。如果您取消配置服务器并按原样保留数据,则会禁用 DHCP 服务器。

如果您希望其他 DHCP 服务器拥有这些 IP 地址,则必须将 DHCP 数据移动到该 DHCP 服务器。必须在取消配置当前服务器之前移动该数据。有关更多信息,请参见在 DHCP 服务器之间移动配置数据(任务列表)

如果您确定要删除该数据,则可以选择一个选项来删除 dhcptab 和网络表。如果生成了 DHCP 地址的客户机名,您仍可以选择从主机表中删除那些项。客户机名项可以从 DNS、/etc/inet/hosts 或 NIS+ 中删除。

在取消配置 BOOTP 中继代理之前,请确保没有依赖于该代理向 DHCP 服务器转发请求的客户机。

Procedure如何取消配置 DHCP 服务器或 BOOTP 中继代理(DHCP 管理程序)

  1. 成为超级用户。

  2. 启动 DHCP 管理程序。


    #/usr/sadm/admin/bin/dhcpmgr &
    
  3. 在“服务”菜单中选择“取消配置”。

    将显示“取消配置服务”对话框。如果服务器为 BOOTP 中继代理,则可以使用对话框确认取消配置中继代理。如果服务器为 DHCP 服务器,则必须决定如何处理 DHCP 数据并在对话框中做出选择。请参见图 14–4

  4. (可选的)选择选项删除数据。

    如果服务器使用通过 NIS+ 共享的数据,或使用通过 NFS 共享的文件中的共享数据,则不能选择任何删除数据的选项。如果服务器没有使用共享数据,则可选择两个选项中的一个或两个全选来删除数据。

    有关删除数据的更多信息,请参见已取消配置的服务器上的 DHCP 数据

  5. 单击“确定”取消配置服务器。

    将关闭“取消配置服务”对话框和 DHCP 管理程序。

使用 dhcpconfig 命令来配置和取消配置 DHCP 服务器

本节介绍使用 dhcpconfig 和命令行选项来帮助您配置和取消配置 DHCP 服务器或 BOOTP 中继代理的过程。

Procedure如何配置 DHCP 服务器 (dhcpconfig -D)

开始之前

请确保配置 DHCP 服务器之前已阅读第 13 章。特别是,应参阅为 DHCP 服务器配置制定决策(任务列表)中的说明执行下列任务:

  1. 登录到要进行 DHCP 服务器配置的系统。

  2. 成为超级用户、承担指定给 DHCP 管理配置文件的角色或者使用指定给 DHCP 管理配置文件的用户名。

    有关 DHCP 管理配置文件的更多信息,请参见设置用户访问 DHCP 命令的权限

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  3. 通过键入以下格式的命令来配置 DHCP 服务器:


    #/usr/sbin/dhcpconfig -D -r datastore -p location
    

    datastore 为以下类型之一: SUNWfilesSUNWbinfilesSUNWnisplus

    location 为与数据存储有关的位置,您要在此处存储 DHCP 数据。对于 SUNWfilesSUNWbinfiles,该位置必须是绝对路径名。对于 SUNWnisplus,该位置必须是完全指定的 NIS+ 目录。

    例如,您可能键入以下类似命令:


    dhcpconfig -D -r SUNWbinfiles -p /var/dhcp

    dhcpconfig 实用程序使用主机的系统文件和网络文件来确定用于配置 DHCP 服务器的值。有关可用于覆盖缺省值的其他 dhcpconfig 命令选项的信息,请参见 dhcpconfig(1M) 手册页。

  4. 向 DHCP 服务添加一个或多个网络。

    有关添加网络的过程,请参见如何添加 DHCP 网络 (dhcpconfig)

Procedure如何配置 BOOTP 中继代理 (dhcpconfig -R)

开始之前

根据选择运行 DHCP 服务的主机中列出的要求选择要用作 BOOTP 中继代理的系统。

  1. 登录到要配置为 BOOTP 中继代理的服务器。

  2. 成为超级用户、承担指定给 DHCP 管理配置文件的角色或者使用指定给 DHCP 管理配置文件的用户名。

    有关 DHCP 管理配置文件的更多信息,请参见设置用户访问 DHCP 命令的权限

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  3. 通过键入以下格式的命令来配置 BOOTP 中继代理:


    # /usr/sbin/dhcpconfig -R server-addresses
    

    为要将请求转发到的 DHCP 服务器指定一个或多个 IP 地址。如果您指定多个地址,请使用逗号分隔这些地址。

    例如,您可能键入以下类似命令:


    /usr/sbin/dhcpconfig -R 192.168.1.18,192.168.42.132

Procedure如何取消配置 DHCP 服务器或 BOOTP 中继代理 (dhcpconfig -U)

  1. 登录到您要取消配置的 DHCP 服务器或 BOOTP 中继代理系统。

  2. 成为超级用户、承担指定给 DHCP 管理配置文件的角色或者使用指定给 DHCP 管理配置文件的用户名。

    有关 DHCP 管理配置文件的更多信息,请参见设置用户访问 DHCP 命令的权限

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  3. 取消配置 DHCP 服务器或 BOOTP 中继代理:


    # /usr/sbin/dhcpconfig -U
    

    如果服务器不使用共享数据,也可使用 -x 选项来删除 dhcptab 和网络表。如果服务器使用共享数据,则不要使用 -x 选项。-h 选项可用于从主机表中删除主机名。有关 dhcpconfig 选项的更多信息,请参见 dhcpconfig(1M) 手册页。

    有关删除数据的更多信息,请参见已取消配置的服务器上的 DHCP 数据

第 15 章 管理 DHCP(任务)

本章介绍的任务将会对您管理 Oracle Solaris : DHCP 服务有所帮助。其中包括针对服务器、BOOTP 中继代理和客户机的任务。每个任务都包含一个帮助您在 DHCP 管理程序中执行任务的过程,以及一个使用 DHCP 命令行实用程序执行等效任务的过程。手册页中更全面地介绍了这些 DHCP 命令行实用程序。

在使用本章之前,您应该已完成了 DHCP 服务和初始网络的初始配置。第 14 章介绍了 DHCP 配置。

本章包含以下信息:

关于 DHCP 管理程序

DHCP 管理程序是一种图形用户界面 (graphical user interface, GUI) 工具,可用于执行针对 DHCP 服务的管理任务。

“DHCP 管理程序”窗口

“DHCP 管理程序”窗口的外观取决于在运行 DHCP 管理程序的系统上配置 DHCP 服务器的方式。

将系统配置为 DHCP 服务器后,DHCP 管理程序可使用基于选项卡的窗口。您可以针对要处理的信息类型选择一个选项卡。DHCP 管理程序包含以下选项卡:

下图显示了在启动 DHCP 服务器上的 DHCP 管理程序时,“DHCP 管理程序”窗口可能的外观。

图 15–1 DHCP 服务器系统上的 DHCP 管理程序

显示了具有网络号、客户机名称和租用期等信息的“地址”选项卡。

将服务器配置为 BOOTP 中继代理之后,“DHCP 管理程序”窗口便不会显示这些选项卡。BOOTP 中继代理不需要相同的信息。您只能使用 DHCP 管理程序来修改 BOOTP 中继代理的属性以及停止或启动 DHCP 守护进程。下图显示了在配置为 BOOTP 中继代理的系统上,DHCP 管理程序的可能外观。

图 15–2 BOOTP 中继代理上的 DHCP 管理程序

此窗口显示了“BOOTP 中继”选项卡,此选项卡指示您通过“服务”菜单来管理中继服务。

DHCP 管理程序菜单

DHCP 管理程序菜单包括以下各项:

当 DHCP 管理程序在 BOOTP 中继代理上运行时,“编辑”和“视图”菜单处于禁用状态。

所有的 DHCP 管理任务都通过“编辑”和“服务”菜单完成。

可以使用“编辑”菜单中的命令,在选定的选项卡中创建、删除和修改项。这些项可以包括网络、地址、宏和选项。选择“地址”选项卡之后,“编辑”菜单还会列出向导。这些向导由多个对话框集组成,可帮助您创建多个网络和 IP 地址。

“服务”菜单列出可用于管理 DHCP 守护进程的命令。通过“服务”菜单,您可以执行以下任务:

启动和停止 DHCP 管理程序

您必须以超级用户的身份在 DHCP 服务器系统上运行 DHCP 管理程序。如果您必须从远程运行 DHCP 管理程序,则可以使用 X 窗口远程显示功能将显示内容发送到您的系统。

Procedure如何启动和停止 DHCP 管理程序

  1. 以超级用户的身份登录 DHCP 服务器系统。

  2. (可选的)如果您是远程登录到 DHCP 服务器系统,请按如下方式在本地系统上显示 DHCP 管理程序。

    1. 在本地系统上键入以下命令:


      # xhost +server-name
      
    2. 在远程 DHCP 服务器系统上键入以下命令:


      # DISPLAY=local-hostname;export DISPLAY
      
  3. 启动 DHCP 管理程序。


    # /usr/sadm/admin/bin/dhcpmgr &
    

    将打开“DHCP 管理程序”窗口。如果服务器配置为 DHCP 服务器,则此窗口将显示“地址”选项卡。如果服务器配置为 BOOTP 中继代理,则此窗口将不显示任何选项卡。

  4. 要停止 DHCP 管理程序,请从“文件”菜单中选择“退出”。

    将关闭“DHCP 管理程序”窗口。

设置用户访问 DHCP 命令的权限

缺省情况下,只有超级用户才能执行 dhcpconfigdhtadmpntadm 命令。如果您希望非超级用户使用这些命令,可以针对这些命令设置基于角色的访问控制 (role-based access control, RBAC)。

角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

您还可能会发现以下手册页非常有用: rbac(5)exec_attr(4)user_attr(4)

以下过程说明如何指定DHCP 管理配置文件,用户可通过此配置文件执行 DHCP 命令。

Procedure如何授予用户访问 DHCP 命令的权限

  1. 以超级用户的身份登录 DHCP 服务器系统。

  2. 编辑文件 /etc/user_attr 以添加如下格式的项。针对每个应该管理 DHCP 服务的用户或角色添加一项。


    username::::type=normal;profiles=DHCP Management

    例如,对于用户 ram,将添加以下项:

    ram::::type=normal;profiles=DHCP Management

启动和停止 DHCP 服务

本节介绍如何使用 DHCP 管理程序和 dhcpconfig 命令来启动和停止 DHCP 服务。还可以使用服务管理工具 (Service Management Facility, SMF) 命令来启动和停止 DHCP 服务。有关将 SMF 命令用于 DHCP 服务的更多信息,请参见DHCP 服务和服务管理工具

启动和停止 DHCP 服务包含几种级别的操作,您可以执行这些操作来影响 DHCP 守护进程的运行。您必须了解每种操作的含义,以便选择正确的过程来获取所需的结果。这些操作的术语如下:


注 –

如果一个服务器具有多个网络接口,但是您不希望在所有网络上都提供 DHCP 服务,请参见指定 DHCP 监视的网络接口


以下过程可帮助您启动、停止、启用和禁用 DHCP 服务。

Procedure如何启动和停止 DHCP 服务(DHCP 管理程序)

  1. 以超级用户的身份登录 DHCP 服务器系统。

  2. 启动 DHCP 管理程序。


    # /usr/sadm/admin/bin/dhcpmgr &
    
  3. 选择以下操作之一:

    • 从“服务”菜单中选择“启动”以启动 DHCP 服务。

    • 从“服务”菜单中选择“停止”以停止 DHCP 服务。

      DHCP 守护进程将停止,直到重新启动它或重新引导系统。

    • 从“服务”菜单中选择“重新启动”以停止并立即重新启动 DHCP 服务。

Procedure如何启用和禁用 DHCP 服务(DHCP 管理程序)

  1. 在 DHCP 管理程序中,选择以下操作之一:

    • 从“服务”菜单中选择“启用”,以便将 DHCP 守护进程配置为在系统引导时自动启动。

      DHCP 服务将在启用之后立即启动。

    • 从“服务”菜单中选择“禁用”以防止 DHCP 守护进程在系统引导时自动启动。

      DHCP 服务将在禁用之后立即停止。

Procedure如何启用和禁用 DHCP 服务 (dhcpconfig -S)

  1. 登录到 DHCP 服务器系统。

  2. 成为超级用户、承担指定给 DHCP 管理配置文件的角色或者使用指定给 DHCP 管理配置文件的用户名。

    有关 DHCP 管理配置文件的更多信息,请参见设置用户访问 DHCP 命令的权限

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  3. 选择以下操作之一:

    • 要启用 DHCP 服务,请键入以下命令:


      # /usr/sbin/dhcpconfig -S -e
      
    • 要禁用 DHCP 服务,请键入以下命令:


      # /usr/sbin/dhcpconfig -S -d
      

DHCP 服务和服务管理工具

服务管理工具 (Service Management Facility, SMF) 在《系统管理指南:基本管理》中的第 18  章 “管理服务(概述)”中进行了介绍。可以使用 SMF svcadm 命令来启用和启动 DHCP 服务器,以及禁用和停止 DHCP 服务器。但是,不能使用 SMF 命令修改可以使用 DHCP 工具设置的 DHCP 服务选项。特别是,不能使用 SMF 工具来设置 /etc/dhcp/dhcpsvc.conf 文件中存储的服务选项。

下表显示 DHCP 命令与等效的 SMF 命令之间的映射关系。

表 15–1 用于 DHCP 服务器任务的 SMF 命令

任务 

DHCP 命令 

SMF 命令 

启用 DHCP 服务 

dhcpconfig -S -e

svcadm enable svc:/network/dhcp-server

禁用 DHCP 服务 

dhcpconfig -S -d

svcadm disable svc:/network/dhcp-server

仅针对当前会话启动 DHCP 服务 

无 

svcadm enable -t svc:/network/dhcp-server

停止当前会话的 DHCP 服务 

无 

svcadm disable -t svc:/network/dhcp-server

重新启动 DHCP 服务 

dhcpconfig -S -r

svcadm restart svc:/network/dhcp-server

修改 DHCP 服务选项(任务列表)

您可以更改 DHCP 服务的某些附加功能的值,使用 DHCP 管理程序进行初始配置时可能未提供这些功能。要更改服务选项,您可以使用 DHCP 管理程序中的“修改服务选项”对话框。或者,可以使用 dhcpconfig 命令指定选项。

以下是描述修改 DHCP 服务选项的任务列表。此任务列表包括指向完成每项任务的过程的链接。

任务 

说明 

参考 

更改日志选项。 

启用或禁用日志,并选择一个用于记录 DHCP 事务的 syslog 工具。

如何生成详细的 DHCP 日志消息(DHCP 管理程序)

如何生成详细的 DHCP 日志消息(命令行)

如何启用和禁用 DHCP 事务日志(DHCP 管理程序)

如何启用和禁用 DHCP 事务日志(命令行)

如何将 DHCP 事务记录到单独的 syslog 文件中

更改 DNS 更新选项。 

启用或禁用服务器的功能,以便针对提供主机名的客户机动态添加 DNS 项。确定服务器在尝试更新 DNS 时应花费的最长时间。 

如何针对 DHCP 客户机启用动态 DNS 更新

启用或禁用重复 IP 地址检测功能。 

启用或禁用 DHCP 服务器的功能,以便在为客户机提供 IP 地址之前确定此 IP 地址尚未使用。 

如何自定义 DHCP 性能选项(DHCP 管理程序)

如何自定义 DHCP 性能选项(命令行)

更改 DHCP 服务器用于读取配置信息的选项。 

启用或禁用按指定间隔自动读取 dhcptab 的功能,或者更改读取间隔。

如何自定义 DHCP 性能选项(DHCP 管理程序)

如何自定义 DHCP 性能选项(命令行)

更改中继代理点数/代理数。 

增加或减少在 DHCP 守护进程删除请求之前此请求可经过的网络数。 

如何自定义 DHCP 性能选项(DHCP 管理程序)

如何自定义 DHCP 性能选项(命令行)

更改对提供的 IP 地址进行高速缓存的时间长度。 

增加或减少 DHCP 服务在将所提供的 IP 地址提供给新客户机之前保留此地址的秒数。 

如何自定义 DHCP 性能选项(DHCP 管理程序)

如何自定义 DHCP 性能选项(命令行)

下图显示了 DHCP 管理程序的“修改服务选项”对话框。

图 15–3 DHCP 管理程序中的“修改服务选项”对话框

对话框显示了包含许多选项字段和复选框的“选项”选项卡。文中对此对话框的用途进行了说明。

更改 DHCP 日志选项

DHCP 服务可以将 DHCP 服务消息和 DHCP 事务记录到 syslog 中。有关 syslog 的更多信息,请参见 syslogd(1M)syslog.conf(4) 手册页。

记录到 syslog 中的 DHCP 服务消息包括:

您可以增加使用 DHCP 守护进程的详细选项报告的信息量。详细消息输出可以帮助您对 DHCP 问题进行疑难解答。请参见如何生成详细的 DHCP 日志消息(DHCP 管理程序)

另一种有用的错误诊断技术是事务日志。事务提供了有关 DHCP 服务器或 BOOTP 中继与客户机之间每次交换的信息。DHCP 事务包括以下消息类型:

BOOTP 中继事务包括以下消息类型:

缺省情况下,DHCP 事务日志处于禁用状态。DHCP 事务日志在启用后将缺省使用 syslog 中的 local0 工具。生成的 DHCP 事务消息的 syslog 严重级别为 notice。此严重级别将导致在记录其他系统通知的文件中记录 DHCP 事务。不过,由于使用 local 工具,因此可以独立于其他通知记录 DHCP 事务消息。要单独记录事务消息,您必须编辑 syslog.conf 文件以指定单独的日志文件。有关 syslog.conf 文件的更多信息,请参见 syslog.conf(4) 手册页。

您可以禁用或启用事务日志,并可指定 local0local7 之间的其他 syslog 工具,如如何启用和禁用 DHCP 事务日志(DHCP 管理程序)中所述。在服务器系统的 syslog.conf 文件中,您还可以指示 syslogd 在单独的文件中存储 DHCP 事务消息。有关更多信息,请参见如何将 DHCP 事务记录到单独的 syslog 文件中

Procedure如何生成详细的 DHCP 日志消息(DHCP 管理程序)

  1. 在 DHCP 管理程序中,从“服务”菜单中选择“修改”。

    有关 DHCP 管理程序的信息,请参见如何启动和停止 DHCP 管理程序

    将打开“修改服务选项”对话框并显示“选项”选项卡。请参见图 15–3

  2. 选择“详细日志消息”。

  3. 选择“重新启动服务器”。

    “重新启动服务器”选项位于对话框底部附近。

  4. 单击“确定”。

    对于此会话以及每个后续会话,守护进程将在详细模式下运行,直到重置此选项。详细模式会降低守护进程的效率,因为显示消息要花费时间。

Procedure如何生成详细的 DHCP 日志消息(命令行)

  1. 成为超级用户、承担指定给 DHCP 管理配置文件的角色或者使用指定给 DHCP 管理配置文件的用户名。

    有关 DHCP 管理配置文件的更多信息,请参见设置用户访问 DHCP 命令的权限

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 键入以下命令设置详细模式:


    # /usr/sbin/dhcpconfig -P VERBOSE=true
    

    下次启动 DHCP 服务器时,此服务器将以详细模式运行,直到关闭详细模式。

    要关闭详细模式,请键入以下命令:


    # /usr/sbin/dhcpconfig -P VERBOSE=
    

    此命令不为 VERBOSE 关键字设置任何值,这样会导致从服务器的配置文件中删除此关键字。

    详细模式会降低守护进程的效率,因为显示消息要花费时间。

Procedure如何启用和禁用 DHCP 事务日志(DHCP 管理程序)

此过程可为所有后续 DHCP 服务器会话启用和禁用事务日志。

  1. 在 DHCP 管理程序中,从“服务”菜单中选择“修改”。

    有关 DHCP 管理程序的信息,请参见如何启动和停止 DHCP 管理程序

  2. 选择“将事务处理记录到系统日志设备”。

    要禁用事务日志,请取消选中此选项。

  3. (可选的)选择 0 到 7 之间的本地工具,用于记录 DHCP 事务。

    缺省情况下,在记录系统通知的位置记录 DHCP 事务,具体取决于 syslogd 的配置方式。如果要将 DHCP 事务记录到一个单独的没有记录其他系统通知的文件,请参见如何将 DHCP 事务记录到单独的 syslog 文件中

    启用事务日志之后,消息文件便会迅速变得非常庞大。

  4. 选择“重新启动服务器”。

  5. 单击“确定”。

    守护进程将在选定的 syslog 工具中为此会话以及每个后续会话记录事务,直到禁用日志为止。

Procedure如何启用和禁用 DHCP 事务日志(命令行)

  1. 成为超级用户、承担指定给 DHCP 管理配置文件的角色或者使用指定给 DHCP 管理配置文件的用户名。

    有关 DHCP 管理配置文件的更多信息,请参见设置用户访问 DHCP 命令的权限

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 选择以下步骤之一:

    • 要启用 DHCP 事务日志,请键入以下命令:


      # /usr/sbin/dhcpconfig -P LOGGING_FACILITY=syslog-local-facility
      

      syslog-local-facility 是 0 到 7 之间的一个数字。如果省略此选项,则使用 0。

      缺省情况下,在记录系统通知的位置记录 DHCP 事务,具体取决于 syslogd 的配置方式。如果要将 DHCP 事务记录到一个单独的没有记录其他系统通知的文件,请参见如何将 DHCP 事务记录到单独的 syslog 文件中

      启用事务日志之后,消息文件便会迅速变得非常庞大。

    • 要禁用 DHCP 事务日志,请键入以下命令:


      # /usr/sbin/dhcpconfig -P LOGGING_FACILITY=
      

      请注意,不要为此参数提供任何值。

Procedure如何将 DHCP 事务记录到单独的 syslog 文件中

  1. 成为 DHCP 服务器系统上的超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

    为 DHCP 管理配置文件指定的角色可能没有足够的权限来执行此任务。角色必须拥有编辑 syslog 文件的权限。

  2. 在服务器系统上编辑 /etc/syslog.conf 文件以添加具有如下格式的一行:


    localn.notice     path-to-logfile
    

    n 是您为事务日志指定的 syslog 工具编号,path-to-logfile 是用于记录事务的文件的完整路径。

    例如,您可以添加以下行:

    local0.notice /var/log/dhcpsrvc

    有关 syslog.conf 文件的更多信息,请参见 syslog.conf(4) 手册页。

通过 DHCP 服务器启用动态 DNS 更新

DNS 为 Internet 提供了名称到地址以及地址到名称的服务。进行 DNS 映射之后,便可通过系统的主机名或 IP 地址访问此系统。还可以从系统所在域的外部访问此系统。

DHCP 服务可以通过两种方法使用 DNS:

您可以启用 DHCP 服务,以便针对提供自己主机名的 DHCP 客户机更新 DNS 服务。要使 DNS 更新功能能够正常工作,必须正确设置 DNS 服务器、DHCP 服务器以及 DHCP 客户机。此外,域中的其他系统不得使用请求的主机名。

如果以下陈述成立,则 DHCP 服务器的 DNS 更新功能即可正常工作:

Procedure如何针对 DHCP 客户机启用动态 DNS 更新


注 –

应注意,动态 DNS 更新存在安全风险

缺省情况下,Oracle Solaris : DNS 守护进程 (in.named) 不允许动态更新。动态 DNS 更新的授权在 DNS 服务器系统上的 named.conf 配置文件中授予。没有提供任何其他安全性。您必须仔细权衡此功能为用户提供的便利性和启用动态 DNS 更新时存在的安全风险。


  1. 在 DNS 服务器上,以超级用户的身份编辑 /etc/named.conf 文件。

  2. named.conf 文件中查找适当的域的 zone 部分。

  3. 将 DHCP 服务器的 IP 地址添加到 allow-update 关键字中。

    如果 allow-update 关键字不存在,请插入该关键字。

    例如,如果 DHCP 服务器驻留在地址 10.0.0.110.0.0.2 上,则应按如下方式修改 dhcp.domain.com 区域的 named.conf 文件:


    zone "dhcp.domain.com" in {
                 type master;
                 file "db.dhcp";
                 allow-update { 10.0.0.1; 10.0.0.2; }; 
    };  
     
    zone "10.IN-ADDR.ARPA" in {
                 type master;
                 file "db.10"; 
                 allow-update { 10.0.0.1; 10.0.0.2; };
    }; 

    请注意,必须针对两个区域启用 allow-update,以便允许 DHCP 服务器同时更新 DNS 服务器上的 A 和 PTR 记录。

  4. 在 DHCP 服务器上,启动 DHCP 管理程序。


    # /usr/sadm/admin/bin/dhcpmgr &
    

    有关更多详细信息,请参见如何启动和停止 DHCP 管理程序

  5. 从“服务”菜单中选择“修改”。

    将打开“修改服务选项”对话框。

  6. 选择“根据用户的要求更新 DNS 主机信息”。

  7. 指定在超时之前等待 DNS 服务器发出响应的秒数,然后单击“确定”。

    缺省值 15 秒应已足够。如果有超时问题,则可以随后增大此值。

  8. 单击“宏”选项卡,并确保指定了正确的 DNS 域。

    必须将带有正确域名的 DNSdmain 选项传递到任何需要动态 DNS 更新支持的客户机。缺省情况下,在服务器宏中指定 DNSdmain,此服务器宏用作绑定到每个 IP 地址的配置宏。

  9. 设置 DHCP 客户机以便在请求 DHCP 服务时指定其主机名。

    如果您使用 Oracle Solaris : DHCP 客户机,请参见如何使 Oracle Solaris : DHCPv4 客户机请求特定的主机名。如果您的客户机不是 Oracle Solaris : DHCP 客户机,请参见 DHCP 客户机文档以获取有关如何指定主机名的信息。

客户机主机名注册

如果让 DHCP 服务器针对放入 DHCP 服务中的 IP 地址生成主机名,则 DHCP 服务器可以在 NIS+、/etc/inet/hosts 或 DNS 名称服务中注册这些主机名。不能在 NIS 中进行主机名注册,因为 NIS 没有提供允许更新程序并传播 NIS 映射的协议。


注 –

仅当 DNS 服务器和 DHCP 服务器在同一系统上运行时,DHCP 服务器才能使用生成的主机名来更新 DNS。


如果 DHCP 客户机提供它自己的主机名,并且 DNS 服务器配置为允许从 DHCP 服务器进行动态更新,则 DHCP 服务器可以代表客户机更新 DNS。即使 DNS 服务器和 DHCP 服务器在不同的系统上运行,也可进行动态更新。有关启用此功能的更多信息,请参见通过 DHCP 服务器启用动态 DNS 更新

下表概括了使用各种名称服务对 DHCP 客户机系统进行的客户机主机名注册。

表 15–2 名称服务中的客户机主机名注册
 

主机名注册者 

名称服务 

DHCP 生成的主机名 

DHCP 客户机提供的主机名 

NIS 

NIS 管理员 

NIS 管理员 

NIS+ 

DHCP 工具 

DHCP 工具 

/etc/hosts

DHCP 工具 

DHCP 工具 

DNS 

DHCP 工具(如果 DNS 服务器与 DHCP 服务器在同一系统上运行) 

DNS 管理员(如果 DNS 服务器在其他系统上运行) 

DHCP 服务器(如果配置为进行动态 DNS 更新) 

DNS 管理员(如果 DHCP 服务器没有配置为进行动态 DNS 更新) 

Oracle Solaris : DHCP 客户机可以在 DHCP 请求中请求特定的主机名,前提是它们已配置为可执行此操作,如如何使 Oracle Solaris : DHCPv4 客户机请求特定的主机名中所述。请参阅其他 DHCP 客户机的供应商文档以确定是否支持此功能。

自定义 DHCP 服务器的性能选项

您可以更改影响 DHCP 服务器性能的选项。这些选项在下表中介绍。

表 15–3 影响 DHCP 服务器性能的选项

服务器选项 

说明 

关键字 

BOOTP 中继代理的最大跃点数 

如果请求经过的 BOOTP 中继代理数超过给定数量,则此请求会被丢弃。缺省的中继代理的最大跃点数为 4。对于大多数网络而言,四个跃点可能已经足够。如果 DHCP 请求经过多个 BOOTP 中继代理之后才到达 DHCP 服务器,则网络所需的跃点数可能超过四个。

RELAY_HOPS=integer

检测重复地址 

缺省情况下,服务器在将 IP 地址提供给客户机之前会对此地址执行 ping 操作。如果系统没有对 ping 操作做出响应,则表明尚未使用此地址。您可以禁用此功能,以便缩短服务器提供地址所花费的时间。但是,禁用此功能会存在使用重复 IP 地址的风险。

ICMP_VERIFY=TRUE/FALSE

按指定间隔自动重新装入 dhcptab

可以将服务器设置为按指定的间隔(以分钟为单位)自动读取 dhcptab。如果网络配置信息并非频繁更改且没有多台 DHCP 服务器,则无需自动重新装入 dhcptab。另外,请注意 DHCP 管理程序使您可以选择在更改数据之后让服务器重新装入 dhcptab

RESCAN_INTERVAL=min

按指定间隔对所提供的 IP 地址进行高速缓存 

服务器将 IP 地址提供给客户机之后,便会对此地址进行高速缓存。对所提供的地址进行高速缓存之后,服务器便不会再提供此地址。您可以更改对所提供的地址进行高速缓存的秒数。缺省值是 10 秒。在速度较慢的网络上,您可能需要延长对所提供的地址进行高速缓存的时间。

OFFER_CACHE_TIMEOUT=sec

以下过程介绍如何更改这些选项。

Procedure如何自定义 DHCP 性能选项(DHCP 管理程序)

  1. 在 DHCP 管理程序中,从“服务”菜单中选择“修改”。

    有关 DHCP 管理程序的信息,请参见如何启动和停止 DHCP 管理程序

  2. 更改所需的选项。

    有关选项的信息,请参见表 15–3

  3. 选择“重新启动服务器”。

  4. 单击“确定”。

Procedure如何自定义 DHCP 性能选项(命令行)

如果通过此过程更改选项,则仅当重新启动 DHCP 服务器之后才能使用已更改的选项。

  1. 成为超级用户、承担指定给 DHCP 管理配置文件的角色或者使用指定给 DHCP 管理配置文件的用户名。

    有关 DHCP 管理配置文件的更多信息,请参见设置用户访问 DHCP 命令的权限

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 修改一个或多个性能选项:


    # /usr/sbin/dhcpconfig -P keyword=value,keyword=value...
    

    keyword=value 可以是以下任一关键字:

    RELAY_HOPS=integer

    指定在守护进程删除 DHCP 或 BOOTP 数据报之前可以执行的中继代理的最大跃点数。

    ICMP_VERIFY=TRUE/FALSE

    启用或禁用重复 IP 地址自动检测功能。建议不要将此关键字设置为 FALSE

    RESCAN_INTERVAL=minutes

    指定 DHCP 服务器应当用于安排自动重新读取 dhcptab 信息的间隔(以分钟为单位)。

    OFFER_CACHE_TIMEOUT=seconds

    指定 DHCP 服务器应当对所提供的地址进行高速缓存的秒数,这是为了搜索 DHCP 客户机而延长的时间。缺省设置为 10 秒。


示例 15–1 设置 DHCP 性能选项

以下是如何指定所有命令选项的示例。


# dhcpconfig -P RELAY_HOPS=2,ICMP_VERIFY=TRUE,\
RESCAN_INTERVAL=30,OFFER_CACHE_TIMEOUT=20

添加、修改和删除 DHCP 网络(任务列表)

配置 DHCP 服务器时,您还至少必须配置一个网络以使用 DHCP 服务。您可以随时添加更多的网络。

以下是描述使用初始化配置后的 DHCP 网络时可以执行的额外任务的任务列表。此任务列表包括指向用于执行这些任务的过程的链接。

任务 

说明 

参考 

在服务器网络接口上启用或禁用 DHCP 服务 

缺省行为是监视所有网络接口上的 DHCP 请求。如果不希望所有接口都接受 DHCP 请求,可以从受监视接口的列表中删除一个接口。 

如何指定 DHCP 监视的网络接口(DHCP 管理程序)

将新网络添加到 DHCP 服务中。 

将网络纳入 DHCP 管理,目的是管理此网络上的 IP 地址。 

如何添加 DHCP 网络(DHCP 管理程序)

如何添加 DHCP 网络 (dhcpconfig)

更改 DHCP 管理的网络的参数。 

修改传递到特定网络上的客户机的信息。 

如何修改 DHCP 网络配置(DHCP 管理程序)

如何修改 DHCP 网络配置 (dhtadm)

从 DHCP 服务中删除网络。 

删除网络以使此网络上的 IP 地址不再由 DHCP 管理。 

如何删除 DHCP 网络(DHCP 管理程序)

如何删除 DHCP 网络 (pntadm)

指定 DHCP 监视的网络接口

缺省情况下,dhcpconfig 和 DHCP 管理程序的“配置向导”将 DHCP 服务器配置为监视所有服务器系统的网络接口。如果您将新网络接口添加到服务器系统,则引导系统时 DHCP 服务器会自动监视这一新的接口。然后,您可以通过此网络接口添加任何要监视的网络。

但是,您也可以指定应监视的网络接口以及应忽略的接口。如果您不希望在某个网络上提供 DHCP 服务,则可能需要忽略用于该网络的接口。

如果您指定应忽略任意接口,并在之后又安装了一个新接口,则 DHCP 服务器会忽略这一新接口。您必须将这一新接口添加到服务器的受监视接口列表中。您可以使用 DHCP 管理程序或 dhcpconfig 实用程序来指定接口。

本节介绍可用于指定 DHCP 应监视或忽略哪些网络接口的过程。此 DHCP 管理程序过程将使用 DHCP 管理程序的“修改服务选项”对话框的“接口”选项卡(下图中所示)。

图 15–4 DHCP 管理程序中“修改服务选项”对话框的“接口”选项卡

对话框分别在左右两边列出“监视接口”和“忽略接口”,并且在两个列表之间存在选择箭头。显示了“确定”、“重置”、“取消”和“帮助”按钮。

Procedure如何指定 DHCP 监视的网络接口(DHCP 管理程序)

  1. 在 DHCP 管理程序中,从“服务”菜单中选择“修改”。

    将显示“修改服务选项”对话框。

    有关 DHCP 管理程序的信息,请参见如何启动和停止 DHCP 管理程序

  2. 选择“接口”选项卡。

  3. 选择适当的网络接口。

  4. 单击箭头按钮以便将此接口移动到适当的列表中。

    例如,要忽略某个接口,请在“监视接口”列表中选择此接口,然后单击右箭头按钮。这样,此接口便会显示在“忽略接口”列表中。

  5. 选择“重新启动服务器”,然后单击“确定”。

    每次重新引导之后都会保留您所做的更改。

Procedure如何指定 DHCP 监视的网络接口 (dhcpconfig)

  1. 成为超级用户、承担指定给 DHCP 管理配置文件的角色或者使用指定给 DHCP 管理配置文件的用户名。

    有关 DHCP 管理配置文件的更多信息,请参见设置用户访问 DHCP 命令的权限

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 在 DHCP 服务器系统上键入以下命令:


    # /usr/sbin/dhcpconfig -P INTERFACES=int,int,...
    

    int, int,... 是要监视的接口的列表。接口名称必须用逗号分隔。

    例如,可以使用以下命令仅监视 ge0ge1


    #/usr/sbin/dhcpconfig -P INTERFACES=ge0,ge1
    

    dhcpconfig 命令行中,应省略您要忽略的接口。

    每次重新引导之后都会保留使用此命令所做的更改。

添加 DHCP 网络

在使用 DHCP 管理程序配置服务器的同时,还会配置第一个网络。第一个网络通常为服务器系统主接口上的本地网络。如果您要配置其他网络,请使用 DHCP 管理程序中的“DHCP 网络向导”。

如果您使用 dhcpconfig -D 命令来配置服务器,则必须分别配置所有要使用 DHCP 服务的网络。有关更多信息,请参见如何添加 DHCP 网络 (dhcpconfig)

下图显示了 DHCP 管理程序中“DHCP 网络向导”的初始对话框。

图 15–5 DHCP 管理程序的“网络向导”

此对话框显示了“网络地址”下拉列表、“子网掩码”字段以及右选择箭头,同时还显示了“取消”和“帮助”按钮。

当您配置新网络时,DHCP 管理程序会创建以下组件:

Procedure如何添加 DHCP 网络(DHCP 管理程序)

  1. 在 DHCP 管理程序中,单击“地址”选项卡。

    将列出已针对 DHCP 服务配置的所有网络。

    有关 DHCP 管理程序的信息,请参见如何启动和停止 DHCP 管理程序

  2. 从“编辑”菜单中选择“网络向导”。

  3. 选择选项,或者键入所需的信息。请使用在规划阶段所作的决定来确定要指定的信息。

    规划在规划远程网络的 DHCP 配置中介绍。

    如果您不了解此向导,请在向导窗口中单击“帮助”。Web 浏览器便会显示“DHCP 网络向导”的帮助信息。

  4. 完成指定所需的信息之后,单击“完成”以完成网络配置。

    “网络向导”将创建空的网络表,此表在窗口的左窗格中列出。

    “网络向导”还将创建一个名称与网络的 IP 地址相匹配的网络宏。

  5. (可选的)选择“宏”选项卡并选择网络宏以查看宏的内容。

    您可以确认在此向导中提供的信息是否已作为网络宏中选项的值插入。

另请参见

您必须为网络添加地址,然后此网络的 IP 地址才可由 DHCP 管理。有关更多信息,请参见将 IP 地址添加到 DHCP 服务

即使将网络表保留为空,DHCP 服务器仍可以为客户机提供配置信息。有关更多信息,请参见设置 DHCP 客户机为仅接收信息(任务列表)

Procedure如何添加 DHCP 网络 (dhcpconfig)

  1. 成为超级用户、承担指定给 DHCP 管理配置文件的角色或者使用指定给 DHCP 管理配置文件的用户名。

    有关 DHCP 管理配置文件的更多信息,请参见设置用户访问 DHCP 命令的权限

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 在 DHCP 服务器系统上键入以下命令:


    # /usr/sbin/dhcpconfig -N network-address
    

    network-address 是您要添加到 DHCP 服务中的网络 IP 地址。有关可以与 -N 选项一起使用的子选项,请参见 dhcpconfig(1M) 手册页。

    如果没有使用子选项,则 dhcpconfig 使用网络文件来获取有关网络的信息。

另请参见

您必须为网络添加地址,然后此网络的 IP 地址才可由 DHCP 管理。有关更多信息,请参见将 IP 地址添加到 DHCP 服务

即使将网络表保留为空,DHCP 服务器仍可以为客户机提供配置信息。有关更多信息,请参见设置 DHCP 客户机为仅接收信息(任务列表)

修改 DHCP 网络配置

将网络添加到 DHCP 服务之后,便可修改您最初提供的配置信息。配置信息存储在用于将信息传递到网络上的客户机的网络宏中。您必须修改网络宏才能更改网络配置。

下图显示了 DHCP 管理程序的“宏”选项卡。

图 15–6 DHCP 管理程序的“宏”选项卡

“宏”选项卡显示了已选定一个宏的宏列表,同时还显示了宏中包含的选项名称和值。

Procedure如何修改 DHCP 网络配置(DHCP 管理程序)

  1. 在 DHCP 管理程序中,选择“宏”选项卡。

    将在左窗格中列出针对此 DHCP 服务器定义的所有宏。

    有关 DHCP 管理程序的信息,请参见如何启动和停止 DHCP 管理程序

  2. 选择名称与要更改的网络配置相匹配的网络宏。

    网络宏名称即为网络 IP 地址。

  3. 从“编辑”菜单中选择“属性”。

    “宏属性”对话框将显示宏中的选项表。

  4. 选择要修改的选项。

    选项名称和值将显示在此对话框顶部附近的文本字段中。

  5. (可选的)修改选项名称,或者选择“选择”按钮以显示选项名称列表。

    “选择选项”对话框将显示所有 DHCP 标准选项的列表以及每个选项的简短说明。

  6. (可选的)在“选择选项”对话框中选择选项名称,然后单击“确定”。

    新的选项名称将显示在“选项名称”字段中。

  7. 为选项键入新值,然后单击“修改”。

  8. (可选的)您还可以通过在此对话框中选择“选择”,将选项添加到网络宏中。

    有关修改宏的更多常规信息,请参见修改 DHCP 宏

  9. 选择“将更改通知 DHCP 服务器”,然后单击“确定”。

    此选择将告知 DHCP 服务器重新读取 dhcptab 表,以使更改在单击“确定”之后立即生效。

Procedure如何修改 DHCP 网络配置 (dhtadm)

  1. 成为超级用户、承担指定给 DHCP 管理配置文件的角色或者使用指定给 DHCP 管理配置文件的用户名。

    有关 DHCP 管理配置文件的更多信息,请参见设置用户访问 DHCP 命令的权限

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 确定哪个宏包含网络的所有客户机的信息。

    网络宏的名称与网络 IP 地址相匹配。

    如果您不知道哪个宏包含此信息,则可以使用命令 dhtadm -P 显示 dhcptab 表来列出所有宏。

  3. 键入如下格式的命令以更改要更改的选项的值:


    # dhtadm -M -m macro-name -e 'symbol=value' -g
    

    有关 dhtadm 命令行选项的更多信息,请参见 dhtadm(1M) 手册页。


示例 15–2 使用 dhtadm 命令修改 DHCP 宏

例如,要将 10.25.62.0 宏的租用时间更改为 57600 秒,将 NIS 域更改为 sem.example.com,请键入以下命令:

# dhtadm -M -m 10.25.62.0 -e 'LeaseTim=57600' -g

# dhtadm -M -m 10.25.62.0 -e 'NISdmain=sem.example.com' -g

-g 选项会使 DHCP 守护进程重新读取 dhcptab 表,并使更改生效。


删除 DHCP 网络

使用 DHCP 管理程序,一次可以删除多个网络。您还可以选择自动删除与这些网络上 DHCP 管理的 IP 地址关联的主机表项。下图显示了 DHCP 管理程序的“删除网络”对话框。

图 15–7 DHCP 管理程序中的“删除网络”对话框

此对话框显示了“保留的网络”和“删除网络”两个列表以及它们之间的选择箭头,同时还显示了“删除主机表项”复选框。

pntadm 命令要求您先删除网络中的每个 IP 地址项,然后再删除网络。一次只能删除一个网络。

Procedure如何删除 DHCP 网络(DHCP 管理程序)

  1. 在 DHCP 管理程序中,选择“地址”选项卡。

    有关 DHCP 管理程序的信息,请参见如何启动和停止 DHCP 管理程序

  2. 从“编辑”菜单中选择“删除网络”。

    将打开“删除网络”对话框。

  3. 在“保留的网络”列表中,选择要删除的网络。

    在按住 Ctrl 键的同时用鼠标单击以选择多个网络。在按住 Shift 键的同时进行单击以选择一系列网络。

  4. 单击右箭头按钮将选定的网络移动到“删除的网络”列表中。

  5. 如果您要删除此网络 DHCP 地址的主机表项,请选择“删除主机表项”。

    请注意,删除主机表项不会删除 DNS 服务器上这些地址的主机注册,而只是在本地名称服务中删除这些项。

  6. 单击“确定”。

Procedure如何删除 DHCP 网络 (pntadm)

请注意,此过程将先从 DHCP 网络表中删除网络的 IP 地址,然后再删除网络。将删除地址以确保从 hosts 文件或数据库中删除主机名。

  1. 成为超级用户、承担指定给 DHCP 管理配置文件的角色或者使用指定给 DHCP 管理配置文件的用户名。

    有关 DHCP 管理配置文件的更多信息,请参见设置用户访问 DHCP 命令的权限

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 键入如下格式的命令以从名称服务中删除 IP 地址及其主机名:


    # pntadm -D -y IP-address
    

    例如,要删除 IP 地址 10.25.52.1,请键入以下命令:

    # pntadm -D -y 10.25.52.1

    -y 选项指定删除主机名。

  3. 对于网络中的每个地址重复执行 pntadm -D -y 命令。

    如果您要删除多个地址,则可能需要创建脚本以运行 pntadm 命令。

  4. 删除所有地址之后,键入以下命令以从 DHCP 服务中删除网络。


    # pntadm -R network-IP-address
    

    例如,要删除网络 10.25.52.0,请键入以下命令:

    # pntadm -R 10.25.52.0

    有关使用 pntadm 实用程序的更多信息,请参见 pntadm(1M) 手册页。

通过 DHCP 服务支持 BOOTP 客户机(任务列表)

要在 DHCP 服务器上支持 BOOTP 客户机,您必须将 DHCP 服务器设置为与 BOOTP 兼容。如果您要指定哪些 BOOTP 客户机可以使用 DHCP,则可以在 DHCP 服务器的网络表中注册 BOOTP 客户机。或者,您可以保留多个 IP 地址以自动分配给 BOOTP 客户机。


注 –

无论是否为 BOOTP 地址明确指定永久性租用,都会永久指定此 BOOTP 地址。


以下任务列表描述支持 BOOTP 客户机可能需要执行的任务。此任务列表包含指向用于执行这些任务的过程的链接。

任务 

说明 

参考 

设置自动 BOOTP 支持。 

在 DHCP 管理的网络上,或者在通过中继代理连接到 DHCP 管理的网络的网络上,为任何 BOOTP 客户机提供 IP 地址。  

您必须保留一个地址池来专供 BOOTP 客户机使用。在服务器必须支持大量 BOOTP 客户机的情况下,此选项可能更为有用。 

如何设置对任意 BOOTP 客户机的支持(DHCP 管理程序)

设置手动 BOOTP 支持。 

仅为那些已手动注册 DHCP 服务的 BOOTP 客户机提供 IP 地址。  

此选项要求您将客户机的 ID 绑定到已为 BOOTP 客户机标记的特定 IP 地址。在具有少量 BOOTP 客户,或者您要限制可以使用 DHCP 服务器的 BOOTP 客户机的情况下,此选项非常有用。 

如何设置对已注册的 BOOTP 客户机的支持(DHCP 管理程序)

Procedure如何设置对任意 BOOTP 客户机的支持(DHCP 管理程序)

  1. 在 DHCP 管理程序中,从“服务”菜单中选择“修改”。

    将打开“修改服务选项”对话框。

    有关 DHCP 管理程序的信息,请参见如何启动和停止 DHCP 管理程序

  2. 在此对话框的“BOOTP 兼容性”部分中,选择“自动”。

  3. 选择“重新启动服务器”,然后单击“确定”。

  4. 选择“地址”选项卡。

  5. 选择要为 BOOTP 客户机保留的地址。

    通过单击第一个地址,按住 Shift 键,然后单击最后一个地址,选择一系列地址。通过在按住 Ctrl 键的同时单击每个地址,选择多个不连续的地址。

  6. 从“编辑”菜单中选择“属性”。

    将打开“修改多个地址”对话框。

  7. 在“BOOTP”部分中,选择“仅为 BOOTP 客户机指定所有地址”。

    所有其他选项应设置为“保持当前设置”。

  8. 单击“确定”。

    现在,任意 BOOTP 客户机均可从此 DHCP 服务器中获取地址。

Procedure如何设置对已注册的 BOOTP 客户机的支持(DHCP 管理程序)

  1. 在 DHCP 管理程序中,从“服务”菜单中选择“修改”。

    将打开“修改服务选项”对话框。

    有关 DHCP 管理程序的信息,请参见如何启动和停止 DHCP 管理程序

  2. 在此对话框的“BOOTP 兼容性”部分中,选择“手动”。

  3. 选择“重新启动服务器”,然后单击“确定”。

  4. 选择“地址”选项卡。

  5. 选择要指定给特定 BOOTP 客户机的地址。

  6. 从“编辑”菜单中选择“属性”。

    将打开“地址属性”对话框。

  7. 在“地址属性”对话框中,选择“租用”选项卡。

  8. 在“客户机 ID”字段中,键入客户机的标识符。

    对于以太网上的 BOOTP Oracle Solaris : 客户机,客户机 ID 是从客户机的十六进制以太网地址派生的字符串。客户机 ID 包括一个指示以太网地址解析协议 (Address Resolution Protocol, ARP) 类型的前缀 (01)。例如,以太网地址为 8:0:20:94:12:1e 的 BOOTP 客户机可以使用客户机 ID 0108002094121E


    提示 –

    以 Oracle Solaris : 客户机系统上超级用户的身份,键入以下命令来获取接口的以太网地址:

    # ifconfig -a


  9. 选择“保留”以保留此客户机的 IP 地址。

  10. 选择“仅分配给 BOOTP 客户机”,然后单击“确定”。

    在“地址”选项卡中,BOOTP 将在“状态”字段中显示,您指定的客户机 ID 将在“客户机 ID”字段中列出。

在 DHCP 服务中处理 IP 地址(任务列表)

您可以使用 DHCP 管理程序或 pntadm 命令在 DHCP 服务中添加 IP 地址、修改地址属性以及删除地址。在处理 IP 地址之前,应参阅表 15–4 以熟悉 IP 地址属性。此表为用户提供了 DHCP 管理程序和 pntadm 的信息。


注 –

表 15–4 包括添加和修改 IP 地址时使用 pntadm 来指定 IP 地址属性的示例。有关 pntadm 的更多信息,另请参阅 pntadm(1M) 手册页。


以下任务列表列出了添加、修改或删除 IP 地址所需执行的任务。此任务列表还包含指向用于执行这些任务的过程的链接。

任务 

说明 

参考 

将单个或多个 IP 地址添加到 DHCP 服务中。 

使用 DHCP 管理程序,在已由 DHCP 服务管理的网络上添加 IP 地址。 

如何添加单个 IP 地址(DHCP 管理程序)

如何复制现有 IP 地址(DHCP 管理程序)

如何添加多个 IP 地址(DHCP 管理程序)

如何添加 IP 地址 (pntadm )

更改 IP 地址的属性。 

更改表 15–4 中所述的任意 IP 地址属性。

如何修改 IP 地址属性(DHCP 管理程序)

如何修改 IP 地址属性 (pntadm)

从 DHCP 服务中删除 IP 地址。 

防止使用由 DHCP 指定的 IP 地址。 

如何将 IP 地址标记为不可用(DHCP 管理程序)

如何将 IP 地址标记为不可用 (pntadm)

如何从 DHCP 服务中删除 IP 地址(DHCP 管理程序)

如何从 DHCP 服务中删除 IP 地址 (pntadm)

为 DHCP 客户机指定相同的 IP 地址。 

将客户机设置为在每次请求其配置时都收到相同的 IP 地址。 

如何为 DHCP 客户机指定相同的 IP 地址(DHCP 管理程序)

如何为 DHCP 客户机指定相同的 IP 地址 (pntadm)

下表列出并介绍了 IP 地址的属性。

表 15–4 IP 地址属性

属性 

说明 

如何在 pntadm 命令中指定

网络地址 

包含您要处理的 IP 地址的网络的地址。 

网络地址显示在 DHCP 管理程序的“地址”选项卡内的“网络”列表中。 

网络地址必须是用于创建、修改或删除 IP 地址的 pntadm 命令行中的最后一个参数。

例如,要将 IP 地址添加到网络 10.21.0.0 中,请键入:

pntadm -A ip-address options 10.21.0.0

IP 地址 

您要处理(创建、修改或删除)的地址。 

IP 地址显示在 DHCP 管理程序的“地址”选项卡的第一列中。 

IP 地址必须与 pntadm 命令的 -A-M-D 选项一起出现。

例如,要修改 IP 地址 10.21.5.12,请键入:

pntadm -M 10.21.5.12 options 10.21.0.0

客户机名称 

映射到主机表中 IP 地址的主机名。此名称可以由 DHCP 管理程序在创建地址时自动生成。如果您创建单个地址,则可以提供名称。 

使用 -h 选项指定客户机名称。

例如,要为 10.21.5.12 指定客户机名称 carrot12,请键入:

pntadm -M 10.21.5.12 -h carrot12 10.21.0.0

归服务器所有 

管理 IP 地址并对 DHCP 客户机 IP 地址分配的请求做出响应的 DHCP 服务器。 

使用 -s 选项指定所属服务器名称。

例如,要指定服务器 blue2 拥有 10.21.5.12,请键入:

pntadm -M 10.21.5.12 -s blue2 10.21.0.0

配置宏 

DHCP 服务器用于从 dhcptab 表中获取网络配置选项的宏。当您配置服务器和添加网络时,会自动创建多个宏。有关宏的更多信息,请参见关于 DHCP 宏。创建地址时,还会创建一个服务器宏。服务器宏作为配置宏指定给每个地址。

使用 -m 选项指定宏名称。

例如,要将服务器宏 blue2 指定给地址 10.21.5.12,请键入:

pntadm -M 10.21.5.12 -m blue2 10.21.0.0

客户机 ID 

在 DHCP 服务中具有唯一性的文本字符串。

如果列出的客户机 ID 为 00,则表示没有为任何客户机分配地址。如果您在修改 IP 地址属性时指定了客户机 ID,则此地址以独占方式绑定到此客户机。 

客户机 ID 由 DHCP 客户机的供应商确定。如果您的客户机不是 Oracle Solaris : DHCP 客户机,请参阅 DHCP 客户机文档以获取更多信息。 

使用 -i 选项指定客户机 ID。

例如,要将客户机 ID 08002094121E 指定给地址 10.21.5.12,请键入:

pntadm -M 10.21.5.12 -i 0108002094121E 10.21.0.0

 

对于 Oracle Solaris : DHCP 客户机,客户机 ID 由客户机的十六进制硬件地址派生而来。客户机 ID 包括一个表示网络类型的 ARP 代码前缀,例如 01 表示以太网。ARP 代码由 Internet 编号分配机构 (Internet Assigned Numbers Authority, IANA) 在 http://www.iana.com/numbers.html 上编号指定标准的“ARP Parameters(ARP 参数)”部分指定。

例如,十六进制以太网地址为 8:0:20:94:12:1e 的 Oracle Solaris : 客户机所使用的客户机 ID 为 0108002094121E。如果客户机当前使用一个地址,则客户机 ID 将在 DHCP 管理程序和 pntadm 中列出。

提示:以 Oracle Solaris : 客户机系统上超级用户的身份,键入以下命令来获取接口的以太网地址:ifconfig -a

 

保留 

该设置指定地址专门为客户机 ID 指示的客户机保留并且 DHCP 服务器不能回收此地址。如果您选择此选项,请手动为客户机指定地址。

指定手动或使用 -f 选项保留地址。

例如,要指定为客户机保留 IP 地址 10.21.5.12,请键入:

pntadm -M 10.21.5.12 -f MANUAL 10.21.0.0

租用类型或策略 

该设置确定 DHCP 如何管理客户机对 IP 地址的使用。租用既可以是动态的,也可以是永久性的。有关完整说明,请参见动态和永久租用类型

指定使用 -f 选项永久指定地址。缺省情况下,将动态租用地址。

例如,要指定永久租用 IP 地址 10.21.5.12,请键入:

pntadm -M 10.21.5.12 -f PERMANENT 10.21.0.0

租用失效日期 

租用失效的日期,仅当指定了动态租用时才适用。日期以 mm/dd/yyyy 格式指定。

使用 -e 选项指定失效日期。

例如,要将失效日期指定为 2006 年 1 月 1 日,请键入: 

pntadm -M 10.21.5.12 -e 01/01/2006 10.21.0.0

BOOTP 设置 

该设置将地址标记为保留供 BOOTP 客户机使用。有关支持 BOOTP 客户机的更多信息,请参见通过 DHCP 服务支持 BOOTP 客户机(任务列表)

使用 -f 选项为 BOOTP 客户机保留地址。

例如,要为 BOOTP 客户机保留 IP 地址 10.21.5.12,请键入:

pntadm -M 10.21.5.12 -f BOOTP 10.21.0.0

不可用的设置 

该设置将地址标记为禁止向任何客户机指定此地址。

使用 -f 选项将地址标记为不可用。

例如,要将 IP 地址 10.21.5.12 标记为不可用,请键入:

pntadm -M 10.21.5.12 -f UNUSABLE 10.21.0.0

将 IP 地址添加到 DHCP 服务

在添加 IP 地址之前,您必须将拥有这些地址的网络添加到 DHCP 服务中。有关添加网络的信息,请参见添加 DHCP 网络

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

在已由 DHCP 服务管理的网络上,您可以使用 DHCP 管理程序通过几种方法来添加地址:

下图显示了“创建地址”对话框。“复制地址”对话框等同于“创建地址”对话框,只是文本字段显示现有地址的值。

图 15–8 DHCP 管理程序中的“创建地址”对话框

此对话框显示了“地址”选项卡,其中包括“IP 地址”、“客户机名称”和“注释”字段,同时还显示了称为“配置宏”的下拉列表。

下图显示了用于添加一系列 IP 地址的“将地址添加到网络”向导的第一个对话框。

图 15–9 DHCP 管理程序中的“将地址添加到网络”向导

文中对此图的用途进行了说明。它显示了“IP 地址数”和“注释”字段、返回箭头和向前箭头、“取消”和“帮助”按钮。

Procedure如何添加单个 IP 地址(DHCP 管理程序)

  1. 在 DHCP 管理程序中,选择“地址”选项卡。

    有关 DHCP 管理程序的信息,请参见如何启动和停止 DHCP 管理程序

  2. 选择要添加新 IP 地址的网络。

  3. 从“编辑”菜单中选择“创建”。

    将打开“创建地址”对话框。

  4. 在“地址”和“租用”选项卡上,为地址设置选择或键入值。

    选择“帮助”按钮以打开 Web 浏览器,来显示此对话框的帮助信息。有关这些设置的详细信息,另请参见表 15–4

  5. 单击“确定”。

Procedure如何复制现有 IP 地址(DHCP 管理程序)

  1. 在 DHCP 管理程序中,选择“地址”选项卡。

    有关 DHCP 管理程序的信息,请参见如何启动和停止 DHCP 管理程序

  2. 选择新 IP 地址所在的网络。

  3. 选择具有要复制的属性的地址。

  4. 从“编辑”菜单中选择“复制”。

  5. 在“IP 地址”字段中指定新的 IP 地址。

  6. (可选的)为此地址指定新的客户机名称。

    您所使用的名称不能与要复制的地址所使用的名称相同。

  7. (可选的)如有必要,修改其他选项值。

    大多数其他选项值应保持不变。

  8. 单击“确定”。

Procedure如何添加多个 IP 地址(DHCP 管理程序)

  1. 在 DHCP 管理程序中,选择“地址”选项卡。

    有关 DHCP 管理程序的信息,请参见如何启动和停止 DHCP 管理程序

  2. 选择要添加多个新 IP 地址的网络。

  3. 从“编辑”菜单中选择“地址向导”。

    “将地址添加到网络”对话框将提示您为 IP 地址属性提供值。请参见表 15–4 以获取有关这些属性的更多信息,或者在此对话框中选择“帮助”按钮。为 IP 地址管理制定决策(任务列表)介绍了更详细的信息。

  4. 完成每个屏幕上的操作时单击右箭头按钮,并在最后一个屏幕上单击“完成”。

    “地址”选项卡将使用新地址进行更新。

Procedure如何添加 IP 地址 (pntadm )

  1. 成为超级用户、承担指定给 DHCP 管理配置文件的角色或者使用指定给 DHCP 管理配置文件的用户名。

    有关 DHCP 管理配置文件的更多信息,请参见设置用户访问 DHCP 命令的权限

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 通过键入如下格式的命令来添加 IP 地址:


    # pntadm -A ip-address options  network-address
    

    有关可与 pntadm -A 一起使用的选项的列表,请参阅 pntadm(1M) 手册页。此外,表 15–4 还显示了指定这些选项的一些 pntadm 命令样例。


    注 –

    您可以编写脚本以使用 pntadm 添加多个地址。有关示例,请参见示例 18–1


在 DHCP 服务中修改 IP 地址

您可以使用 DHCP 管理程序或 pntadm -M 命令来修改表 15–4 中所述的任意地址属性。有关 pntadm -M 的更多信息,请参见 pntadm(1M) 手册页。

下图显示了用于修改 IP 地址属性的“地址属性”对话框。

图 15–10 DHCP 管理程序中的“地址属性”对话框

包含“IP 地址”、“客户机名称”、“归服务器所有”以及“注释”字段的“地址”选项卡,同时还显示了带有下拉列表的“配置宏”。

下图显示了用于修改多个 IP 地址的“修改多个地址”对话框。

图 15–11 DHCP 管理程序中的“修改多个地址”对话框

此对话框显示了标记为“管理服务器”和“配置宏”的下拉列表,同时还显示了“BOOTP”、“不可用”地址和“租用类型”选项。

Procedure如何修改 IP 地址属性(DHCP 管理程序)

  1. 在 DHCP 管理程序中,选择“地址”选项卡。

    有关 DHCP 管理程序的信息,请参见如何启动和停止 DHCP 管理程序

  2. 选择 IP 地址所在的网络。

  3. 选择一个或多个要修改的 IP 地址。

    如果您要修改多个地址,请在按住 Ctrl 键的同时用鼠标单击以选择多个地址。您还可以在按住 Shift 键的同时进行单击以选择一系列地址。

  4. 从“编辑”菜单中选择“属性”。

    将打开“地址属性”对话框或“修改多个地址”对话框。

  5. 更改适当的属性。

    单击“帮助”按钮,或者参阅表 15–4 以获取有关这些属性的信息。

  6. 单击“确定”。

Procedure如何修改 IP 地址属性 (pntadm)

  1. 成为超级用户、承担指定给 DHCP 管理配置文件的角色或者使用指定给 DHCP 管理配置文件的用户名。

    有关 DHCP 管理配置文件的更多信息,请参见设置用户访问 DHCP 命令的权限

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 通过键入如下格式的命令来修改 IP 地址属性:


    # pntadm -M ip-address options network-address
    

    许多选项都可以与 pntadm 命令一起使用,这些选项在 pntadm(1M) 手册页中进行了介绍。

    表 15–4 显示了指定这些选项的一些 pntadm 命令样例。

从 DHCP 服务中删除 IP 地址

有时,您可能希望 DHCP 服务停止管理某个特定的 IP 地址或地址组。用于从 DHCP 中删除地址的方法取决于您希望更改是临时更改还是永久性更改。

通过 DHCP 服务将 IP 地址标记为不可用

您可以使用带有 -f UNUSABLE 选项的 pntadm -M 命令将地址标记为不可用。

在 DHCP 管理程序中,可以使用“地址属性”对话框(图 15–10 中所示)标记单个地址。可以使用“修改多个地址”对话框(图 15–11 中所示)标记多个地址,如以下过程中所述。

Procedure如何将 IP 地址标记为不可用(DHCP 管理程序)

  1. 在 DHCP 管理程序中,选择“地址”选项卡。

    有关 DHCP 管理程序的信息,请参见如何启动和停止 DHCP 管理程序

  2. 选择 IP 地址所在的网络。

  3. 选择一个或多个要标记为不可用的 IP 地址。

    如果您要将多个地址标记为不可用,请在按住 Ctrl 键的同时用鼠标单击以选择多个地址。您还可以在按住 Shift 键的同时进行单击以选择一系列地址。

  4. 从“编辑”菜单中选择“属性”。

    将打开“地址属性”对话框或“修改多个地址”对话框。

  5. 如果要修改一个地址,请选择“租用”选项卡。

  6. 选择“地址不可用”。

    如果要编辑多个地址,请选择“将所有地址标记为不可用”。

  7. 单击“确定”。

Procedure如何将 IP 地址标记为不可用 (pntadm)

  1. 成为超级用户、承担指定给 DHCP 管理配置文件的角色或者使用指定给 DHCP 管理配置文件的用户名。

    有关 DHCP 管理配置文件的更多信息,请参见设置用户访问 DHCP 命令的权限

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 通过键入如下格式的命令将 IP 地址标记为不可用:


    # pntadm -M ip-address -f UNUSABLE network-address
    

    例如,要将地址 10.64.3.3 标记为不可用,请键入:

    pntadm -M 10.64.3.3 -f UNUSABLE 10.64.3.0

从 DHCP 服务中删除 IP 地址

如果您不再希望 IP 地址由 DHCP 进行管理,请从 DHCP 网络表中删除这些地址。您可以使用 pntadm -D 命令或 DHCP 管理程序的“删除地址”对话框。

下图显示了“删除地址”对话框。

图 15–12 DHCP 管理程序中的“删除地址”对话框

此对话框显示了要删除的 IP 地址列表以及一个标记为“从主机表中删除”的复选框,同时还显示了“确定”、“取消”和“帮助”按钮。

Procedure如何从 DHCP 服务中删除 IP 地址(DHCP 管理程序)

  1. 在 DHCP 管理程序中,选择“地址”选项卡。

    有关 DHCP 管理程序的信息,请参见如何启动和停止 DHCP 管理程序

  2. 选择 IP 地址所在的网络。

  3. 选择一个或多个要删除的 IP 地址。

    如果您要删除多个地址,请在按住 Ctrl 键的同时用鼠标单击以选择多个地址。您还可以在按住 Shift 键的同时进行单击以选择一系列地址。

  4. 从“编辑”菜单中选择“删除”。

    “删除地址”对话框将列出所选的地址,以便您可以确认删除操作。

  5. 如果您要从主机表中删除主机名,请选择“从主机表中删除”。

    如果主机名由 DHCP 管理程序生成,您可能需要从主机表中删除主机名。

  6. 单击“确定”。

Procedure如何从 DHCP 服务中删除 IP 地址 (pntadm)

  1. 成为超级用户、承担指定给 DHCP 管理配置文件的角色或者使用指定给 DHCP 管理配置文件的用户名。

    有关 DHCP 管理配置文件的更多信息,请参见设置用户访问 DHCP 命令的权限

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 通过键入如下格式的命令来删除 IP 地址:


    # pntadm -D ip-address options network-address
    

    如果包括 -y 选项,则会从维护主机名的名称服务中删除主机名。

    例如,要从网络 10.64.3.0 中删除地址 10.64.3.3,并且删除相应的主机名,请键入:

    pntadm -D 10.64.3.3 -y 10.64.3.0

为 DHCP 客户机指定保留的 IP 地址

Oracle Solaris : DHCP 服务尝试为先前通过 DHCP 获取地址的客户机提供相同的 IP 地址。但是,有时地址已重新指定给其他客户机。

对于网络至关重要的路由器、NIS 或 NIS+ 服务器、DNS 服务器以及其他主机都不应作为 DHCP 客户机。为网络提供服务的主机不应依赖于网络来获取其 IP 地址。打印服务器或文件服务器之类的客户机也应当具有固定的 IP 地址。这些客户机可以从 DHCP 服务器接收其网络配置,并且还指定有固定的 IP 地址。

您可以将 DHCP 服务器设置为在客户机每次请求配置时都为此客户机提供相同的 IP 地址。通过根据您希望客户机使用的地址手动指定客户机的 ID,您可以为客户机保留 IP 地址。您可以将保留的地址设置为使用动态租用或永久性租用。如果客户机的地址使用动态租用,则可以轻松跟踪地址的使用。无盘客户机便是一个应当使用保留的地址以及动态租用的客户机示例。如果客户机的地址使用永久性租用,则不能跟踪地址的使用。客户机在获取永久性租用之后便不会再与服务器联系。客户机仅通过释放 IP 地址并重新启动 DHCP 租用协商,便可获取更新的配置信息。

您可以使用 pntadm -M 命令或 DHCP 管理程序的“地址属性”对话框来设置租用属性。

下图显示了“地址属性”对话框中用于修改租用的“租用”选项卡。

图 15–13 DHCP 管理程序中“地址属性”的“租用”选项卡

此对话框显示了“租用”选项卡,此选项卡包括“客户机 ID”字段、“保留”复选框,以及“租用策略”、BOOTP 客户机和“地址不可用”的设置。

Procedure如何为 DHCP 客户机指定相同的 IP 地址(DHCP 管理程序)

  1. 在 DHCP 管理程序中,选择“地址”选项卡。

    有关 DHCP 管理程序的信息,请参见如何启动和停止 DHCP 管理程序

  2. 选择适当的网络。

  3. 双击您希望客户机使用的 IP 地址。

    将打开“地址属性”窗口。

  4. 选择“租用”选项卡。

  5. 在“客户机 ID”字段中,键入客户机 ID。

    客户机 ID 由客户机的硬件地址派生而来。有关更多信息,请参见表 15–4 中的“客户机 ID”项。

  6. 选择“保留的”选项以防止服务器回收 IP 地址。

  7. 在窗口的“租用策略”区域中,选择“到期动态分配”或“永久分配”。

    如果您希望客户机通过协商来更新租用,请选择“到期动态分配”,从而可以跟踪使用地址的时间。由于您选择了“保留的”,因此即使指定了动态租用,也无法回收地址。您不需要为此租用指定失效日期。DHCP 服务器将使用租用时间来计算失效日期。

    如果您选择“永久分配”,则无法跟踪 IP 地址的使用,除非启用事务日志。

  8. 单击“确定”。

Procedure如何为 DHCP 客户机指定相同的 IP 地址 (pntadm)

  1. 成为超级用户、承担指定给 DHCP 管理配置文件的角色或者使用指定给 DHCP 管理配置文件的用户名。

    有关 DHCP 管理配置文件的更多信息,请参见设置用户访问 DHCP 命令的权限

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 通过键入如下格式的命令来设置租用标志:


    # pntadm -M ip-address -i client-id -f MANUAL+BOOTP network-address
    

    例如,要使 MAC 地址为 08:00:20:94:12:1E 的 Oracle Solaris : DHCP 客户机始终收到 IP 地址 10.21.5.12,请键入:

    pntadm -M 10.21.5.12 -i 0108002094121E -f MANUAL+BOOTP 10.21.0.0


    提示 –

    有关如何确定客户机标识符的更多信息,请参阅表 15–4 中的“客户机 ID”项。


使用 DHCP 宏(任务列表)

DHCP 宏是 DHCP 选项的容器。Oracle Solaris : DHCP 服务使用宏来收集应传递到客户机的选项。当您配置服务器时,DHCP 管理程序和 dhcpconfig 实用程序便会自动创建多个宏。有关宏的背景信息,请参见关于 DHCP 宏。有关缺省情况下创建的宏的信息,请参见第 14 章

您可能会发现:当网络发生更改时,需要对传递到客户机的配置信息进行更改。要更改配置信息,需要使用 DHCP 宏。您可以查看、创建、修改、复制以及删除 DHCP 宏。

使用宏时,您必须了解 DHCP 标准选项,这些选项在 dhcp_inittab(4) 手册页中进行了介绍。

以下任务列表列出了可帮助您查看、创建、修改和删除 DHCP 宏的任务。此列表还包括指向详细说明如何完成每项任务的章节的链接。

任务 

说明 

参考 

查看 DHCP 宏。 

显示在 DHCP 服务器上定义的所有宏的列表。 

如何查看在 DHCP 服务器上定义的宏(DHCP 管理程序)

如何查看在 DHCP 服务器上定义的宏 (dhtadm)

创建 DHCP 宏。 

创建新的宏以支持 DHCP 客户机。 

如何创建 DHCP 宏(DHCP 管理程序)

如何创建 DHCP 宏 (dhtadm)

修改通过宏传递到 DHCP 客户机的值。 

通过修改现有选项,将选项添加到宏或从宏中删除选项来更改宏。 

如何在 DHCP 宏中更改选项的值(DHCP 管理程序)

如何在 DHCP 宏中修改选项的值 (dhtadm)

如何将选项添加到 DHCP 宏(DHCP 管理程序)

如何将选项添加到 DHCP 宏 (dhtadm)

如何从 DHCP 宏中删除选项(DHCP 管理程序)

如何从 DHCP 宏中删除选项 (dhtadm)

删除 DHCP 宏。 

删除不再使用的 DHCP 宏。 

如何删除 DHCP 宏(DHCP 管理程序)

如何删除 DHCP 宏 (dhtadm)

下图显示了“DHCP 管理程序”窗口中的“宏”选项卡。

图 15–14 DHCP 管理程序的“宏”选项卡

“宏”选项卡显示了已选定一个宏的宏列表,同时还显示了宏中包含的选项名称和值。显示了“查找”字段和“下一步”按钮。

Procedure如何查看在 DHCP 服务器上定义的宏(DHCP 管理程序)

  1. 在 DHCP 管理程序中,选择“宏”选项卡。

    有关 DHCP 管理程序的信息,请参见如何启动和停止 DHCP 管理程序

    在此窗口左侧的“宏”区域中,按字母顺序显示了在 DHCP 服务器上定义的所有宏。前面标有文件夹图标的宏包括对其他宏的引用,而前面标有文档图标的宏则不引用其他宏。

  2. 要打开宏文件夹,请单击文件夹图标左侧的句柄图标。

    将列出选定宏中包含的宏。

  3. 要查看宏的内容,请单击宏名称。

    将显示选项以及为其指定的值。

Procedure如何查看在 DHCP 服务器上定义的宏 (dhtadm)

  1. 成为超级用户、承担指定给 DHCP 管理配置文件的角色或者使用指定给 DHCP 管理配置文件的用户名。

    有关 DHCP 管理配置文件的更多信息,请参见设置用户访问 DHCP 命令的权限

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 通过键入以下命令来显示宏:


    # dhtadm -P
    

    此命令以标准输出的形式列显已格式化的 dhcptab 表内容,其中包括在 DHCP 服务器上定义的所有宏和符号。

修改 DHCP 宏

当网络在某些方面发生更改并且一台或多台 DHCP 客户机需要了解该更改时,您可能需要修改宏。例如,您可能会添加路由器或 NIS 服务器、创建新的子网或者更改租用策略。

在修改宏之前,请确定要更改、添加或删除的 DHCP 选项的名称。标准 DHCP 选项在 DHCP 管理程序帮助和 dhcp_inittab(4) 手册页中列出。

可以使用 dhtadm -M -m 命令或 DHCP 管理程序来修改宏。有关 dhtadm 的更多信息,请参见 dhtadm(1M) 手册页。

下图显示了 DHCP 管理程序的“宏属性”对话框。

图 15–15 DHCP 管理程序中的“宏属性”对话框

此对话框显示了选项及其值的列表,同时还显示了“选择”、“添加”、“修改”、向上、向下、“删除”按钮,以及用于通知服务器的复选框。

Procedure如何在 DHCP 宏中更改选项的值(DHCP 管理程序)

  1. 在 DHCP 管理程序中,选择“宏”选项卡。

    有关 DHCP 管理程序的信息,请参见如何启动和停止 DHCP 管理程序

  2. 选择要更改的宏。

  3. 从“编辑”菜单中选择“属性”。

    将打开“宏属性”对话框。

  4. 在“选项”表中,选择要更改的选项。

    选项的名称和值将分别显示在“选项名称”和“选项值”字段中。

  5. 在“选项值”字段中,针对选项选择旧值并键入新值。

  6. 单击“修改”。

    新值将显示在选项表中。

  7. 选择“将更改通知 DHCP 服务器”。

    此选择将告知 DHCP 服务器重新读取 dhcptab 表,以使更改在单击“确定”之后立即生效。

  8. 单击“确定”。

Procedure如何在 DHCP 宏中修改选项的值 (dhtadm)

  1. 成为超级用户、承担指定给 DHCP 管理配置文件的角色或者使用指定给 DHCP 管理配置文件的用户名。

    有关 DHCP 管理配置文件的更多信息,请参见设置用户访问 DHCP 命令的权限

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 通过键入如下格式的命令来更改选项值:


    # dhtadm -M -m macroname -e 'option=value:option=value' -g
    

    例如,要在宏 bluenote 内更改租用时间和“通用时间偏移”,请键入:

    # dhtadm -M -m bluenote -e 'LeaseTim=43200:UTCOffst=28800' -g

Procedure如何将选项添加到 DHCP 宏(DHCP 管理程序)

  1. 在 DHCP 管理程序中,选择“宏”选项卡。

    有关 DHCP 管理程序的信息,请参见如何启动和停止 DHCP 管理程序

  2. 选择要更改的宏。

  3. 从“编辑”菜单中选择“属性”。

    将打开“宏属性”对话框。

  4. 在“选项名称”字段中,使用以下方法之一指定选项的名称:

    • 单击“选项名称”字段旁边的“选择”按钮来选择要添加到宏中的选项。

      “选择选项”对话框将显示按字母顺序排列标准类别选项名称及其说明的列表。如果您要添加的选项不在标准类别中,请使用“类别”列表来选择一个类别。

      有关宏类别的更多信息,请参见关于 DHCP 宏

    • 如果您要使新的宏包含对现有宏的引用,请键入 Include

  5. 在“选项值”字段中键入选项的值。

    如果您键入了 Include 作为选项名称,则必须在“选项值”字段中指定现有宏的名称。

  6. 单击“添加”。

    选项将添加到此宏的选项列表的底部。要更改选项在宏中的位置,请选择此选项并单击箭头按钮,以便在列表中上下移动它。

  7. 选择“将更改通知 DHCP 服务器”。

    此选择将告知 DHCP 服务器重新读取 dhcptab 表,以使更改在单击“确定”之后立即生效。

  8. 单击“确定”。

Procedure如何将选项添加到 DHCP 宏 (dhtadm)

  1. 成为超级用户、承担指定给 DHCP 管理配置文件的角色或者使用指定给 DHCP 管理配置文件的用户名。

    有关 DHCP 管理配置文件的更多信息,请参见设置用户访问 DHCP 命令的权限

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 通过键入如下格式的命令将选项添加到宏:


    # dhtadm -M -m macroname -e 'option=value' -g
    

    例如,要在宏 bluenote 内添加协商租用的功能,请键入以下命令:

    # dhtadm -M -m bluenote -e 'LeaseNeg=_NULL_VALUE' -g

    请注意,如果某选项不需要值,则必须使用 _NULL_VALUE 作为此选项的值。

Procedure如何从 DHCP 宏中删除选项(DHCP 管理程序)

  1. 在 DHCP 管理程序中,选择“宏”选项卡。

    有关 DHCP 管理程序的信息,请参见如何启动和停止 DHCP 管理程序

  2. 选择要更改的宏。

  3. 从“编辑”菜单中选择“属性”。

    将打开“宏属性”对话框。

  4. 选择要从宏中删除的选项。

  5. 单击“删除”。

    选项将从此宏的选项列表中删除。

  6. 选择“将更改通知 DHCP 服务器”。

    此选择将告知 DHCP 服务器重新读取 dhcptab 表,以使更改在单击“确定”之后立即生效。

  7. 单击“确定”。

Procedure如何从 DHCP 宏中删除选项 (dhtadm)

  1. 成为超级用户、承担指定给 DHCP 管理配置文件的角色或者使用指定给 DHCP 管理配置文件的用户名。

    有关 DHCP 管理配置文件的更多信息,请参见设置用户访问 DHCP 命令的权限

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 通过键入如下格式的命令从宏中删除选项:


    # dhtadm -M -m macroname -e 'option=' -g
    

    例如,要从宏 bluenote 内删除协商租用的功能,请键入以下命令:

    # dhtadm -M -m bluenote -e 'LeaseNeg=' -g

    如果指定了不带值的选项,则会从宏中删除此选项。

创建 DHCP 宏

要支持具有特定需求的客户机,您可能需要向 DHCP 服务中添加新宏。您可以使用 dhtadm -A -m 命令或 DHCP 管理程序的“创建宏”对话框来添加宏。有关 dhtadm 命令的更多信息,请参见 dhtadm(1M) 手册页。

下图显示了 DHCP 管理程序的“创建宏”对话框。

图 15–16 DHCP 管理程序中的“创建宏”对话框

此对话框显示了“名称”、“选项名称”和“选项值”字段,同时还显示了“选择”按钮、空的选项列表,以及用于通知 DHCP 服务器的复选框。

Procedure如何创建 DHCP 宏(DHCP 管理程序)

  1. 在 DHCP 管理程序中,选择“宏”选项卡。

    有关 DHCP 管理程序的信息,请参见如何启动和停止 DHCP 管理程序

  2. 从“编辑”菜单中选择“创建”。

    将打开“创建宏”对话框。

  3. 为宏键入唯一名称。

    名称最多可包含 128 个字母数字字符。如果您使用的名称与供应商类标识符、网络地址或客户机 ID 相匹配,则会针对适当的客户机自动处理宏。如果您使用其他名称,则不会自动处理宏。宏必须指定给特定 IP 地址或者包含在另一个自动处理的宏中。有关更多详细信息,请参见DHCP 服务器的宏处理

  4. 单击“选项名称”字段旁边的“选择”按钮。

    “选择选项”对话框将显示按字母顺序排列标准类别选项名称及其说明的列表。如果您要添加的选项不在标准类别中,请使用“类别”列表。从“类别”列表中选择所需的类别。有关选项类别的更多信息,请参见关于 DHCP 选项

  5. 选择要添加到宏中的选项,然后单击“确定”。

    “宏属性”对话框将在“选项名称”字段中显示选定的选项。

  6. 在“选项值”字段中键入选项的值,然后单击“添加”。

    选项将添加到此宏的选项列表的底部。要更改选项在宏中的位置,请选择此选项并单击箭头按钮,以便在列表中上下移动它。

  7. 对于每个要添加到宏中的选项,重复执行步骤 5步骤 6

  8. 完成添加选项时,请选择“将更改通知 DHCP 服务器”。

    此选择将告知 DHCP 服务器重新读取 dhcptab 表,以使更改在单击“确定”之后立即生效。

  9. 单击“确定”。

Procedure如何创建 DHCP 宏 (dhtadm)

  1. 成为超级用户、承担指定给 DHCP 管理配置文件的角色或者使用指定给 DHCP 管理配置文件的用户名。

    有关 DHCP 管理配置文件的更多信息,请参见设置用户访问 DHCP 命令的权限

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 通过键入如下格式的命令来创建宏:


    # dhtadm -A -m macroname -d ':option=value:option=value:option=value:' -g
    

    可以在 d 的参数中包括任意数量的 -option=value 对。参数必须以冒号开头和结束,并且在各个 option=value 对之间也加有冒号。完整字符串必须括在引号中。

    例如,要创建宏 bluenote,请键入以下命令:

    # dhtadm -A -m bluenote -d ':Router=10.63.6.121\ :LeaseNeg=_NULL_VALUE:DNSserv=10.63.28.12:' -g
    

    请注意,如果某选项不需要值,则必须使用 _NULL_VALUE 作为此选项的值。

删除 DHCP 宏

您可能需要从 DHCP 服务中删除宏。例如,如果您从 DHCP 服务中删除网络,则还可以删除关联的网络宏。

您可以使用 dhtadm -D -m 命令或 DHCP 管理程序来删除宏。

Procedure如何删除 DHCP 宏(DHCP 管理程序)

  1. 在 DHCP 管理程序中,选择“宏”选项卡。

    有关 DHCP 管理程序的信息,请参见如何启动和停止 DHCP 管理程序

  2. 选择要删除的宏。

    “删除宏”对话框将提示您确认要删除指定的宏。

  3. 选择“将更改通知 DHCP 服务器”。

    此选择将告知 DHCP 服务器重新读取 dhcptab 表,以使更改在单击“确定”之后立即生效。

  4. 单击“确定”。

Procedure如何删除 DHCP 宏 (dhtadm)

  1. 成为超级用户、承担指定给 DHCP 管理配置文件的角色或者使用指定给 DHCP 管理配置文件的用户名。

    有关 DHCP 管理配置文件的更多信息,请参见设置用户访问 DHCP 命令的权限

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 通过键入如下格式的命令来删除宏:


    # dhtadm -D -m macroname -g
    

    例如,要删除宏 bluenote,请键入以下命令:

    # dhtadm -D -m bluenote -g

使用 DHCP 选项(任务列表)

选项是 DHCP 服务器可传递到客户机的网络配置参数的关键字。在 Oracle Solaris : DHCP 服务中,您无法创建、删除或修改标准 DHCP 选项。标准选项由 DHCP 协议定义,因此不能对这些选项进行更改。您只能针对为站点创建的选项执行任务。因此,当您首次设置 DHCP 服务时,DHCP 管理程序中的“选项”选项卡为空,直到针对站点创建选项。

如果您在 DHCP 服务器上创建选项,则还必须在 DHCP 客户机上添加有关这些选项的信息。对于 Oracle Solaris : DHCP 客户机,您必须编辑 /etc/dhcp/inittab 文件以针对新选项添加项。有关此文件的更多信息,请参见 dhcp_inittab(4) 手册页。

如果您的 DHCP 客户机不是 Oracle Solaris : 客户机,请参阅这些客户机的文档以获取有关添加选项或符号的信息。有关 Oracle Solaris : DHCP 中选项的更多信息,请参见关于 DHCP 选项

您可以使用 DHCP 管理程序或 dhtadm 命令来创建、修改或删除选项。


提示 –

在 DHCP 介绍中,选项被称为符号dhtadm 命令及其相关的手册页也将选项称为符号。


以下任务列表列出了创建、修改和删除 DHCP 选项所需执行的任务。此任务列表包含指向这些任务的过程的链接。

任务 

说明 

参考 

创建 DHCP 选项。 

添加新选项以获取标准 DHCP 选项不包含的信息。 

如何创建 DHCP 选项(DHCP 管理程序)

如何创建 DHCP 选项 (dhtadm)

修改 Oracle Solaris : DHCP 客户机的选项信息

修改 DHCP 选项。 

更改已创建的 DHCP 选项的属性。 

如何修改 DHCP 选项属性(DHCP 管理程序)

如何修改 DHCP 选项属性 (dhtadm)

删除 DHCP 选项。 

删除已创建的 DHCP 选项。 

如何删除 DHCP 选项(DHCP 管理程序)

如何删除 DHCP 选项 (dhtadm)

在创建 DHCP 选项之前,您应该熟悉下表中列出的选项属性。

表 15–5 DHCP 选项属性

选项属性 

说明 

类别 

选项的类别必须属于以下各项之一:

  • 供应商选项-特定于客户机的供应商平台(硬件或软件)的选项。

  • 站点选项-特定于站点的选项。

  • 扩展选项-已添加到 DHCP 协议中,但尚未在 Oracle Solaris : DHCP 中作为标准选项实现的较新选项。

代码 

代码是指定给选项的唯一数字。选项类别中的其他任何选项都不能使用相同的代码。代码必须适用于选项类别:

  • 供应商选项-对于每个供应商类,代码值为 1–254

  • 站点选项-代码值为 128–254

  • 扩展选项-代码值为 77–127

数据类型 

数据类型指定哪种数据类型可以作为选项值进行指定。以下列表中介绍了有效的数据类型。

  • ASCII-文本字符串值。

  • BOOLEAN-任何值都不与布尔数据类型关联。选项存在表示条件为真,而选项不存在则表示条件为假。例如,Hostname 选项为布尔选项。如果宏中存在 Hostname,则会使 DHCP 服务器查找与指定的地址关联的主机名。

  • IP-一个或多个采用点分十进制格式 (xxx.xxx.xxx.xxx) 的 IP 地址。

  • OCTET-未解释的二进制数据 ASCII 表示形式。例如,客户机 ID 使用八位字节数据类型。有效字符包括 0–9、A–F 和 a–f。要表示一个 8 位数,需要使用两个 ASCII 字符。

  • UNUMBER8、UNUMBER16、UNUMBER32、UNUMBER64、SNUMBER8、SNUMBER16、SNUMBER32 或 SNUMBER64-数值。初始的 U 或 S 表示数字是无符号数还是带符号数。末尾数字指明数字中的二进制位数。

粒度 

粒度指定需要使用某一数据类型的多少“实例”来表示一个完整的选项值。例如,如果数据类型为 IP 并且粒度为 2,则表示选项值必须包含两个 IP 地址。

最大值 

可以为选项指定的最大值数目。例如,假设最大值为 2,粒度为 2,并且数据类型为 IP。在这种情况下,选项值最多可以包含两对 IP 地址。 

供应商客户机类 

仅当选项类别为“供应商”时,此选项才可用。供应商客户机类标识与“供应商”选项关联的客户机类。类为表示客户机类型或操作系统的 ASCII 字符串。例如,某些型号的 Sun 工作站的类字符串为 SUNW.Sun-Blade-100。使用此选项类型,可以定义传递到属于同一类的所有客户机(而且只有此类的客户机)的配置参数。

您可以指定多个客户机类。只有那些客户机类值与所指定的类相匹配的 DHCP 客户机才能收到此类范围内的选项。 

客户机类由 DHCP 客户机的供应商确定。对于不属于 Oracle Solaris : 客户机的 DHCP 客户机,请参阅 DHCP 客户机的供应商文档以了解客户机类。 

对于 Oracle Solaris : 客户机,可以在客户机上键入 uname -i 命令来获取供应商客户机类。要指定供应商客户机类,请使用句点替换由 uname 命令返回的字符串中的所有逗号。例如,如果 uname -i 命令返回字符串 SUNW,Sun-Blade-100,则应将供应商客户机类指定为 SUNW.Sun-Blade-100

创建 DHCP 选项

如果当前在 DHCP 协议中没有可用于传递客户机信息的选项,则可以创建 DHCP 选项。在创建自己的选项之前,请参见 dhcp_inittab(4) 手册页,以获取在 Oracle Solaris : DHCP 中定义的所有选项的列表。

您可以使用 dhtadm -A -s 命令或 DHCP 管理程序的“创建选项”对话框来创建新选项。

下图显示了 DHCP 管理程序的“创建选项”对话框。

图 15–17 DHCP 管理程序中的“创建选项”对话框

此对话框显示了定义新选项属性的字段,同时还显示了“供应商客户机类”区域和“将更改通知 DHCP 服务器”复选框。

Procedure如何创建 DHCP 选项(DHCP 管理程序)

  1. 在 DHCP 管理程序中,选择“选项”选项卡。

    有关 DHCP 管理程序的信息,请参见如何启动和停止 DHCP 管理程序

  2. 从“编辑”菜单中选择“创建”。

    将打开“创建选项”对话框。

  3. 为新选项键入一个描述性的短名称。

    名称最多可包含 128 个字母数字字符和空格。

  4. 针对此对话框中的每个设置键入或选择值。

    请参阅表 15–5 以获取有关每个设置的信息,或者查看 DHCP 管理程序帮助。

  5. 如果完成创建选项,请选择“将更改通知 DHCP 服务器”。

    此选择将告知 DHCP 服务器重新读取 dhcptab 表,以使更改在单击“确定”之后立即生效。

  6. 单击“确定”。

    现在,您可以将选项添加到宏,并为要传递到客户机的选项指定值。

Procedure如何创建 DHCP 选项 (dhtadm)

  1. 成为超级用户、承担指定给 DHCP 管理配置文件的角色或者使用指定给 DHCP 管理配置文件的用户名。

    有关 DHCP 管理配置文件的更多信息,请参见设置用户访问 DHCP 命令的权限

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 通过键入采用如下格式的命令来创建 DHCP 选项:


    # dhtadm -A -s option-name -d 'category,code,data-type,granularity,maximum' -g
    
    option-name

    是一个最多包含 128 个字符的字母数字字符串。

    category

    是以下各项之一: SiteExtendVendor=list-of-classeslist-of-classes 是要将选项应用到的供应商客户机类的空格分隔列表。有关如何确定供应商客户机类的信息,请参见表 15–5

    code

    是一个适用于选项类别的数值,如表 15–5 中所述。

    data-type

    由表示与选项一起传递的数据类型的关键字指定,如表 15–5 中所述。

    granularity

    指定为非负数,如表 15–5 中所述。

    maximum

    是一个非负数,如表 15–5 中所述。


示例 15–3 使用 dhtadm 创建 DHCP 选项

以下命令将创建名为 NewOpt 的选项,这是一个“站点”类别选项。选项的代码为 130。选项的值可以设置为一个 8 位的无符号整数。

# dhtadm -A -s NewOpt -d 'Site,130,UNUMBER8,1,1' -g 

以下命令将创建名为 NewServ 的选项,这是一个“供应商”类别选项,应用于计算机类型为 SUNW,Sun-Blade-100SUNW,Sun-Blade-1000 的客户机。选项的代码为 200。选项的值可以设置为一个 IP 地址。

# dhtadm -A -s NewServ -d 'Vendor=SUNW.Sun-Blade-100 \ SUNW.Sun-Blade-1000,200,IP,1,1' -g

修改 DHCP 选项

如果您已为 DHCP 服务创建了选项,则可以更改这些选项的属性。您可以使用 dhtadm -M -s 命令或 DHCP 管理程序的“选项特性”对话框来修改选项。

请注意,您应当修改 Oracle Solaris : DHCP 客户机的选项信息,以反映对 DHCP 服务所做的修改。请参见修改 Oracle Solaris : DHCP 客户机的选项信息

下图显示了 DHCP 管理程序的“选项特性”对话框。

图 15–18 DHCP 管理程序中的“选项特性”对话框

此对话框显示了选定选项的当前属性,同时还显示了“供应商客户机类”和“将更改通知 DHCP 服务器”复选框。

Procedure如何修改 DHCP 选项属性(DHCP 管理程序)

  1. 在 DHCP 管理程序中,选择“选项”选项卡。

    有关 DHCP 管理程序的信息,请参见如何启动和停止 DHCP 管理程序

  2. 选择要修改的选项。

  3. 从“编辑”菜单中选择“属性”。

    将打开“选项特性”对话框。

  4. 根据需要编辑属性。

    请参见表 15–5 以获取有关属性的信息,或者查看 DHCP 管理程序帮助。

  5. 完成对选项执行的操作时,请选择“将更改通知 DHCP 服务器”。

    将对 dhcptab 表进行更改。将发送信号通知 DHCP 服务器重新读取 dhcptab 表以使更改生效。

  6. 单击“确定”。

Procedure如何修改 DHCP 选项属性 (dhtadm)

  1. 成为超级用户、承担指定给 DHCP 管理配置文件的角色或者使用指定给 DHCP 管理配置文件的用户名。

    有关 DHCP 管理配置文件的更多信息,请参见设置用户访问 DHCP 命令的权限

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 通过键入采用如下格式的命令来修改选项:


    # dhtadm -M -s option-name -d 'category,code,data-type,granularity,maximum' -g
    
    option-name

    指定要更改的选项的名称。

    category

    可以为 SiteExtendVendor=list-of-classeslist-of-classes 是要将选项应用到的供应商客户机类的空格分隔列表。例如,SUNW.Sun-Blade-100 SUNW.Ultra-80 SUNWi86pc

    code

    指定适用于选项类别的数值,如表 15–5 中所述。

    data-type

    指定表示与选项一起传递的数据类型的关键字,如表 15–5 中所述。

    granularity

    是一个非负数,如表 15–5 中所述。

    maximum

    是一个非负数,如表 15–5 中所述。

    请注意,您必须使用 -d 开关指定所有的 DHCP 选项属性,而不是仅指定要更改的属性。


示例 15–4 使用 dhtadm 修改 DHCP 选项

以下命令将修改名为 NewOpt 的选项。此选项为“站点”类别选项。选项的代码为 135。选项的值可以设置为一个 8 位的无符号整数。

# dhtadm -M -s NewOpt -d 'Site,135,UNUMBER8,1,1' 

以下命令将修改名为 NewServ 的选项,这是一个“供应商”类别选项。现在,此选项应用于计算机类型为 SUNW,Sun-Blade-100SUNW,i86pc 的客户机。选项的代码为 200。选项的值可以设置为一个 IP 地址。

# dhtadm -M -s NewServ -d 'Vendor=SUNW.Sun-Blade-100 \ SUNW.i86pc,200,IP,1,1' -g

删除 DHCP 选项

您无法删除标准 DHCP 选项。但是,如果您已为 DHCP 服务定义了选项,则可以使用 DHCP 管理程序或 dhtadm 命令来删除这些选项。

Procedure如何删除 DHCP 选项(DHCP 管理程序)

  1. 在 DHCP 管理程序中,选择“选项”选项卡。

    有关 DHCP 管理程序的信息,请参见如何启动和停止 DHCP 管理程序

  2. 选择要删除的选项。

  3. 从“编辑”菜单中选择“删除”。

    将打开“删除选项”对话框。

  4. 如果完成删除选项,请选择“将更改通知 DHCP 服务器”。

    此选择将告知 DHCP 服务器重新读取 dhcptab 表,以使更改在单击“确定”之后立即生效。

  5. 单击“确定”。

Procedure如何删除 DHCP 选项 (dhtadm)

  1. 成为超级用户、承担指定给 DHCP 管理配置文件的角色或者使用指定给 DHCP 管理配置文件的用户名。

    有关 DHCP 管理配置文件的更多信息,请参见设置用户访问 DHCP 命令的权限

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 通过键入采用如下格式的命令来删除 DHCP 选项:


    # dhtadm -D -s option-name -g
    

修改 Oracle Solaris : DHCP 客户机的选项信息

如果您向 DHCP 服务器添加了新的 DHCP 选项,则必须向每个 DHCP 客户机的选项信息中添加一个补充项。如果您的 DHCP 客户机不是 Oracle Solaris : DHCP 客户机,请参阅客户机的文档以获取有关添加选项或符号的信息。

在 Oracle Solaris : DHCP 客户机上,您必须编辑 /etc/dhcp/inittab 文件,并针对每个要添加到 DHCP 服务器的选项添加一项。如果您随后在此服务器上修改选项,则还必须在客户机的 /etc/dhcp/inittab 文件中修改此项。

有关 /etc/dhcp/inittab 文件语法的详细信息,请参阅 dhcp_inittab(4) 手册页。


注 –

如果您向先前的 Oracle Solaris : 发行版的 dhcptags 文件中添加了 DHCP 选项,则必须将这些选项添加到 /etc/dhcp/inittab 文件中。有关更多信息,请参见DHCP 选项信息


支持使用 DHCP 服务安装 Oracle Solaris : 网络

您可以使用 DHCP 在网络中的特定客户机系统上安装 Oracle Solaris :。只有满足运行 Oracle Solaris : 的硬件要求的基于 sun4u 的系统和 x86 系统才能使用此功能。有关使用 DHCP 在客户机系统引导时针对网络对其进行自动配置的信息,请参见《Oracle Solaris 10 9/10 安装指南:基于网络的安装》中的第 2  章 “预配置系统配置信息(任务)”

DHCP 还支持通过广域网 (wide area network, WAN) 使用 HTTP 从服务器远程引导和安装的 Oracle Solaris : 客户机系统。这种远程引导和安装的方法称为 WAN Boot 安装方法。使用 WAN Boot,可以通过大型的公共网络(其网络基础结构可能不受信任)将 Oracle Solaris : 安装在基于 SPARC 的系统上。您可以使用带有安全功能的 WAN Boot 来保护数据的保密性和安装映像的完整性。

在使用 DHCP 并借助 WAN Boot 来远程引导和安装客户机系统之前,必须将 DHCP 服务器配置为向客户机提供以下信息:

有关配置 DHCP 服务器以提供此信息的详细信息,请参见《Oracle Solaris 10 9/10 安装指南:基于网络的安装》中的第 2  章 “预配置系统配置信息(任务)”。有关使用 DHCP 服务器跨 WAN 引导和安装客户机系统的信息,请参见《Oracle Solaris 10 9/10 安装指南:基于网络的安装》中的第 10  章 “WAN Boot(概述)”

有关支持无盘客户机的信息,请参见支持远程引导和无盘引导客户机(任务列表)

支持远程引导和无盘引导客户机(任务列表)

Oracle Solaris : DHCP 服务可以支持从其他计算机(OS 服务器)远程挂载操作系统文件的 Oracle Solaris : 客户机系统。此类客户机通常称为无盘客户机。可以将无盘客户机视为持久性远程引导客户机。每次引导无盘客户机时,此客户机必须获取承载客户机操作系统文件的服务器的名称和 IP 地址。然后,无盘客户机便可通过这些文件进行远程引导。

每台无盘客户机都在 OS 服务器上拥有自己的根分区,其共享名称为客户机主机名。DHCP 服务器必须始终将相同的 IP 地址返回到无盘客户机。必须将此地址映射到名称服务(例如 DNS)中的同一主机名。当无盘客户机收到相同的 IP 地址时,此客户机便会使用相同的主机名,并可访问 OS 服务器上自己的根分区。

除了提供 IP 地址和主机名之外,DHCP 服务器还可以提供无盘客户机操作系统文件的位置。但是,您必须创建选项和宏才能在 DHCP 消息包中传递信息。

以下任务列表列出了支持无盘客户机或任何其他持久性远程引导客户机所需的任务。此任务列表还提供了指向帮助您执行这些任务的过程的链接。

任务 

说明 

参考 

在 Oracle Solaris : 服务器上设置 OS 服务。 

使用 smosservice 命令为客户机创建操作系统文件。

《系统管理指南:基本管理》中的第 7  章 “管理无盘客户机(任务)”

另请参见 smosservice(1M) 手册页。

设置 DHCP 服务以支持网络引导客户机。 

使用 DHCP 管理程序或 dhtadm 命令创建新的“供应商”选项和宏,DHCP 服务器可以使用这些选项和宏将引导信息传递到客户机。

如果您已为网络安装客户机创建了选项,则只需为无盘客户机的供应商客户机类型创建宏。 

《Oracle Solaris 10 9/10 安装指南:基于网络的安装》中的第 2  章 “预配置系统配置信息(任务)”

为无盘客户机指定保留的 IP 地址。 

针对无盘客户机,使用 DHCP 管理程序将地址标记为保留,或者使用 pntadm 命令将地址标记为 MANUAL

为 DHCP 客户机指定保留的 IP 地址

设置无盘客户机以使用 OS 服务。 

使用 smdiskless 命令在 OS 服务器上为每台客户机添加操作系统支持。为每台客户机指定保留的 IP 地址。

《系统管理指南:基本管理》中的第 7  章 “管理无盘客户机(任务)”

另请参见 smdiskless(1M) 手册页。

设置 DHCP 客户机为仅接收信息(任务列表)

在某些网络中,您可能希望 DHCP 服务仅为客户机提供配置信息。需要信息而不是租用期信息的客户机系统可以使用 DHCP 客户机发出 INFORM 消息。INFORM 消息要求 DHCP 服务器将适当的配置信息发送到客户机。

您可以将 Oracle Solaris : DHCP 服务器设置为支持仅需要信息的客户机。您需要创建与承载客户机的网络相对应的空网络表。此表必须存在,这样才能使 DHCP 服务器可以对此网络中的客户机做出响应。

以下任务列表列出了支持仅信息客户机所需的任务。此任务列表还包括指向帮助您执行这些任务的过程的链接。

任务 

说明 

参考 

创建空的网络表。 

使用 DHCP 管理程序或 pntadm 命令为仅需要信息的客户机网络创建网络表。

添加 DHCP 网络

创建宏以包含客户机所需的信息。 

使用 DHCP 管理程序或 dhtadm 命令创建宏,以便将所需的信息传递到客户机。

创建 DHCP 宏

使 DHCP 客户机发出 INFORM 消息。

使用 ifconfig int dhcp inform 命令使 DHCP 客户机发出 INFORM 消息。

DHCP 客户机启动

用于 DHCP 客户机的 ifconfig 命令选项

ifconfig(1M) 手册页

转换为新的 DHCP 数据存储

Oracle Solaris : DHCP 提供了一个实用程序,可以将 DHCP 配置数据从一个数据存储转换为另一个数据存储。可能存在几种要转换为新的数据存储的原因。例如,您可能具有多台 DHCP 客户机,从而需要 DHCP 服务具备更高的性能或容量。您还可能希望在多台服务器间共享 DHCP 服务器功能。有关每种数据存储类型的相对优缺点的比较,请参见选择 DHCP 数据存储


注 –

如果您要从 Solaris 8 7/01 发行版之前的 Oracle Solaris : 发行版进行升级,则应当阅读此说明。

当您在安装 Oracle Solaris : 之后运行任何 Oracle Solaris : DHCP 工具时,系统便会提示您转换为新的数据存储。需要进行转换的原因是存储在 Solaris 8 7/01 发行版中的文件和 NIS+ 内的数据格式发生了更改。如果没有转换为新的数据存储,则 DHCP 服务器会继续读取旧的数据表。但是,此服务器只能延长现有客户机的租用期。您无法注册新的 DHCP 客户机或者针对旧的数据表使用 DHCP 管理工具。


对于从 Sun 提供的数据存储转换为第三方数据存储的站点,转换实用程序也非常有用。转换实用程序会在现有数据存储中查找项,并将包含相同数据的新项添加到新的数据存储中。对于每个数据存储,可以在单独的模块中实现数据存储访问。使用这种模块化方法,转换实用程序可以将 DHCP 数据从任意一种数据存储格式转换为其他任何数据存储格式。每个数据存储必须具有 DHCP 服务可以使用的模块。有关如何编写模块以支持第三方数据存储的更多信息,请参见《Solaris DHCP Service Developer’s Guide》

通过“数据存储转换”向导使用 DHCP 管理程序,或者使用 dhcpconfig -C 命令,便可实现数据存储转换。

下图显示了“数据存储转换”向导的初始对话框。

图 15–19 DHCP 管理程序中的“数据存储转换”向导对话框

此对话框列出了转换为新数据存储执行的步骤,同时还显示了新数据存储选项,以及向前、向后、“取消”和“帮助”按钮。

在开始转换之前,您必须指定是否保存旧数据存储的表(dhcptab 表和网络表)。然后,转换实用程序便会停止 DHCP 服务器,转换数据存储,并在成功完成转换之后重新启动此服务器。如果您没有指定保存旧表,则此实用程序在确定转换成功之后便会删除这些表。转换过程可能会相当耗时。转换将在后台运行,通过指示器显示其进度。

Procedure如何转换 DHCP 数据存储(DHCP 管理程序)

  1. 在 DHCP 管理程序中,从“服务”菜单中选择“转换数据存储”。

    有关 DHCP 管理程序的信息,请参见如何启动和停止 DHCP 管理程序

    将打开“数据存储转换”向导。

  2. 回答向导的提示。

    如果您在提供所需的信息时遇到问题,请单击“帮助”以查看有关每个对话框的详细信息。

  3. 查看您的选择,然后单击“完成”以转换数据存储。

    DHCP 服务器将在转换完成之后重新启动。此服务器会立即使用新数据存储。

Procedure如何转换 DHCP 数据存储 (dhcpconfig -C)

  1. 成为超级用户、承担指定给 DHCP 管理配置文件的角色或者使用指定给 DHCP 管理配置文件的用户名。

    有关 DHCP 管理配置文件的更多信息,请参见设置用户访问 DHCP 命令的权限

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 通过键入如下格式的命令来转换数据存储:


    # /usr/sbin/dhcpconfig -C -r resource -p path
    
    resource

    是新数据存储类型,例如 SUNWbinfiles

    path

    是数据的路径,例如 /var/dhcp

    请注意,如果您要在转换之后保留旧数据存储中的原始数据,请指定 -k 选项。例如,要将数据存储转换为 SUNWbinfiles 并保存旧数据存储,请键入:


    # /usr/sbin/dhcpconfig -C -r SUNWbinfiles -p /var/dhcp -k

    有关 dhcpconfig 实用程序的更多信息,请参见 dhcpconfig(1M) 手册页。

在 DHCP 服务器之间移动配置数据(任务列表)

使用 DHCP 管理程序和 dhcpconfig 实用程序,可以在 Oracle Solaris : DHCP 服务器之间移动部分或全部 DHCP 配置数据。您可以移动整个网络以及所有与网络关联的 IP 地址、宏和选项。或者,您可以选择特定的 IP 地址、宏和选项进行移动。您还可以复制宏和选项,而无需从第一台服务器中删除这些宏和选项。

如果您要执行以下任务之一,则可能需要移动数据:

以下任务列表提供了移动 DHCP 配置数据时必须执行的过程。此列表包括指向用于执行这些任务的过程的链接。

任务 

说明 

参考 

1. 从第一台服务器中导出数据。 

选择要移动到其他服务器的数据,并为导出数据创建文件。 

如何从 DHCP 服务器中导出数据(DHCP 管理程序)

如何从 DHCP 服务器中导出数据 (dhcpconfig -X)

2. 将数据导入第二台服务器。 

将导出数据复制到其他 DHCP 服务器的数据存储。 

如何在 DHCP 服务器上导入数据(DHCP 管理程序)

如何在 DHCP 服务器上导入数据 (dhcpconfig -I)

3. 针对新的服务器环境修改导入的数据。 

将特定于服务器的配置数据更改为与新服务器的信息相匹配。 

如何修改导入的 DHCP 数据(DHCP 管理程序)

如何修改导入的 DHCP 数据(pntadmdhtadm

在 DHCP 管理程序中,您可以使用“导出数据”向导和“导入数据”向导在服务器之间移动数据。然后可在“宏”选项卡中修改宏。以下两个图显示了这两个向导的初始对话框。

图 15–20 DHCP 管理程序中的“导出数据”向导对话框

此对话框列出了将数据导出到文件中执行的步骤,同时还显示了两个网络列表,标题分别为“请勿导出”和“导出”。在两个列表之间显示了箭头按钮。

图 15–21 DHCP 管理程序中的“导入数据”向导对话框

此对话框列出了从文件中导入数据要执行的步骤,同时还显示了“导入文件”字段和“覆盖现有数据”复选框。

Procedure如何从 DHCP 服务器中导出数据(DHCP 管理程序)

  1. 在要从其中移动或复制数据的服务器上启动 DHCP 管理程序。

    有关 DHCP 管理程序的信息,请参见如何启动和停止 DHCP 管理程序

  2. 从“服务”菜单中选择“导出数据”。

    将打开“导出数据”向导,如图 15–20 中所示。

  3. 回答向导的提示。

    如果遇到问题,请单击“帮助”以获取有关提示的详细信息。

  4. 将导出文件移动到必须导入文件的 DHCP 服务器可访问的文件系统中。

另请参见

导入数据,如如何在 DHCP 服务器上导入数据(DHCP 管理程序)中所述。

Procedure如何从 DHCP 服务器中导出数据 (dhcpconfig -X)

  1. 登录到要从其中移动或复制数据的服务器。

  2. 成为超级用户、承担指定给 DHCP 管理配置文件的角色或者使用指定给 DHCP 管理配置文件的用户名。

    有关 DHCP 管理配置文件的更多信息,请参见设置用户访问 DHCP 命令的权限

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  3. 导出数据。

    您可以导出所有的 DHCP 数据,也可以导出特定的数据部分。

    • 要导出特定的地址、宏和选项,请键入采用如下格式的命令:


      # dhcpconfig -X filename -a network-addresses -m macros -o options
      

      filename 是要用于存储压缩的导出数据的全路径名。您可以指定逗号分隔列表中的特定网络地址、DHCP 宏和 DHCP 选项。以下示例显示如何导出特定的网络、宏和选项。

      # dhcpconfig -X /var/dhcp/0dhcp1065_data \ -a 10.63.0.0,10.62.0.0 \ -m 10.63.0.0,10.62.0.0,SUNW.Sun-Blade-100 -o Sterm
      
    • 要导出所有的 DHCP 数据,请键入使用 ALL 关键字的命令。


      # dhcpconfig -X filename -a ALL -m ALL -o ALL
      

      filename 是要用于存储压缩的导出数据的全路径名。可以结合使用关键字 ALL 与命令选项来导出所有的网络地址、宏或选项。以下示例显示如何使用 ALL 关键字。

      # dhcpconfig -X /var/dhcp/dhcp1065_data -a ALL -m ALL -o ALL 
      

    提示 –

    您可以通过不为特定的数据类型指定 dhcpconfig 命令选项来避免导出此数据类型。例如,如果没有指定 -m 选项,则不会导出任何 DHCP 宏。


    有关 dhcpconfig 命令的更多信息,请参见 dhcpconfig(1M) 手册页。

  4. 将导出文件移动到必须导入数据的服务器可访问的位置中。

另请参见

导入数据,如如何在 DHCP 服务器上导入数据 (dhcpconfig -I)中所述。

Procedure如何在 DHCP 服务器上导入数据(DHCP 管理程序)

  1. 在要接收先前从 DHCP 服务器导出的数据的服务器上启动 DHCP 管理程序。

    有关 DHCP 管理程序的信息,请参见如何启动和停止 DHCP 管理程序

  2. 从“服务”菜单中选择“导入数据”。

    将打开“导入数据”向导,如图 15–21 中所示。

  3. 回答向导的提示。

    如果遇到问题,请单击“帮助”以获取有关提示的详细信息。

  4. 如有必要,修改导入数据。

    请参见如何修改导入的 DHCP 数据(DHCP 管理程序)

Procedure如何在 DHCP 服务器上导入数据 (dhcpconfig -I)

  1. 登录到要将数据导入其中的服务器。

  2. 成为超级用户、承担指定给 DHCP 管理配置文件的角色或者使用指定给 DHCP 管理配置文件的用户名。

    有关 DHCP 管理配置文件的更多信息,请参见设置用户访问 DHCP 命令的权限

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  3. 通过键入如下格式的命令来导入数据:


    # dhcpconfig -I filename
    

    filename 是包含导出数据的文件的名称。

  4. 如有必要,修改导入数据。

    请参见如何修改导入的 DHCP 数据(pntadmdhtadm

Procedure如何修改导入的 DHCP 数据(DHCP 管理程序)

  1. 在已将数据导入其中的服务器上启动 DHCP 管理程序。

    有关 DHCP 管理程序的信息,请参见如何启动和停止 DHCP 管理程序

  2. 检查导入数据以了解需要修改的特定于网络的信息。

    例如,如果您移动了网络,则必须打开“地址”选项卡,并在导入网络中更改地址的所属服务器。您还可能需要打开“宏”选项卡,以便在某些宏中为 NIS、NIS+ 或 DNS 指定正确的域名。

  3. 打开“地址”选项卡并选择已导入的网络。

  4. 要选择所有地址,请单击第一个地址,按住 Shift 键,然后单击最后一个地址。

  5. 从“编辑”菜单中选择“属性”。

    将打开“修改多个地址”对话框。

  6. 在“管理服务器”提示符下,选择新服务器名称。

  7. 在“配置宏”提示符下,选择应该用于此网络上所有客户机的宏,然后单击“确定”。

  8. 打开“宏”选项卡。

  9. 使用“查找”按钮查找可能需要修改值的选项。

    “查找”按钮位于窗口的底部。

    DNSdmainDNSservNISservsNIS+servNISdmain 便是几个可能需要在新服务器上修改的选项示例。

  10. 在适当的宏中更改选项。

    有关更改选项的过程,请参见如何修改 DHCP 选项属性(DHCP 管理程序)

Procedure如何修改导入的 DHCP 数据(pntadmdhtadm

  1. 登录到已将数据导入其中的服务器。

  2. 成为超级用户、承担指定给 DHCP 管理配置文件的角色或者使用指定给 DHCP 管理配置文件的用户名。

    有关 DHCP 管理配置文件的更多信息,请参见设置用户访问 DHCP 命令的权限

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  3. 检查网络表以了解需要修改的数据。

    如果您移动了网络,请使用 pntadm -P network-address 命令针对已移动的网络列显出网络表。

  4. 使用 pntadm 命令修改 IP 地址信息。

    您可能需要针对导入地址更改所属服务器和配置宏。例如,要针对地址 10.63.0.2 更改所属服务器 (10.60.3.4) 和宏 (dhcpsrv-1060),请使用以下命令:

    pntadm -M 10.63.0.2 -s 10.60.3.4 -m dhcpsrv-1060 10.60.0.0

    如果具有大量地址,则应创建包含命令的脚本文件以修改每个地址。使用 pntadm -B 命令执行脚本,此脚本以批处理模式运行 pntadm。请参见 pntadm(1M) 手册页。

  5. 检查 dhcptab 宏以了解需要修改值的选项。

    使用 dhtadm -P 命令将整个 dhcptab 表列显到屏幕上。使用 grep 或其他某种工具搜索可能要更改的选项或值。

  6. 如有必要,使用 dhtadm -M 命令修改宏中的选项。

    例如,您可能需要修改某些宏,以便为 NIS、NIS+ 或 DNS 指定正确的域名和服务器。例如,以下命令更改宏 mymacroDNSdmainDNSserv 的值:

    dhtadm -M -m mymacro -e 'DNSserv=dnssrv2:DNSdmain=example.net' -g

第 16 章 配置和管理 DHCP 客户机

本章介绍属于 Oracle Solaris : 的动态主机配置协议 (Dynamic Host Configuration Protocol, DHCP) 客户机。同时还说明客户机的 DHCPv4 和 DHCPv6 协议如何工作,以及您如何可以影响客户机的行为。

协议之一 DHCPv4 长期以来是 Oracle Solaris : 的一部分,通过它 DHCP 服务器可以将配置参数(如 IPv4 网络地址)传递到 IPv4 节点。

通过另一协议 DHCPv6,DHCP 服务器可以将配置参数(如 IPv6 网络地址)传递到 IPv6 节点。DHCPv6 是与“IPv6 无状态地址自动配置”(RFC 2462) 对应的有状态协议。它既可以单独使用,也可以与无状态地址自动配置同时使用,来获取配置参数。

本章包含以下信息:

关于 Oracle Solaris : DHCP 客户机

Oracle Solaris : DHCP 客户机为 dhcpagent 守护进程,是 Oracle Solaris : 的一部分。安装 Oracle Solaris : 时,系统会提示您使用 DHCP 来配置网络接口。如果您为 DHCPv4 指定“是”,则会在安装 Oracle Solaris : 期间在系统上启用该协议。没有专用于 DHCPv6 的安装时选项。但是,有一个与 IPv6 相关的问题。如果启用 IPv6,则在支持 DHCPv6 的本地网络上也将启用 DHCPv6。

无需为了使用 DHCP 而对 Oracle Solaris : 客户机执行其他任何操作。DHCP 服务器配置会确定为使用 DHCP 服务的 DHCP 客户机系统提供的信息。

如果客户机系统已经运行 Oracle Solaris :,但是没有使用 DHCP,则可以将客户机系统重新配置为使用 DHCP。您还可以重新配置 DHCP 客户机系统,以使其停止使用 DHCP 而使用您提供的静态网络信息。有关更多信息,请参见启用和禁用 Oracle Solaris : DHCP 客户机

DHCPv6 服务器

Sun Microsystems 在 Oracle Solaris : 中未提供 DHCPv6 服务器。由第三方提供的服务器与 Sun 的 DHCPv6 兼容;如果网络中存在 DHCPv6 服务器,则 Sun 的 DHCPv6 客户机将使用它。

有关 Sun DHCPv4 服务器的信息,请参见Oracle Solaris : DHCP 服务器

DHCPv4 和 DHCPv6 之间的差异

DHCPv4 和 DHCPv6 之间的两个主要差异如下:

管理模型

DHCPv4 需要显式客户机配置。必须设置 DHCPv4 系统以便在需要时进行寻址,这通常是在初始系统安装期间完成或通过使用 ifconfig(1M) 选项动态完成。

DHCPv6 不需要显式客户机配置。相反,使用 DHCP 是网络的特性,并且使用 DHCP 的信号在来自本地路由器的路由器通告消息中传送。DHCP 客户机根据需要自动创建和销毁逻辑接口。

DHCPv6 机制与现有的 IPv6 无状态(自动)地址配置在管理方面非常类似。对于无状态地址配置,可以在本地路由器上设置一个标志以指明:如果有一组给定的前缀,每个客户机都应使用通告前缀以及本地接口标记或随机数独立地自动配置一个地址。对于 DHCPv6,需要相同的前缀,但地址是通过 DHCPv6 服务器而不是“随机”指定来获取和管理的。

MAC 地址和客户机 ID

为了方便指定地址,DHCPv4 使用 MAC 地址和可选的客户机 ID 来标识客户机。每次同一客户机到达网络时,它都会获取同一地址(如果可能)。

DHCPv6 使用基本相同的方案,但是它必须使用客户机 ID,并强制它采用特定结构。DHCPv6 中的客户机 ID 由以下两部分组成: DHCP 唯一标识符 (DHCP Unique Identifier, DUID) 和身份关联标识符 (Identity Association Identifier, IAID)。DUID 标识客户机系统(而不是如 DHCPv4 中那样仅标识接口),而 IAID 标识该系统上的接口。

如 RFC 3315 中所述,身份关联是服务器和客户机用来标识、分组和管理一组相关 IPv6 地址的方法。客户机必须将至少一个不同 IA 与其每个网络接口关联,然后使用指定的 IA 从服务器获取该接口的配置信息。有关 IA 的其他信息,请参见下一节“协议详细信息”。

DUID+IAID 也可以用于 DHCPv4。可以明确地将它们串联在一起,以便它们可以用作客户机 ID。由于兼容性原因,没有对常规 IPv4 接口执行此操作。但是,对于逻辑接口 ("hme0:1"),如果未配置客户机 ID,则使用 DUID+IAID。

与 IPv4 DHCP 不同,DHCPv6 未提供“客户机名称”选项,因此无法仅基于 DHCPv6 来命名系统。相反,如果需要知道与 DHCPv6 提供的地址相配的 DNS 名称,请使用 DNS 反向解析(通过 getaddrinfo(3SOCKET) 函数的地址到名称查询)查找对应的名称信息。这意味着,如果仅使用 DHCPv6 且希望节点具有特定的名称,则必须在系统上设置 /etc/nodename

协议详细信息

如果使用 DHCPv4,DHCP 服务器会提供要用于已指定地址的子网掩码。如果使用 DHCPv6,子网掩码(也称为“前缀长度”)由路由器通告指定,且不受 DHCP 服务器的控制。

DHCPv4 有一个用于设置系统范围节点名称的主机名选项。DHCPv6 没有这样的选项。

要为 DHCPv6 配置客户机 ID,必须指定 DUID,而不是允许系统自动选择一个。对于守护进程,可以按全局方式执行此操作,也可以基于每个接口来执行。使用以下格式设置全局 DUID(请注意初始点):

.v6.CLIENT_ID=<DUID>

将特定接口设置为使用给定 DUID(并使系统看起来是 DHCPv6 服务器的多个独立客户机):

hme0.v6.CLIENT ID=<DUID>

每种身份关联 (Identity Association, IA) 持有一种类型的地址。例如,临时地址的身份关联 (identity association for temporary addresses, IA_TA) 持有临时地址,而非临时地址的身份关联 (identity association for non-temporary addresses, IA_NA) 持有指定的永久性地址。本指南介绍的 DHCPv6 版本仅提供 IA_NA 关联。

Oracle Solaris : 根据需要仅为每个接口指定一个 IAID,并将 IAID 存储在根文件系统的文件中,以便它在计算机的使用期限内保持不变。

逻辑接口

在 DHCPv4 客户机中,每个逻辑接口都是独立的,而且是一个管理单元。除了第零个逻辑接口(缺省情况下是作为标识符的接口 MAC 地址)外,用户还可以通过在 dhcpagent 配置文件中指定 CLIENT_ID,将特定的逻辑接口配置为运行 DHCP。例如:

hme0:1.CLIENT_ID=orangutan

DHCPv6 以不同的方式工作。与 IPv4 不同,IPv6 接口上的第零个逻辑接口始终是本地链路。在没有其他可用的指定方法(如 DHCP 服务器)时,将使用本地链路自动将 IP 地址指定给 IP 网络中的设备。第零个逻辑接口不能由 DHCP 控制,因此,虽然 DHCPv6 在第零个逻辑接口(也称为“物理”接口)上运行,但是它仅在非零逻辑接口上指定地址。

作为对 DHCPv6 客户机请求的响应,DHCPv6 服务器返回客户机要配置的地址的列表。

选项协商

在 DHCPv6 中存在“选项请求”选项,该选项为服务器提供关于客户机首选查看内容的提示。如果所有的可能选项都是从服务器发送到客户机,则可以发送的信息如此之多,以致于必须在发往客户机的过程中删除其中一些信息。服务器可能会使用该提示从要包括在答复中的选项中进行选择。或者,服务器可能忽略提示,而选择要包括的其他项。例如,在 Oracle Solaris : 上,首选选项可能包括 Oracle Solaris : DNS 地址域或 NIS 地址域,但不大可能包括网络 bios 服务器。

为 DHCPv4 也提供了相同类型的提示,但是未提供特殊的“选项请求”选项。DHCPv4 改用 /etc/default/dhcpagent 中的 PARAM_REQUEST_LIST

配置语法

如果使用 /etc/default/dhcpagent,则配置 DHCPv6 客户机的方式与配置现有 DHCPv4 客户机的方式非常类似。

通过在接口名称(如果有)和要配置的参数之间增加一个 ".v6" 标记。例如,可以按以下所示设置全局 IPv4 选项请求列表:

PARAM_REQUEST_LIST=1,3,6,12,15,28,43

可以按以下所示将单个接口配置为省略主机名选项:

hme0.PARAM_REQUEST_LIST=1,3,6,15,28,43

要为 DHCPv6 设置全局请求列表,请注意前导点:

.v6.PARAM_REQUEST_LIST=23,24

或者,要设置单个接口,请按照以下示例操作:

hme0.v6.PARAM_REQUEST_LIST=21,22,23,24

以下是 DHCPv6 配置的实际 /etc/default/dhcpagent 文件,供您参考:


# The default DHCPv6 parameter request list has preference (7), unicast (12),
# DNS addresses (23), DNS search list (24), NIS addresses (27), and
# NIS domain (29).  This may be changed by altering the following parameter- 
# value pair.  The numbers correspond to the values defined in RFC 3315 and 
# the IANA dhcpv6-parameters registry. 
.v6.PARAM_REQUEST_LIST=7,12,23,24,27,29

DHCP 客户机启动

大多数情况下,在 DHCPv6 客户机启动时您无需执行任何操作。如果需要,in.ndpd 守护进程会自动启动 DHCPv6。您可能需要编辑 /etc/hostname6.$IFNAME 以配置在引导时要为 IPv6 检测的接口。但是,如果安装时在系统上启用了 IPv6,则安装程序已执行此操作。

不过,对于 DHCPv4,如果在 Oracle Solaris : 安装过程中未执行此操作,则必须请求客户机启动。请参见如何启用 Oracle Solaris : DHCP 客户机

dhcpagent 守护进程可获取引导系统时所涉及的其他进程所需的配置信息。因此,系统启动脚本会在引导过程前期启动 dhcpagent 并处于等待状态,直到来自 DHCP 服务器的网络配置信息到达。

虽然缺省设置是运行 DHCPv6,但是可以选择不运行 DHCPv6。DHCPv6 开始运行后,您可以使用 ifconfig 命令停止它。也可以通过修改 /etc/inet/ndpd.conf 文件禁用 DHCPv6,以便在重新引导时它不会启动。

例如,在名为 "hme0" 的接口上立即关闭 DHCPv6。


ex# echo ifdefault StatefulAddrConf false >> /etc/inet/ndpd.conf  
ex# pkill -HUP -x in.ndpd   
ex# ifconfig hme0 inet6 dhcp release

如果存在 /etc/dhcp.interface 文件(例如,Sun Fire 880 系统上的 /etc/dhcp.ce0),则意味着向启动脚本指明要在指定接口上使用 DHCPv4。找到 dhcp.interface 文件后,启动脚本便会启动 dhcpagent

启动之后,dhcpagent 便会处于等待状态,直到收到配置网络接口的指令。启动脚本将发出 ifconfig interface dhcp start 命令,此命令指示 dhcpagent 按照DHCP 的工作原理中所述来启动 DHCPv4。如果这些命令包含在 dhcp.interface 文件中,则会将它们附加到 ifconfigdhcp start 选项后面。有关用于 ifconfig interface dhcp 命令的选项的更多信息,请参见 ifconfig(1M) 手册页。

DHCPv6 通信

与通过手动配置调用的 DHCPv4 不同,DHCPv6 是通过路由器通告 (Router Advertisement, RA) 调用的。根据配置路由器的方式,系统在收到路由器通告消息的接口上自动调用 DHCPv6,并使用 DHCP 获取地址和其他参数,或者系统通过 DHCPv6 仅请求除地址之外的数据(例如 DNS 服务器)。

in.ndpd 守护进程接收路由器通告消息。在系统中为 IPv6 检测的所有接口上,它自动执行此操作。在 in.ndpd 检测到指定 DHCPv6 应该运行的 RA 时,它将调用该 RA。

要阻止 in.ndpd 启动 DHCPv6,可以更改 /etc/inet/ndpd.conf 文件。

使用以下 ifconfig 版本之一,还可以在 DHCPv6 启动后停止它:

ifconfig <interface> inet6 dhcp drop

或者:

ifconfig <interface> inet6 dhcp release

DHCP 客户机协议如何管理网络配置信息

DHCPv4 和 DHCPv6 客户机协议以不同的方式管理网络配置信息。主要差异在于,对于 DHCPv4,协商是针对单个地址和一些与之配套的选项的租用。对于 DHCPv6,协商是针对一批地址和一批选项。

有关 DHCPv4 客户机和服务器之间的交互的背景信息,请参见第 12 章

DHCPv4 客户机如何管理网络配置信息

从 DHCP 服务器获取信息包之后,dhcpagent 便会配置网络接口并初启它。此守护进程在 IP 地址的租用时间内对接口进行控制,并在内部表中维护配置数据。系统启动脚本使用 dhcpinfo 命令从内部表中提取配置选项值。这些值用于配置系统并使其在网络上进行通信。

dhcpagent 守护进程将被动地等待一段时间,通常为租用时间的一半。然后此守护进程从 DHCP 服务器请求延长租用期。如果系统将接口关闭或 IP 地址已更改的信息通知给 dhcpagent,则守护进程不会对接口进行控制,除非 ifconfig 命令指示这样做。如果 dhcpagent 发现接口启动并且 IP 地址没有更改,则它会向服务器发送续订租用的请求。如果无法续订租用,则 dhcpagent 将在租用到期时关闭接口。

dhcpagent 每次执行与租用相关的操作时,该守护进程都会查找名为 /etc/dhcp/eventhook 的可执行文件。如果找到具有此名称的可执行文件,则 dhcpagent 将调用此可执行文件。有关使用可执行事件的更多信息,请参见DHCP 客户机事件脚本

DHCPv6 客户机如何管理网络配置信息

客户机和服务器之间的 DHCPv6 通信以客户机发出要查找服务器的请求消息开始。作为响应,可用于 DHCP 服务的所有服务器都发送通告消息。服务器消息包含多个 IA_NA(Identity Association Non-Temporary Address,身份关联非临时地址)记录,以及服务器可以提供的其他选项(如 DNS 服务器地址)。

通过在其请求消息中设置自己的 IA_NA/IAADDR 记录,客户机可以请求特定地址(而且可以请求多个特定地址)。如果客户机记录了旧地址且它希望服务器提供相同的地址(如果可能),则它通常请求特定的地址。不管客户机如何工作(即使根本未请求地址),服务器都可以为单个 DHCPv6 事务向客户机提供任意数量的地址。

以下是在客户机和服务器之间发生的消息对话。

如果通告消息中的优先级值为 255,则 DHCPv6 客户机立即选择该服务器。如果优先级最高的服务器没有响应,或者无法成功回复请求消息,则客户机会继续查找优先级较低(按顺序)的服务器,直到不再出现通告消息。此时,客户机开始再次发送请求消息。

所选服务器发送包含指定地址和配置参数的回复消息,以响应请求消息。

DHCP 客户机关闭

客户机在关闭时将释放消息发送到将地址指定给该客户机的服务器,以指示该客户机将不再使用一个或多个指定地址。当 DHCPv4 客户机系统正常关闭时,dhcpagent 将当前配置信息写入 /etc/dhcp/interface.dhc 文件,对于 DHCPv6 则写入 /etc/dhcp/interface.dh6 文件。缺省情况下,会保存而不是释放租用,因此 DHCP 服务器不知道 IP 地址未处于活动使用状态,这样在下次引导时客户机就可以轻松地重新获取地址了。此缺省操作相当于执行 ifconfig <interface> dhcp drop 命令。

如果重新引导系统时该文件中的租用仍然有效,则 dhcpagent 将发送要求使用相同 IP 地址和网络配置信息的简短请求。对于 DHCPv4,这是“请求”消息。对于 DHCPv6,则消息为“确认”消息。

如果 DHCP 服务器允许此请求,则 dhcpagent 可以使用它在系统关闭时写入磁盘的信息。如果服务器不允许客户机使用此信息,则 dhcpagent 将启动DHCP 的工作原理中所述的 DHCP 协议序列。因此,客户机将获取新的网络配置信息。

启用和禁用 Oracle Solaris : DHCP 客户机

要在已经运行 Oracle Solaris : 但没有使用 DHCP 的系统上启用 DHCP 客户机,您必须首先取消配置系统。引导系统时,您必须发出某些命令以设置系统并启用 DHCP 客户机。


注 –

在许多部署中,常见做法是使用静态 IP 地址设置基础结构的关键部分,而不是使用 DHCP。确定网络中哪些设备(例如路由器和某些服务器)应该是客户机,哪些设备不应该是客户机,不在本指南讨论范围内。


Procedure如何启用 Oracle Solaris : DHCP 客户机

仅当安装 Oracle Solaris : 期间没有启用 DHCPv4 时,才有必要执行此过程。对于 DHCPv6,从来不需要执行此过程。

  1. 成为客户机系统上的超级用户。

  2. 如果此系统使用预配置而不是交互式配置,请编辑 sysidcfg 文件。将 dhcp 子项添加到 sysidcfg 文件内的 network_interface 关键字中。

    例如,network_interface=hme0 {dhcp}。有关更多信息,请参见 sysidcfg(4) 手册页。

  3. 取消配置系统并关闭系统。


    # sys-unconfig
    

    有关使用此命令删除的配置信息的更多信息,请参见 sys-unconfig(1M) 手册页。

  4. 完成关闭之后重新引导系统。

    如果系统使用预配置,则 sysidcfg 文件中的 dhcp 子项将系统配置为在引导系统时使用 DHCP 客户机。

    如果系统不使用预配置,则重新引导系统时,会提示您提供由 sysidtool 程序给出的系统配置信息。有关更多信息,请参见 sysidtool(1M) 手册页。

  5. 当提示使用 DHCP 来配置网络接口时,指定“是”。

Procedure如何禁用 Oracle Solaris : DHCP 客户机

  1. 成为客户机系统上的超级用户。

  2. 如果使用 sysidcfg 文件预配置了系统,请从 network_interface 关键字中删除 dhcp 子项。

  3. 取消配置系统并关闭系统。


    # sys-unconfig
    

    有关使用此命令删除的配置信息的更多信息,请参见 sys-unconfig(1M) 手册页。

  4. 完成关闭之后重新引导系统。

    如果系统使用预配置,则不会提示您提供配置信息,并且也不会配置 DHCP 客户机。

    如果系统不使用预配置,则重新引导系统时,会提示您提供由 sysidtool 程序给出的系统配置信息。有关更多信息,请参见 sysidtool(1M) 手册页。

  5. 当提示使用 DHCP 来配置网络接口时,指定“否”。

DHCP 客户机管理

在系统正常操作的情况下,不需要对 Oracle Solaris : DHCP 客户机软件进行管理。dhcpagent 守护进程会在引导系统时自动启动,重新协商租用,并在关闭系统时停止。您不应直接手动启动和停止 dhcpagent 守护进程。相反,作为客户机系统上的超级用户,您可以在必要时使用 ifconfig 命令来影响 dhcpagent 对网络接口的管理。

用于 DHCP 客户机的 ifconfig 命令选项

本节汇总了 ifconfig(1M) 手册页中介绍的命令选项。这些命令的 DHCPv4 版本与 DHCPv6 版本之间的唯一区别是 "inet6" 关键字。运行 DHCPv6 时使用 "inet6" 关键字,但是在运行 DHCPv4 时忽略它。

使用 ifconfig 命令可以执行以下操作:

设置 DHCP 客户机配置参数

客户机系统上的 /etc/default/dhcpagent 文件包含 dhcpagent 的可调参数。您可以使用文本编辑器来更改多个影响客户机操作的参数。/etc/default/dhcpagent 文件记录完好,因此,有关更多信息,请参阅此文件和 dhcpagent(1M) 手册页。

/etc/dhcp.interface 文件是另一个设置影响 DHCP 客户机的参数的位置。系统启动脚本将在此文件中设置的参数与 ifconfig 命令一起使用。但是,这仅影响 DHCPv4。没有 DHCPv6 等效项。

缺省情况下,DHCP 客户机配置如下:

对于 DHCPv4

对于 DHCPv4 和 DHCPv6

具有多个网络接口的 DHCP 客户机系统

DHCP 客户机可以同时管理一个系统上的多个不同接口。接口可以是物理接口,也可以是逻辑接口。每个接口都有自己的 IP 地址和租用时间。如果为 DHCP 配置多个网络接口,则客户机会分别发出请求以配置这些接口。客户机为每个接口分别保留了一组网络配置参数。虽然参数是分别存储的,但是某些参数仍具有全局性。全局参数应用于整个系统,而不是应用于特定的网络接口。

主机名、NIS 域名和时区是全局参数的示例。对于每个接口,全局参数通常具有不同的值。但是,只有一个值可以用于与每个系统关联的每个全局参数。为确保对每个全局参数的查询只有一个答案,仅使用主网络接口的参数。对于要视为主接口的接口,您可以在 /etc/dhcp.interface 文件中插入关键字 primary。如果没有使用 primary 关键字,则会将按字母顺序列出的第一个接口视为主接口。

DHCP 客户机针对逻辑接口和物理接口执行同样的租用管理,但对逻辑接口存在以下限制:

DHCPv4 客户机主机名

缺省情况下,Oracle Solaris : DHCPv4 客户机不提供自己的主机名,因为此客户机希望 DHCP 服务器提供主机名。而且 Oracle Solaris : DHCPv4 服务器缺省配置为向 DHCPv4 客户机提供主机名。当您同时使用 Oracle Solaris : DHCPv4 客户机和 Solaris DHCPv4 服务器时,这些缺省设置会正常发挥作用。但是,当您将 Oracle Solaris : DHCPv4 客户机与某些第三方 DHCP 服务器一起使用时,客户机可能不会从服务器接收主机名。如果 Oracle Solaris : DHCP 客户机没有通过 DHCP 接收主机名,则客户机系统会在 /etc/nodename 文件中查找名称来用作主机名。如果此文件为空,则主机名将设置为 unknown

如果 DHCP 服务器在 DHCP Hostname 选项中提供了一个名称,则客户机将使用该主机名,即使 /etc/nodename 文件中放置了其他值也是如此。如果您希望客户机使用特定的主机名,则可以使客户机请求此名称。请参见以下过程。


注 –

以下过程并不适用于所有 DHCP 服务器。虽然在此过程中您要求客户机将特定的主机名发送到 DHCP 服务器并期望返回相同名称,

但是 DHCP 服务器不必考虑此请求,而且许多 DHCP 服务器都不考虑此请求。它们只是返回不同的名称。


Procedure如何使 Oracle Solaris : DHCPv4 客户机请求特定的主机名

  1. 在客户机系统上,以超级用户的身份编辑 /etc/default/dhcpagent 文件。

  2. /etc/default/dhcpagent 文件中查找 REQUEST_HOSTNAME 关键字,并按如下方式修改此关键字:


    REQUEST_HOSTNAME=yes

    如果 REQUEST_HOSTNAME 前面存在注释符号 (#),请删除 #。如果 REQUEST_HOSTNAME 关键字不存在,请插入此关键字。

  3. 在客户机系统上编辑 /etc/hostname. interface 文件以添加以下行:

    inet hostname
    

    hostname 是您希望客户机使用的名称。

  4. 键入以下命令使客户机在重新引导时执行完整的 DHCP 协商:


    # ifconfig interface dhcp release
    # reboot
    

    将删除在客户机上高速缓存的 DHCP 数据。客户机重新启动协议来请求新的配置信息,其中包含新的主机名。DHCP 服务器首先确保网络上的其他系统没有使用此主机名,然后将此主机名指定给客户机。如果配置为可以执行此操作,则 DHCP 服务器便可使用客户机的主机名来更新名称服务。

    如果您随后要更改此主机名,请重复步骤 3步骤 4

DHCP 客户机系统和名称服务

Oracle Solaris : 系统支持以下名称服务:DNS、NIS、NIS+ 和本地文件存储 (/etc/inet/hosts)。每个名称服务都只有在进行某些配置后才可用。还必须相应地设置名称服务转换器配置文件(请参见 nsswitch.conf(4)),以指明要使用的名称服务。

在 DHCP 客户机系统可以使用名称服务之前,您必须将系统配置为此名称服务的客户机。缺省情况下,除非在系统安装过程中另行配置,否则仅使用本地文件。

下表概述了与每个名称服务以及 DHCP 相关的问题。该表中还提供了一些文档链接,这些文档可帮助您针对每个名称服务设置客户机。

表 16–1 DHCP 客户机系统的名称服务客户机设置信息

名称服务  

客户机设置信息 

NIS 

如果您使用 Oracle Solaris : DHCP 将 Oracle Solaris : 网络安装信息发送到客户机系统,则可以使用包含 NISservsNISdmain 选项的配置宏。这些选项将 NIS 服务器的 IP 地址和 NIS 域名传递到客户机。然后客户机便会自动成为 NIS 客户机。

如果 DHCP 客户机系统已在运行 Oracle Solaris :,则当 DHCP 服务器将 NIS 信息发送到 DHCP 客户机时,不会在该系统上自动配置 NIS 客户机。 

如果 DHCP 服务器配置为将 NIS 信息发送到 DHCP 客户机系统,则在客户机上按如下方式使用 dhcpinfo 命令时,您可以看到为客户机提供的值:

# /sbin/dhcpinfo NISdmain

# /sbin/dhcpinfo NISservs


注 –

对于 DHCPv6,在命令中包括 -v6 和不同的协议关键字。

# /sbin/dhcpinfo -v6 NISDomain

# /sbin/dhcpinfo -v6 NISServers


将系统设置为 NIS 客户机时,请使用针对 NIS 域名和 NIS 服务器返回的值。 

您可以使用标准方法为 Oracle Solaris : DHCP 客户机系统设置 NIS 客户机,如《系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)》中的第 5  章 “设置和配置 NIS 服务”所述。


提示 –

您可以编写一个使用 dhcpinfoypinit 的脚本,以便在 DHCP 客户机系统上自动配置 NIS 客户机。


NIS+ 

如果 DHCP 客户机系统的 NIS+ 客户机是使用常规方法设置的,则 DHCP 服务器在不同的时间可能会为客户机提供不同的地址。这就产生了安全性问题,因为 NIS+ 安全性包括作为配置组成部分的 IP 地址。为确保客户机每次都具有相同的地址,请使用非标准方法设置 DHCP 客户机系统的 NIS+ 客户机,此方法在将 DHCP 客户机设置为 NIS+ 客户机中介绍。

如果已经手动为 DHCP 客户机系统指定了 IP 地址,则客户机的地址始终不变。您可以使用标准方法设置 NIS+ 客户机,此方法在《System Administration Guide: Naming and Directory Services (NIS+)》中的“Setting Up NIS+ Client Machines”中介绍。

/etc/inet/hosts

对于要使用 /etc/inet/hosts 作为其名称服务的 DHCP 客户机系统,您必须设置 /etc/inet/hosts 文件。

DHCP 客户机系统的主机名将由 DHCP 工具添加到其 /etc/inet/hosts 文件中。但是,您必须将此主机名手动添加到网络中其他系统的 /etc/inet/hosts 文件中。如果 DHCP 服务器系统使用 /etc/inet/hosts 进行名称解析,则您还必须在系统上手动添加客户机的主机名。

DNS 

如果 DHCP 客户机系统通过 DHCP 接收 DNS 域名,则会自动配置客户机系统的 /etc/resolv.conf 文件。/etc/nsswitch.conf 文件也自动更新,以便将 dns 按搜索顺序附加到 hosts 行中其他名称服务的后面。有关 DNS 的更多信息,请参见《系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)》

将 DHCP 客户机设置为 NIS+ 客户机

您可以在作为 DHCP 客户机的 Oracle Solaris : 系统上使用 NIS+ 名称服务。但是,如果 DHCP 服务器可以在不同的时间提供不同的地址,则这将在某种程度上绕过 NIS+ 的安全增强功能之一,即创建数据加密标准 (Data Encryption Standard, DES) 证书。出于安全考虑,请将 DHCP 服务器配置为始终提供相同地址。当您设置使用 DHCP 的 NIS+ 客户机时,请将此客户机的专有 DES 凭证添加到 NIS+ 服务器中。可以使用多种方法来创建凭证,例如使用 nisclient 脚本或 nisaddcred 命令。

生成 NIS+ 凭证时,要求客户机具有静态主机名以创建和存储这些凭证。如果您要使用 NIS+ 和 DHCP,则必须为 DHCP 客户机的所有主机名创建完全相同的凭证。这样,无论 DHCP 客户机接收何种 IP 地址和关联主机名,此客户机都可以使用相同的 DES 凭证。

以下过程显示如何为所有 DHCP 主机名创建相同的凭证。仅当您知道 DHCP 客户机使用的主机名时,此过程才有效。例如,当 DHCP 服务器生成主机名时,您便会知道客户机可能收到的主机名。

Procedure如何将 Oracle Solaris : DHCP 客户机设置为 NIS+ 客户机

要使 DHCP 客户机系统成为 NIS+ 客户机,该系统必须使用属于 NIS+ 域中其他 NIS+ 客户机系统的凭证。此过程仅为系统生成凭证,而这些凭证仅适用于登录到系统的超级用户。其他登录到 DHCP 客户机系统的用户必须在 NIS+ 服务器中具有自己专有的凭证。这些凭证根据《System Administration Guide: Naming and Directory Services (NIS+) 》中的过程进行创建。

  1. 通过在 NIS+ 服务器上键入以下命令来为客户机创建凭证:


    # nisgrep nisplus-client-name cred.org_dir > /tmp/file
    

    此命令将 NIS+ 客户机的 cred.org_dir 表项写入临时文件中。

  2. 使用 cat 命令查看此临时文件的内容。

    或者,使用文本编辑器。

  3. 复制要用于 DHCP 客户机的凭证。

    您必须复制公钥和私钥,它们是包含以冒号分隔的数字和字母的长字符串。这些凭证将粘贴到下一步发出的命令中。

  4. 通过键入以下命令来为 DHCP 客户机添加凭证:


    # nistbladm -a cname=" dhcp-client-name@nisplus-domain" auth_type=DES \
    auth_name="unix.dhcp-client-name@nisplus-domain" \
    public_data=copied-public-key \ 
    private_data=copied-private-key
    

    对于 copied-public-key,请粘贴您从临时文件中复制的公钥信息。对于 copied-private-key,请粘贴您从临时文件中复制的私钥信息。

  5. 通过在 DHCP 客户机系统上键入以下命令来将文件从 NIS+ 客户机系统远程复制到 DHCP 客户机系统:


    # rcp nisplus-client-name:/var/nis/NIS_COLD_START /var/nis
    # rcp nisplus-client-name:/etc/.rootkey /etc
    # rcp nisplus-client-name:/etc/defaultdomain /etc
    

    如果您收到“权限被拒绝”消息,则说明系统可能没有设置为允许远程复制。在这种情况下,您可以以一般用户的身份将文件复制到中间位置。然后,以超级用户的身份,将这些文件从中间位置复制到 DHCP 客户机系统上的适当位置。

  6. 通过在 DHCP 客户机系统上键入以下命令来为 NIS+ 复制正确的名称服务转换器文件:


    # cp /etc/nsswitch.nisplus /etc/nsswitch.conf
    
  7. 重新引导 DHCP 客户机系统。

    现在 DHCP 客户机系统应该可以使用 NIS+ 服务。


示例 16–1 将 Oracle Solaris : DHCP 客户机系统设置为 NIS+ 客户机

以下示例假设您有一个系统 nisei,此系统是 NIS+ 域 dev.example.net 中的 NIS+ 客户机。您还有一个 DHCP 客户机系统 dhow,并且希望将 dhow 作为 NIS+ 客户机。


(First log in as superuser on the NIS+ server)
# nisgrep nisei cred.org_dir > /tmp/nisei-cred
# cat /tmp/nisei-cred
nisei.dev.example.net.:DES:unix.nisei@dev.example.net:46199279911a84045b8e0
c76822179138173a20edbd8eab4:90f2e2bb6ffe7e3547346dda624ec4c7f0fe1d5f37e21cff63830
c05bc1c724b
# nistbladm -a cname="dhow@dev.example.net." \
auth_type=DES auth_name="unix.dhow@dev.example.net" \
public_data=46199279911a84045b8e0c76822179138173a20edbd8eab4 \
private_data=90f2e2bb6ffe7e3547346dda624ec4c7f0fe1d5f37e21cff63830\
c05bc1c724b
# rlogin dhow
(Log in as superuser on dhow)
# rcp nisei:/var/nis/NIS_COLD_START /var/nis
# rcp nisei:/etc/.rootkey /etc
# rcp nisei:/etc/defaultdomain /etc
# cp /etc/nsswitch.nisplus /etc/nsswitch.conf
# reboot

现在 DHCP 客户机系统 dhow 应该可以使用 NIS+ 服务。



示例 16–2 使用脚本添加凭证

如果您要将大量的 DHCP 客户机系统都设置为 NIS+ 客户机,则可以编写脚本。脚本可以快速将项添加到 cred.org_dir NIS+ 表中。以下示例显示了一个脚本样例。


#! /usr/bin/ksh  
# 
# Copyright (c) by Sun Microsystems, Inc. All rights reserved. 
# 
# Sample script for cloning a credential. Hosts file is already populated  
# with entries of the form dhcp-[0-9][0-9][0-9]. The entry we're cloning 
# is dhcp-001. 
#  
#  
PUBLIC_DATA=6e72878d8dc095a8b5aea951733d6ea91b4ec59e136bd3b3 
PRIVATE_DATA=3a86729b685e2b2320cd7e26d4f1519ee070a60620a93e48a8682c5031058df4
HOST="dhcp-" 
DOMAIN="mydomain.example.com"  
 
for 
i in 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019
do         
     print - ${HOST}${i}         
     #nistbladm -r [cname="${HOST}${i}.${DOMAIN}."]cred.org_dir         
     nistbladm -a cname="${HOST}${i}.${DOMAIN}." \
         auth_type=DES auth_name="unix.${HOST}${i}@${DOMAIN}" \
         public_data=${PUBLIC_DATA} private_data=${PRIVATE_DTA} cred.org_Dir
done  
 
exit 0

DHCP 客户机事件脚本

您可以将 Oracle Solaris : DHCP 客户机设置为运行可执行程序或脚本,这些程序或脚本可执行任何适用于客户机系统的操作。出现特定的 DHCP 租用事件之后,便会自动执行称为事件脚本的程序或脚本。可以使用事件脚本来运行其他命令、程序或者脚本以响应特定的租用事件。您必须提供自己的事件脚本以使用此功能。

dhcpagent 使用以下事件关键字来标识 DHCP 租用事件:

事件关键字

说明

BOUNDBOUND6

将接口配置为用于 DHCP。客户机从 DHCP 服务器接收确认消息 (DHCPv4 ACK) 或 (DHCPv6 Reply),此消息同意租用 IP 地址的请求。成功配置接口之后,便会立即调用事件脚本。

EXTENDEXTEND6

客户机成功地延长了租用期。当客户机从 DHCP 服务器接收续订请求的确认消息之后,便会立即调用事件脚本。

EXPIREEXPIRE6

租用时间结束时租用即到期。对于 DHCPv4,将在从接口中删除租用地址,并将接口标记为关闭之前的瞬间调用事件脚本。对于 DHCPv6,将在从接口中删除最后剩余的租用地址之前调用事件脚本。

DROPDROP6

客户机结束租用,将接口从 DHCP 控制中删除。系统会在将接口从 DHCP 控制中删除之前的瞬间调用事件脚本。

RELEASERELEASE6

客户机放弃 IP 地址。在客户机释放接口上的地址并将 DHCPv4 RELEASE 或 DHCPv6 Release 包发送到 DHCP 服务器之前的瞬间调用事件脚本。

INFORMINFORM6

接口通过 DHCPv4 INFORM 或 DHCPv6 Information-Request 消息从 DHCP 服务器获取新的或更新的配置信息。当 DHCP 客户机从服务器仅获取配置参数而不获取 IP 地址租用时,将出现这些事件。

LOSS6

在租用失效期间,如果仍然存在一个或多个有效租用,则在删除失效地址之前将调用该事件脚本。被删除的那些地址标记有 IFF_DEPRECATED 标志。

如果出现以上任意一种事件,dhcpagent 都会调用以下命令:


/etc/dhcp/eventhook interface event

其中,interface 是使用 DHCP 的接口,而 event 是前面所述的事件关键字之一。例如,当 ce0 接口首次配置为用于 DHCP 时,dhcpagent 会按如下方式调用事件脚本:


/etc/dhcp/eventhook ce0 BOUND

要使用事件脚本功能,您必须执行以下操作:

事件脚本从 dhcpagent 继承其程序环境,并以 root 权限运行。如有必要,脚本可以使用 dhcpinfo 实用程序来获取有关接口的更多信息。有关更多信息,请参见 dhcpinfo(1) 手册页。

dhcpagent 守护进程将等待事件脚本在所有事件上退出。如果事件脚本在 55 秒内没有退出,则 dhcpagent 会向脚本进程发送 SIGTERM 信号。如果又经过 3 秒之后进程仍没有退出,则守护进程会发送 SIGKILL 信号以中止此进程。

dhcpagent(1M) 手册页包含一个事件脚本的示例。

示例 16–3 显示了如何使用 DHCP 事件脚本使 /etc/resolv.conf 文件的内容保持最新。当出现 BOUNDEXTEND 事件时,脚本便会替换域服务器和名称服务器的名称。当出现 EXPIREDROPRELEASE 事件时,该脚本便会从文件中删除域服务器和名称服务器的名称。


注 –

此脚本示例假设 DHCP 是域服务器名称和名称服务器名称的授权源。此脚本还假设 DHCP 控制之下的所有接口都返回相同且最新的信息。以上假设也许并不能反映您系统的具体情况。



示例 16–3 用于更新 /etc/resolv.conf 文件的事件脚本

#!/bin/ksh -p

PATH=/bin:/sbin export PATH
umask 0222

# Refresh the domain and name servers on /etc/resolv.conf

insert ()
{
	dnsservers=`dhcpinfo -i $1 DNSserv`
	if [ -n "$dnsservers" ]; then
		# remove the old domain and name servers
		if [ -f /etc/resolv.conf ]; then
			rm -f /tmp/resolv.conf.$$
			sed -e '/^domain/d' -e '/^nameserver/d' \
			    /etc/resolv.conf > /tmp/resolv.conf.$$
		fi

		# add the new domain
		dnsdomain=`dhcpinfo -i $1 DNSdmain`
		if [ -n "$dnsdomain" ]; then
			echo "domain $dnsdomain" >> /tmp/resolv.conf.$$
		fi

		# add new name servers
		for name in $dnsservers; do
			echo nameserver $name >> /tmp/resolv.conf.$$
		done
		mv -f /tmp/resolv.conf.$$ /etc/resolv.conf
	fi
}

# Remove the domain and name servers from /etc/resolv.conf

remove ()
{
	if [ -f /etc/resolv.conf ]; then
		rm -f /tmp/resolv.conf.$$
		sed -e '/^domain/d' -e '/^nameserver/d' \
		    /etc/resolv.conf > /tmp/resolv.conf.$$
		mv -f /tmp/resolv.conf.$$ /etc/resolv.conf
	fi
}

case $2 in
BOUND | EXTEND)
	insert $1
	exit 0
	;;
EXPIRE | DROP | RELEASE)
	remove
	exit 0
	;;
*)
	exit 0
	;;
esac

第 17 章 对 DHCP 问题进行疑难解答(参考)

本章提供的信息可帮助您解决在配置 DHCP 服务器或客户机时可能遇到的问题,还可帮助您解决配置完成后使用 DHCP 时可能遇到的问题。

本章包含以下信息:

有关配置 DHCP 服务器的信息,请参见第 14 章。有关配置 DHCP 客户机的信息,请参见启用和禁用 Oracle Solaris : DHCP 客户机

对 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

对 DHCP 客户机配置问题进行疑难解答

您可能会遇到以下几类 DHCP 客户机问题:

与 DHCP 服务器通信时出现的问题

本节介绍了将 DHCP 客户机添加到网络时可能会遇到的问题。

启用客户机软件并重新引导系统之后,客户机会尝试访问 DHCP 服务器以获取其网络配置。如果客户机无法访问服务器,则可能会看到如下错误消息:


DHCP or BOOTP server not responding 

    在确定问题之前,必须同时从客户机和服务器收集诊断信息。要收集信息,可以执行以下任务:

  1. 如何在调试模式下运行 DHCP 客户机

  2. 如何在调试模式下运行 DHCP 服务器

  3. 如何使用 snoop 监视 DHCP 网络通信流量

您可以单独执行这些操作,也可以同时执行这些操作。

所收集的信息可以帮助确定是客户机、服务器还是中继代理出现了问题。然后,即可寻找解决方案。

Procedure如何在调试模式下运行 DHCP 客户机

如果客户机不是 Oracle Solaris : DHCP 客户机,请参阅客户机文档,以获取有关如何在调试模式下运行客户机的信息。

如果您拥有 Oracle Solaris : DHCP 客户机,请使用以下步骤。

  1. 以超级用户身份登录 DHCP 客户机系统。

  2. 中止 DHCP 客户机守护进程。


    # pkill -x dhcpagent
    
  3. 在调试模式下重新启动守护进程。


    # /sbin/dhcpagent -d1 -f &
    

    -d 开关可将 DHCP 客户机置于详细级别为 1 的调试模式。-f 开关会导致输出发送到控制台而不是 syslog

  4. 配置接口以启动 DHCP 协商。


    # ifconfig interface dhcp start
    

    使用客户机的网络接口名称(如 ge0)替换 interface

    在调试模式下运行时,客户机守护进程会在执行 DHCP 请求时将消息显示到屏幕上。有关客户机调试模式输出的信息,请参见DHCP 客户机在调试模式下的输出

Procedure如何在调试模式下运行 DHCP 服务器

  1. 以超级用户的身份登录服务器系统。

  2. 临时停止 DHCP 服务器。


    # svcadm disable -t svc:/network/dhcp-server
    

    也可以使用 DHCP 管理程序或 dhcpconfig 停止服务器。

  3. 在调试模式下重新启动守护进程。


    # /usr/lib/inet/in.dhcpd -d -v
    

    您还应该使用在运行守护进程时通常使用的所有 in.dhcpd 命令行选项。例如,如果将守护进程作为 BOOTP 中继代理运行,请在 in.dhcpd -d -v 命令中包括 -r 选项。

    在调试模式下运行时,守护进程会在处理 DHCP 或 BOOTP 请求时将消息显示到屏幕上。有关服务器调试模式输出的信息,请参见DHCP 服务器在调试模式下的输出

Procedure如何使用 snoop 监视 DHCP 网络通信流量

  1. 以超级用户的身份登录 DHCP 服务器系统。

  2. 启动 snoop 以开始跟踪服务器的网络接口间的网络通信流量。


    # /usr/sbin/snoop -d interface -o snoop-output-filename udp port 67 or udp port 68
    

    例如,可以键入以下命令:


    #  /usr/sbin/snoop -d hme0 -o /tmp/snoop.output udp port 67 or udp port 68
    

    snoop 会继续监视接口,直到您获取所需信息之后按 Ctrl-C 组合键停止 snoop

  3. 引导客户机系统,或者在客户机系统上重新启动 dhcpagent

    如何在调试模式下运行 DHCP 客户机介绍了如何重新启动 dhcpagent

  4. 在服务器系统上,使用 snoop 显示包含网络包内容的输出文件:


    # /usr/sbin/snoop -i snoop-output-filename -x0 -v
    

    例如,可以键入以下命令:

    # /usr/sbin/snoop -i /tmp/snoop.output -x0 -v
    
另请参见

有关解释输出的信息,请参见DHCP snoop 输出

DHCP 客户机在调试模式下的输出

以下示例显示了 DHCP 客户机在调试模式下发送 DHCP 请求并从 DHCP 服务器接收配置信息时的标准输出。


示例 17–1 DHCP 客户机在调试模式下的标准输出


/sbin/dhcpagent: debug: set_packet_filter: set filter 0x27fc8 (DHCP filter) 
/sbin/dhcpagent: debug: init_ifs: initted interface hme0 
/sbin/dhcpagent: debug: insert_ifs: hme0: sdumax 1500, optmax 1260, hwtype 1, hwlen 6 
/sbin/dhcpagent: debug: insert_ifs: inserted interface hme0 
/sbin/dhcpagent: debug: register_acknak: registered acknak id 5 
/sbin/dhcpagent: debug: unregister_acknak: unregistered acknak id 5 
/sbin/dhcpagent: debug: set_packet_filter: set filter 0x26018 (ARP reply filter)
/sbin/dhcpagent: info: setting IP netmask on hme0 to 255.255.192.0 
/sbin/dhcpagent: info: setting IP address on hme0 to 10.23.3.233 
/sbin/dhcpagent: info: setting broadcast address on hme0 to 10.23.63.255 
/sbin/dhcpagent: info: added default router 10.23.0.1 on hme0 
/sbin/dhcpagent: debug: set_packet_filter: set filter 0x28054 (blackhole filter) 
/sbin/dhcpagent: debug: configure_if: bound ifsp->if_sock_ip_fd 
/sbin/dhcpagent: info: hme0 acquired lease, expires Tue Aug 10 16:18:33 2006 
/sbin/dhcpagent: info: hme0 begins renewal at Tue Aug 10 15:49:44 2006 
/sbin/dhcpagent: info: hme0 begins rebinding at Tue Aug 10 16:11:03 2006

如果客户机无法访问 DHCP 服务器,则看到的调试模式输出可能会类似于以下示例所显示的输出。


示例 17–2 指明 DHCP 客户机在调试模式下出现问题的输出


/sbin/dhcpagent: debug: set_packet_filter: set filter 0x27fc8 (DHCP filter)
/sbin/dhcpagent: debug: init_ifs: initted interface hme0 
/sbin/dhcpagent: debug: select_best: no valid OFFER/BOOTP reply
/sbin/dhcpagent: debug: select_best: no valid OFFER/BOOTP reply
/sbin/dhcpagent: debug: select_best: no valid OFFER/BOOTP reply
 

如果看到此消息,则表明客户机请求永远无法到达服务器,或者服务器无法将响应发送到客户机。请按照如何使用 snoop 监视 DHCP 网络通信流量中所述,在服务器上运行 snoop,以确定来自客户机的包是否已到达服务器。

DHCP 服务器在调试模式下的输出

守护进程启动时,标准的服务器调试模式输出将显示服务器配置信息,后跟有关每个网络接口的信息。守护进程启动后,调试模式输出显示有关请求该守护进程的信息。示例 17–3 显示了刚刚启动的 DHCP 服务器的调试模式输出。对于使用其他未响应的 DHCP 服务器拥有的地址的客户机,服务器将延长其租用期。


示例 17–3 DHCP 服务器在调试模式下的标准输出


Daemon Version: 3.1  
Maximum relay hops: 4  
Transaction logging to console enabled.  
Run mode is: DHCP Server Mode.  
Datastore: nisplus  
Path: org_dir.dhcp.test..:dhcp.test..:$ 
DHCP offer TTL: 10  
Ethers compatibility enabled.  
BOOTP compatibility enabled.  
ICMP validation timeout: 1000 milliseconds, Attempts: 2.  
Monitor (0005/hme0) started...  
Thread Id: 0005 - Monitoring Interface: hme0 *****  
MTU: 1500      Type: DLPI  
Broadcast: 10.21.255.255 
Netmask: 255.255.0.0  
Address: 10.21.0.2  
Monitor (0006/nf0) started...  
Thread Id: 0006 - Monitoring Interface: nf0 *****  
MTU: 4352      Type: DLPI  
Broadcast: 10.22.255.255  
Netmask: 255.255.0.0  
Address: 10.22.0.1  
Monitor (0007/qfe0) started...  
Thread Id: 0007 - Monitoring Interface: qfe0 *****  
MTU: 1500      Type: DLPI   
Broadcast: 10.23.63.255  
Netmask: 255.255.192.0  
Address: 10.23.0.1  
Read 33 entries from DHCP macro database on Tue Aug 10 15:10:27 2006 
Datagram received on network device: qfe0  
Client: 0800201DBA3A is requesting verification of address owned by 10.21.0.4 
Datagram received on network device: qfe0  
Client: 0800201DBA3A is requesting verification of address owned by 10.21.0.4  
Datagram received on network device: qfe0  
Client: 0800201DBA3A is requesting verification of address owned by 10.21.0.4  
Datagram received on network device: qfe0  
Client: 0800201DBA3A maps to IP: 10.23.3.233  
Unicasting datagram to 10.23.3.233 address.  
Adding ARP entry: 10.23.3.233 == 0800201DBA3A  
DHCP EXTEND 0934312543 0934316143 10.23.3.233 10.21.0.2 
          0800201DBA3A SUNW.Ultra-5_10 0800201DBA3A

示例 17–4 显示了作为 BOOTP 中继代理启动的 DHCP 守护进程的调试模式输出。此代理将客户机的请求中继到 DHCP 服务器,并将服务器的响应中继到客户机。


示例 17–4 BOOTP 中继在调试模式下的标准输出


Relay destination: 10.21.0.4 (blue-servr2)     network: 10.21.0.0  
Daemon Version: 3.1  
Maximum relay hops: 4  
Transaction logging to console enabled.  
Run mode is: Relay Agent Mode.  
Monitor (0005/hme0) started...  
Thread Id: 0005 - Monitoring Interface: hme0 *****  
MTU: 1500      Type: DLPI  
Broadcast: 10.21.255.255  
Netmask: 255.255.0.0  
Address: 10.21.0.2  
Monitor (0006/nf0) started...  
Thread Id: 0006 - Monitoring Interface: nf0 *****  
MTU: 4352      Type: DLPI  
Broadcast: 10.22.255.255  
Netmask: 255.255.0.0  
Address: 10.22.0.1  
Monitor (0007/qfe0) started...  
Thread Id: 0007 - Monitoring Interface: qfe0 *****  
MTU: 1500      Type: DLPI  
Broadcast: 10.23.63.255  
Netmask: 255.255.192.0  
Address: 10.23.0.1  
Relaying request 0800201DBA3A to 10.21.0.4, server port.  
BOOTP RELAY-SRVR 0934297685 0000000000 0.0.0.0 10.21.0.4 0800201DBA3A 
N/A 0800201DBA3A  
Packet received from relay agent: 10.23.0.1  
Relaying reply to client 0800201DBA3A  
Unicasting datagram to 10.23.3.233 address.  
Adding ARP entry: 10.23.3.233 == 0800201DBA3A  
BOOTP RELAY-CLNT 0934297688 0000000000 10.23.0.1 10.23.3.233 0800201DBA3A 
N/A 0800201DBA3A  
Relaying request 0800201DBA3A to 10.21.0.4, server port.  
BOOTP RELAY-SRVR 0934297689 0000000000 0.0.0.0 10.21.0.4 0800201DBA3A 
N/A 0800201DBA3A  
Packet received from relay agent: 10.23.0.1  
Relaying reply to client 0800201DBA3A  
Unicasting datagram to 10.23.3.233 address.  
Adding ARP entry: 10.23.3.233 == 0800201DBA3A 
 

如果 DHCP 存在问题,则调试模式输出可能会显示警告或错误消息。请使用以下 DHCP 服务器错误消息列表来寻找解决方案。


ICMP ECHO reply to OFFER candidate: ip_address disabling

原因:

在 DHCP 服务器向客户机提供 IP 地址之前,它会对此地址执行 ping 操作以检验地址是否正在使用。如果客户机回复,则表明此地址正在使用。

解决方法:

确保配置的地址尚未使用。您可以使用 ping 命令。有关更多信息,请参见 ping(1M) 手册页。


No more IP addresses on network-address network.

原因:

在 DHCP 网络表中没有与客户机网络关联的 IP 地址。

解决方法:

使用 DHCP 管理程序或 pntadm 命令创建更多的 IP 地址。如果 DHCP 守护进程正在监视多个子网,请确保其他地址是客户机所在子网的地址。有关更多信息,请参见将 IP 地址添加到 DHCP 服务


No more IP addresses for network-address network when you are running the DHCP daemon in BOOTP compatibility mode.

原因:

BOOTP 没有使用租用时间,因此 DHCP 服务器查找设置了 BOOTP 标志的空闲地址以将其分配给 BOOTP 客户机。

解决方法:

使用 DHCP 管理程序分配 BOOTP 地址。请参见通过 DHCP 服务支持 BOOTP 客户机(任务列表)


Request to access nonexistent per network database: database-name in datastore: datastore.

原因:

在配置 DHCP 服务器的过程中,未创建子网的 DHCP 网络表。

解决方法:

使用 DHCP 管理程序或 pntadm 命令来创建 DHCP 网络表和新的 IP 地址。请参见添加 DHCP 网络


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

原因:

在配置 DHCP 服务器的过程中,未创建子网的 DHCP 网络表。

解决方法:

使用 DHCP 管理程序或 pntadm 命令来创建 DHCP 网络表和新的 IP 地址。请参见添加 DHCP 网络


Client using non_RFC1048 BOOTP cookie.

原因:

网络中的某个设备正在尝试访问不受支持的 BOOTP 实现。

解决方法:

如果无需配置此设备,则忽略此消息。如果您希望支持此设备,请参见通过 DHCP 服务支持 BOOTP 客户机(任务列表)获取更多信息。

DHCP snoop 输出

snoop 输出中,您应会看到在 DHCP 客户机系统和 DHCP 服务器系统之间交换了包。每个包中指明了各系统的 IP 地址,另外,还包括包路径中的所有路由器或中继代理的 IP 地址。如果两个系统未交换包,则客户机系统可能根本无法访问服务器系统。因此,不会出现太严重的问题。

要评估 snoop 输出,您必须知道预期的行为。例如,必须知道请求是否应通过 BOOTP 中继代理,还必须知道所涉及的系统的 MAC 地址和 IP 地址,以便可以确定这些值是否为期望的值。如果存在多个网络接口,则还必须知道这些网络接口的地址。

以下示例显示了从 blue-servr2 上的 DHCP 服务器发送到 MAC 地址为 8:0:20:8e:f3:7e 的客户机的 DHCP 确认消息的标准 snoop 输出。在此消息中,服务器为客户机指定了 IP 地址 192.168.252.6 和主机名 white-6。此消息还包括多个标准网络选项以及几个用于客户机的供应商特定选项。


示例 17–5 单个包的 snoop 样例输出


ETHER:  ----- Ether Header ----- 
ETHER:   
ETHER:  Packet 26 arrived at 14:43:19.14 
ETHER:  Packet size = 540 bytes 
ETHER:  Destination = 8:0:20:8e:f3:7e, Sun 
ETHER:  Source      = 8:0:20:1e:31:c1, Sun 
ETHER:  Ethertype = 0800 (IP) 
ETHER:  
IP:   ----- IP Header ----- 
IP:    
IP:   Version = 4 
IP:   Header length = 20 bytes 
IP:   Type of service = 0x00 
IP:         xxx. .... = 0 (precedence) 
IP:         ...0 .... = normal delay 
IP:         .... 0... = normal throughput 
IP:         .... .0.. = normal reliability 
IP:   Total length = 526 bytes 
IP:   Identification = 64667 
IP:   Flags = 0x4 IP:         .1.. .... = do not fragment 
IP:         ..0. .... = last fragment 
IP:   Fragment offset = 0 bytes 
IP:   Time to live = 254 seconds/hops 
IP:   Protocol = 17 (UDP) 
IP:   Header checksum = 157a 
IP:   Source address = 10.21.0.4, blue-servr2 
IP:   Destination address = 192.168.252.6, white-6 
IP:   No options 
IP:   UDP:  ----- UDP Header ----- 
UDP:   
UDP:  Source port = 67 
UDP:  Destination port = 68 (BOOTPC) 
UDP:  Length = 506  
UDP:  Checksum = 5D4C  
UDP:  
DHCP: ----- Dynamic Host Configuration Protocol ----- 
DHCP:  
DHCP: Hardware address type (htype) =  1 (Ethernet (10Mb)) 
DHCP: Hardware address length (hlen) = 6 octets 
DHCP: Relay agent hops = 0 
DHCP: Transaction ID = 0x2e210f17 
DHCP: Time since boot = 0 seconds 
DHCP: Flags = 0x0000 
DHCP: Client address (ciaddr) = 0.0.0.0 
DHCP: Your client address (yiaddr) = 192.168.252.6 
DHCP: Next server address (siaddr) = 10.21.0.2 
DHCP: Relay agent address (giaddr) = 0.0.0.0 
DHCP: Client hardware address (chaddr) = 08:00:20:11:E0:1B 
DHCP:  
DHCP: ----- (Options) field options ----- 
DHCP:  
DHCP: Message type = DHCPACK 
DHCP: DHCP Server Identifier = 10.21.0.4 
DHCP: Subnet Mask = 255.255.255.0 
DHCP: Router at = 192.168.252.1 
DHCP: Broadcast Address = 192.168.252.255 
DHCP: NISPLUS Domainname = dhcp.test 
DHCP: IP Address Lease Time = 3600 seconds 
DHCP: UTC Time Offset = -14400 seconds 
DHCP: RFC868 Time Servers at = 10.21.0.4 
DHCP: DNS Domain Name = sem.example.com 
DHCP: DNS Servers at = 10.21.0.1 
DHCP: Client Hostname = white-6 
DHCP: Vendor-specific Options (166 total octets): 
DHCP:   (02) 04 octets  0x8194AE1B (unprintable) 
DHCP:   (03) 08 octets  "pacific" 
DHCP:   (10) 04 octets  0x8194AE1B (unprintable) 
DHCP:   (11) 08 octets  "pacific" 
DHCP:   (15) 05 octets  "xterm" 
DHCP:   (04) 53 octets  "/export/s2/base.s2s/latest/Solaris_8/Tools/Boot" 
DHCP:   (12) 32 octets  "/export/s2/base.s2s/latest" 
DHCP:   (07) 27 octets  "/platform/sun4u/kernel/unix" 
DHCP:   (08) 07 octets  "EST5EDT" 
  0: 0800 208e f37e 0800 201e 31c1 0800 4500    .. .ó~.. .1...E.
 16: 020e fc9b 4000 fe11 157a ac15 0004 c0a8    ....@....z......           
 32: fc06 0043 0044 01fa 5d4c 0201 0600 2e21    ...C.D..]L.....!           
 48: 0f17 0000 0000 0000 0000 c0a8 fc06 ac15    ................           
 64: 0002 0000 0000 0800 2011 e01b 0000 0000    ........ .......           
 80: 0000 0000 0000 0000 0000 0000 0000 0000    ................           
 96: 0000 0000 0000 0000 0000 0000 0000 0000    ................          
112: 0000 0000 0000 0000 0000 0000 0000 0000    ................          
128: 0000 0000 0000 0000 0000 0000 0000 0000    ................          
144: 0000 0000 0000 0000 0000 0000 0000 0000    ................          
160: 0000 0000 0000 0000 0000 0000 0000 0000    ................          
176: 0000 0000 0000 0000 0000 0000 0000 0000    ................          
192: 0000 0000 0000 0000 0000 0000 0000 0000    ................          
208: 0000 0000 0000 0000 0000 0000 0000 0000    ................          
224: 0000 0000 0000 0000 0000 0000 0000 0000    ................          
240: 0000 0000 0000 0000 0000 0000 0000 0000    ................          
256: 0000 0000 0000 0000 0000 0000 0000 0000    ................          
272: 0000 0000 0000 6382 5363 3501 0536 04ac    ......c.Sc5..6..          
288: 1500 0401 04ff ffff 0003 04c0 a8fc 011c    ................          
304: 04c0 a8fc ff40 0964 6863 702e 7465 7374    .....@.dhcp.test          
320: 3304 0000 0e10 0204 ffff c7c0 0404 ac15    3...............          
336: 0004 0f10 736e 742e 6561 7374 2e73 756e    ....sem.example.          
352: 2e63 6f6d 0604 ac15 0001 0c07 7768 6974    com.........whit          
368: 652d 362b a602 0481 94ae 1b03 0861 746c    e-6+.........pac          
384: 616e 7469 630a 0481 94ae 1b0b 0861 746c    ific.........pac          
400: 616e 7469 630f 0578 7465 726d 0435 2f65    ific...xterm.5/e          
416: 7870 6f72 742f 7332 382f 6261 7365 2e73    xport/sx2/bcvf.s          
432: 3238 735f 776f 732f 6c61 7465 7374 2f53    2xs_btf/latest/S          
448: 6f6c 6172 6973 5f38 2f54 6f6f 6c73 2f42    olaris_x/Tools/B          
464: 6f6f 740c 202f 6578 706f 7274 2f73 3238    oot. /export/s2x          
480: 2f62 6173 652e 7332 3873 5f77 6f73 2f6c    /bcvf.s2xs_btf/l         
496: 6174 6573 7407 1b2f 706c 6174 666f 726d    atest../platform          
512: 2f73 756e 346d 2f6b 6572 6e65 6c2f 756e    /sun4u/kernel/un          
528: 6978 0807 4553 5435 4544 54ff              ix..EST5EDT.  

DHCP 配置信息不准确时出现的问题

如果 DHCP 客户机在其网络配置信息中收到不准确的信息,请查看 DHCP 服务器数据。您必须检查 DHCP 服务器为此客户机处理的宏的选项值。不准确的信息示例可能包括错误的 NIS 域名或路由器 IP 地址。

使用以下一般原则可帮助确定不准确信息的来源:

DHCP 客户机提供的主机名存在的问题

本节介绍了 DHCP 客户机提供要向 DNS 注册的自身主机名时,可能会遇到的各种问题。

DHCP 客户机无法请求主机名

如果客户机不是 Oracle Solaris : DHCP 客户机,请参阅客户机文档以确定如何将客户机配置为请求主机名。有关 Oracle Solaris : DHCP 客户机,请参见如何使 Oracle Solaris : DHCPv4 客户机请求特定的主机名

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 服务器发出响应的秒数。

第 18 章 DHCP 命令和文件(参考)

本章介绍了 DHCP 命令和 DHCP 文件之间的关系,但并未介绍如何使用这些命令。

本章包含以下信息:

DHCP 命令

下表列出了可用于在网络中管理 DHCP 的命令。

表 18–1 用于 DHCP 的命令

命令 

说明 

手册页 

dhtadm

用于对 dhcptab 中的选项和宏进行更改。此命令最适用于在创建的脚本中自动更改 DHCP 信息。使用带有 -P 选项的 dhtadm,并通过 grep 命令传输输出,可以在 dhcptab 表中快速搜索特定的选项值。

dhtadm(1M)

pntadm

用于更改将客户机 ID 映射到 IP 地址的 DHCP 网络表,还可选择将配置信息与 IP 地址进行关联。

pntadm(1M)

dhcpconfig

用于配置和取消配置 DHCP 服务器及 BOOTP 中继代理。另外,还可用于转换为另一种数据存储格式,以及导入和导出 DHCP 配置数据。

dhcpconfig(1M)

in.dhcpd

DHCP 服务器守护进程。该守护进程在启动系统时启动。请勿直接启动服务器守护进程。使用 DHCP 管理程序、svcadm 命令或 dhcpconfig 可启动和停止该守护进程。仅当以调试模式运行服务器来解决问题时,才可以直接调用该守护进程。

in.dhcpd(1M)

dhcpmgr

DHCP 管理程序,一种用于配置和管理 DHCP 服务的图形用户界面 (graphical user interface, GUI) 工具。推荐将 DHCP 管理程序作为 Oracle Solaris : DHCP 管理工具。

dhcpmgr(1M)

ifconfig

在系统引导时用于为网络接口指定 IP 地址或配置网络接口参数,或者同时执行这两种操作。在 Oracle Solaris : DHCP 客户机上,ifconfig 可启动 DHCP 以获取配置网络接口所需的参数(包括 IP 地址)。

ifconfig(1M)

dhcpinfo

由 Oracle Solaris : 客户机系统的系统启动脚本用于从 DHCP 客户机守护进程 dhcpagent 中获取信息(如主机名)。您也可以在脚本或命令行中使用 dhcpinfo 来获取指定的参数值。

dhcpinfo(1)

snoop

用于捕获和显示在网络中传送的包的内容。snoop 在解决 DHCP 服务问题时非常有用。

snoop(1M)

dhcpagent

DHCP 客户机守护进程,用于实现 DHCP 协议的客户端。 

dhcpagent(1M)

在脚本中运行 DHCP 命令

dhcpconfigdhtadmpntadm 命令为便于在脚本中使用进行了优化。特别是,pntadm 命令对于在 DHCP 网络表中创建大量 IP 地址项非常有用。以下样例脚本在批处理模式下使用 pntadm 来创建 IP 地址。


示例 18–1 使用 pntadm 命令的 addclient.ksh 脚本

#! /usr/bin/ksh
#
# This script utilizes the pntadm batch facility to add client entries
# to a DHCP network table. It assumes that the user has the rights to
# run pntadm to add entries to DHCP network tables.

#
# Based on the nsswitch setting, query the netmasks table for a netmask.
# Accepts one argument, a dotted IP address.
#
get_netmask()
{
	MTMP=`getent netmasks ${1} | awk '{ print $2 }'`
	if [ ! -z "${MTMP}" ]
	then
		print - ${MTMP}
	fi
}

#
# Based on the network specification, determine whether or not network is 
# subnetted or supernetted.
# Given a dotted IP network number, convert it to the default class
# network.(used to detect subnetting). Requires one argument, the
# network number. (e.g. 10.0.0.0) Echos the default network and default
# mask for success, null if error.
#
get_default_class()
{
	NN01=${1%%.*}
	tmp=${1#*.}
	NN02=${tmp%%.*}
	tmp=${tmp#*.}
	NN03=${tmp%%.*}
	tmp=${tmp#*.}
	NN04=${tmp%%.*}
	RETNET=""
	RETMASK=""

	typeset -i16 ONE=10#${1%%.*}
	typeset -i10 X=$((${ONE}&16#f0))
	if [ ${X} -eq 224 ]
	then
		# Multicast
		typeset -i10 TMP=$((${ONE}&16#f0))
		RETNET="${TMP}.0.0.0"
		RETMASK="240.0.0.0"
	fi
	typeset -i10 X=$((${ONE}&16#80))
	if [ -z "${RETNET}" -a ${X} -eq 0 ]
	then
		# Class A
		RETNET="${NN01}.0.0.0"
		RETMASK="255.0.0.0"
	fi
	typeset -i10 X=$((${ONE}&16#c0))
	if [ -z "${RETNET}" -a ${X} -eq 128 ]
	then
		# Class B
		RETNET="${NN01}.${NN02}.0.0"
		RETMASK="255.255.0.0"
	fi
	typeset -i10 X=$((${ONE}&16#e0))
	if [ -z "${RETNET}" -a ${X} -eq 192 ]
	then
		# Class C
		RETNET="${NN01}.${NN02}.${NN03}.0"
		RETMASK="255.255.255.0"
	fi
	print - ${RETNET} ${RETMASK}
	unset NNO1 NNO2 NNO3 NNO4 RETNET RETMASK X ONE
}

#
# Given a dotted form of an IP address, convert it to its hex equivalent.
#
convert_dotted_to_hex()
{
	typeset -i10 one=${1%%.*}
	typeset -i16 one=${one}
	typeset -Z2 one=${one}
	tmp=${1#*.}

	typeset -i10 two=${tmp%%.*}
	typeset -i16 two=${two}
	typeset -Z2 two=${two}
	tmp=${tmp#*.}

	typeset -i10 three=${tmp%%.*}
	typeset -i16 three=${three}
	typeset -Z2 three=${three}
	tmp=${tmp#*.}

	typeset -i10 four=${tmp%%.*}
	typeset -i16 four=${four}
	typeset -Z2 four=${four}

	 hex=`print - ${one}${two}${three}${four} | sed -e 's/#/0/g'`
	 print - 16#${hex}
	 unset one two three four tmp
}

#
# Generate an IP address given the network address, mask, increment.
# 
get_addr()
{
	typeset -i16 net=`convert_dotted_to_hex ${1}`
	typeset -i16 mask=`convert_dotted_to_hex ${2}`
	typeset -i16 incr=10#${3}

	# Maximum legal value - invert the mask, add to net.
	typeset -i16 mhosts=~${mask}
	typeset -i16 maxnet=${net}+${mhosts}

	# Add the incr value.
	let net=${net}+${incr}

	if [ $((${net} < ${maxnet})) -eq 1 ]
	then
		typeset -i16 a=${net}\&16#ff000000
		typeset -i10 a="${a}>>24"

		typeset -i16 b=${net}\&16#ff0000
		typeset -i10 b="${b}>>16"

		typeset -i16 c=${net}\&16#ff00
		typeset -i10 c="${c}>>8"

		typeset -i10 d=${net}\&16#ff
		print - "${a}.${b}.${c}.${d}"
	fi
	unset net mask incr mhosts maxnet a b c d
}

# Given a network address and client address, return the index.
client_index()
{
	typeset -i NNO1=${1%%.*}
	tmp=${1#*.}
	typeset -i NNO2=${tmp%%.*}
	tmp=${tmp#*.}
	typeset -i NNO3=${tmp%%.*}
	tmp=${tmp#*.}
	typeset -i NNO4=${tmp%%.*}

	typeset -i16 NNF1
	let NNF1=${NNO1}
	typeset -i16 NNF2
	let NNF2=${NNO2}
	typeset -i16 NNF3
	let NNF3=${NNO3}
	typeset -i16 NNF4
	let NNF4=${NNO4}
	typeset +i16 NNF1
	typeset +i16 NNF2
	typeset +i16 NNF3
	typeset +i16 NNF4
	NNF1=${NNF1#16\#}
	NNF2=${NNF2#16\#}
	NNF3=${NNF3#16\#}
	NNF4=${NNF4#16\#}
	if [ ${#NNF1} -eq 1 ]
	then
		NNF1="0${NNF1}"
	fi
	if [ ${#NNF2} -eq 1 ]
	then
		NNF2="0${NNF2}"
	fi
	if [ ${#NNF3} -eq 1 ]
	then
		NNF3="0${NNF3}"
	fi
	if [ ${#NNF4} -eq 1 ]
	then
		NNF4="0${NNF4}"
	fi
	typeset -i16 NN
	let NN=16#${NNF1}${NNF2}${NNF3}${NNF4}
	unset NNF1 NNF2 NNF3 NNF4

	typeset -i NNO1=${2%%.*}
	tmp=${2#*.}
	typeset -i NNO2=${tmp%%.*}
	tmp=${tmp#*.}
	typeset -i NNO3=${tmp%%.*}
	tmp=${tmp#*.}
	typeset -i NNO4=${tmp%%.*}
	typeset -i16 NNF1
	let NNF1=${NNO1}
	typeset -i16 NNF2
	let NNF2=${NNO2}
	typeset -i16 NNF3
	let NNF3=${NNO3}
	typeset -i16 NNF4
	let NNF4=${NNO4}
	typeset +i16 NNF1
	typeset +i16 NNF2
	typeset +i16 NNF3
	typeset +i16 NNF4
	NNF1=${NNF1#16\#}
	NNF2=${NNF2#16\#}
	NNF3=${NNF3#16\#}
	NNF4=${NNF4#16\#}
	if [ ${#NNF1} -eq 1 ]
	then
		NNF1="0${NNF1}"
	fi
	if [ ${#NNF2} -eq 1 ]
	then
		NNF2="0${NNF2}"
	fi
	if [ ${#NNF3} -eq 1 ]
	then
		NNF3="0${NNF3}"
	fi
	if [ ${#NNF4} -eq 1 ]
	then
		NNF4="0${NNF4}"
	fi
	typeset -i16 NC
	let NC=16#${NNF1}${NNF2}${NNF3}${NNF4}
	typeset -i10 ANS
	let ANS=${NC}-${NN}
	print - $ANS
}

#
# Check usage.
#
if [ "$#" != 3 ]
then
	print "This script is used to add client entries to a DHCP network"
	print "table by utilizing the pntadm batch facilty.\n"
	print "usage: $0 network start_ip entries\n"
	print "where: network is the IP address of the network"
        print "       start_ip is the starting IP address \n"
        print "       entries is the number of the entries to add\n"
	print "example: $0 10.148.174.0 10.148.174.1 254\n"
	return
fi

#
# Use input arguments to set script variables.
#
NETWORK=$1
START_IP=$2
typeset -i STRTNUM=`client_index ${NETWORK} ${START_IP}`
let ENDNUM=${STRTNUM}+$3
let ENTRYNUM=${STRTNUM}
BATCHFILE=/tmp/batchfile.$$
MACRO=`uname -n`

#
# Check if mask in netmasks table. First try
# for network address as given, in case VLSM
# is in use.
#
NETMASK=`get_netmask ${NETWORK}`
if [ -z "${NETMASK}" ]
then
	get_default_class ${NETWORK} | read DEFNET DEFMASK
	# use the default.
	if [ "${DEFNET}" != "${NETWORK}" ]
	then
		# likely subnetted/supernetted.
		print - "\n\n###\tWarning\t###\n"
		print - "Network ${NETWORK} is netmasked, but no entry was found  \n
              in the 'netmasks' table; please update the 'netmasks'  \n
              table in the appropriate nameservice before continuing. \n 
              (See /etc/nsswitch.conf.) \n" >&2
		return 1
	else
		# use the default.
		NETMASK="${DEFMASK}"
	fi
fi

#
# Create a batch file.
#
print -n "Creating batch file "
while [ ${ENTRYNUM} -lt ${ENDNUM} ]
do
	if [ $((${ENTRYNUM}-${STRTNUM}))%50 -eq 0 ]
	then
		print -n "."
	fi

	CLIENTIP=`get_addr ${NETWORK} ${NETMASK} ${ENTRYNUM}`
	print "pntadm -A ${CLIENTIP} -m ${MACRO} ${NETWORK}" >> ${BATCHFILE}
	let ENTRYNUM=${ENTRYNUM}+1
done
print " done.\n"

#
# Run pntadm in batch mode and redirect output to a temporary file.
# Progress can be monitored by using the output file.
#
print "Batch processing output redirected to ${BATCHFILE}"
print "Batch processing started."

pntadm -B ${BATCHFILE} -v > /tmp/batch.out 2 >&1

print "Batch processing completed."

DHCP 服务使用的文件

下表列出了与 Oracle Solaris : DHCP 关联的文件。

表 18–2 DHCP 守护进程和命令使用的文件和表

文件名或表名 

说明 

手册页 

dhcptab

DHCP 配置信息表的通称,这些配置信息以选项及指定值的形式进行记录,而这些选项及指定值随后会组合为宏。dhcptab 表的名称及其地址由用于 DHCP 信息的数据存储确定。

dhcptab(4)

DHCP 网络表 

将 IP 地址映射为客户机 ID 和配置选项。DHCP 网络表根据网络的 IP 地址(如 10.21.32.0)来命名。不存在名为 dhcp_network 的文件。DHCP 网络表的名称和地址由用于 DHCP 信息的数据存储确定。

dhcp_network(4)

dhcpsvc.conf

存储 DHCP 守护进程的启动选项以及数据存储信息。此文件决不能手动编辑。使用 dhcpconfig 命令可更改启动选项。

dhcpsvc.conf(4)

nsswitch.conf

指定名称服务数据库的地址以及搜索名称服务以查找各种信息的顺序。配置 DHCP 服务器时,会读取 nsswitch.conf 文件以获取准确的配置信息。此文件位于 /etc 目录中。

nsswitch.conf(4)

resolv.conf

包含用于解析 DNS 查询的信息。在 DHCP 服务器配置过程中,会查看此文件以获取有关 DNS 域和 DNS 服务器的信息。此文件位于 /etc 目录中。

resolv.conf(4)

dhcp.interface

表示将在 dhcp.interface 文件名中指定的客户机网络接口上使用 DHCP。例如,存在名为 dhcp.qe0 的文件表示将在 qe0 接口上使用 DHCP。dhcp.interface 文件可能包含一些命令,这些命令将作为选项传递给用于在客户机上启动 DHCP 的 ifconfig 命令。此文件位于 Oracle Solaris : DHCP 客户机系统上的 /etc 目录中。

没有特定的手册页,请参见 dhcp(5)

interface.dhc

包含从 DHCP 中为给定网络接口获取的配置参数。当删除此接口的 IP 地址租用时,客户机会将当前配置信息高速缓存至 /etc/dhcp/interface.dhc 中。例如,如果在 qe0 接口上使用 DHCP,则 dhcpagent 会将配置信息高速缓存至 /etc/dhcp/qe0.dhc 中。下次在此接口上启动 DHCP 时,如果租用未过期,客户机会请求使用高速缓存的配置。如果 DHCP 服务器拒绝此请求,则客户机会启动标准的 DHCP 租用协商进程。

没有特定的手册页,请参见 dhcpagent(1M)

dhcpagent

设置 dhcpagent 客户机守护进程的参数值。此文件的路径为 /etc/default/dhcpagent。有关参数的信息,请参见 /etc/default/dhcpagent 文件或 dhcpagent(1M) 手册页。

dhcpagent(1M)

DHCP inittab

定义 DHCP 选项代码的各个方面(如数据类型),并指定助记标签。有关此文件语法的更多信息,请参见 dhcp_inittab(4) 手册页。

在客户机上,dhcpinfo 会使用 /etc/dhcp/inittab 文件中的信息来为此信息的读者提供更多有意义的信息。在 DHCP 服务器系统上,DHCP 守护进程和管理工具会使用此文件来获取 DHCP 选项信息。

/etc/dhcp/inittab 文件将替换在先前的发行版中使用的 /etc/dhcp/dhcptags 文件。DHCP 选项信息提供了有关这种替换的更多信息。

dhcp_inittab(4)

DHCP 选项信息

过去,DHCP 选项信息存储在多个位置,包括服务器的 dhcptab 表、客户机的 dhcptags 文件和各种程序的内部表。在 Solaris 8 发行版以及更高发行版中,选项信息合并在 /etc/dhcp/inittab 文件中。有关此文件的详细信息,请参见 dhcp_inittab(4) 手册页。

Oracle Solaris : DHCP 客户机使用 DHCP inittab 文件代替 dhcptags 文件。客户机使用此文件可获取有关在 DHCP 包中收到的选项代码的信息。DHCP 服务器上的 in.dhcpdsnoopdhcpmgr 程序也将使用 inittab 文件。

确定站点是否受到影响

大多数使用 Oracle Solaris : DHCP 的站点不会受到转换为 /etc/dhcp/inittab 文件这一操作的影响。如果满足以下所有条件,则站点将会受到影响:

升级时,升级日志会通知您 dhcptags 文件已经修改,因此应对 DHCP inittab 文件进行更改。

dhcptags inittab 文件之间的差异

inittab 文件比 dhcptags 文件包含更多的信息。inittab 文件使用的语法也不同。

以下是 dhcptags 项的一个样例:

33 StaticRt - IPList Static_Routes

33 为在 DHCP 包中传送的数字代码。StaticRt 为选项名。IPList 表示 StaticRt 的数据类型必须为 IP 地址列表。Static_Routes 是一个描述性更强的名称。

inittab 文件由说明每个选项的单行记录组成。其格式类似于在 dhcptab 中定义符号的格式。下表说明了 inittab 文件的语法。

选项

说明

option-name

选项名。选项名在其选项类别中必须是唯一的,不可与标准选项、站点选项和供应商选项等类别中的其他选项重名。例如,不能有两个同名的站点选项,不能创建与标准选项名称相同的站点选项。

category

标识选项所属的名称空间。必须为以下名称空间之一: 标准、站点、供应商、字段或内部。

code

当选项在网络中发送时标识此选项。大多数情况下,代码唯一标识选项,与类别无关。但是,在涉及内部类别(如字段选项或内部选项)的情况下,代码可能会用于其他目的。代码可能不是全局唯一的。代码在选项类别中应是唯一的,并且不会与标准字段和站点字段中的代码重名。

type

说明与此选项关联的数据。有效类型为 IP、ASCII、Octet、Boolean、Unumber8、Unumber16、Unumber32、Unumber64、Snumber8、Snumber16、Snumber32 和 Snumber64 等。对数字来说,首字母 U 或 S 表示该数字为无符号或带符号的数字。末尾数字指明数字中的二进制位数。例如,Unumber8 即为无符号的 8 位二进制数字。类型不区分大小写。

granularity

说明组成此选项的完整值的数据单元的数量。

maximum

说明此选项允许使用的完整值的数量。0 表示一个无穷大的数字。

consumers

说明可使用此信息的程序。使用者应设置为 sdmi,其中:

s

snoop

d

in.dhcpd

m

dhcpmgr

i

dhcpinfo

以下是 inittab 项的一个样例:

StaticRt - Standard, 33, IP, 2, 0, sdmi

该项介绍了名为 StaticRt 的选项。此选项属于标准类别,选项代码为 33。由于类型为 IP、粒度为 2、最大值为无穷大 (0),因此预期的数据是一个可能为无穷大的 IP 地址对数量。此选项的使用者为 sdmisnoopin.dhcpddhcpmgrdhcpinfo

dhcptags 项转换为 inittab

如果之前向 dhcptags 文件中添加了项,则必须向新的 inittab 文件中添加对应的项,这样才能继续使用添加到站点中的选项。以下示例说明如何以 inittab 格式表示 dhcptags 项的一个样例。

假定已经为连接到网络的传真机添加了以下 dhcptags 项:

128 FaxMchn - IP Fax_Machine

代码 128 意味着此选项一定属于站点类别。选项名为 FaxMchn,数据类型为 IP

对应的 inittab 项可能是:

FaxMchn SITE, 128, IP, 1, 1, sdmi

粒度 1 和最大值 1 表示此选项应有一个 IP 地址。