本章介绍动态主机配置协议 (Dynamic Host Configuration Protocol, DHCP) 并解释了该协议的基础概念,同时也说明了在网络中使用 DHCP 的优点。
本章包含以下信息:
使用 DHCP 协议,可以使 TCP/IP 网络中的主机系统在引导时针对网络自动进行配置。DHCP 使用客户机/服务器机制。服务器为客户机存储和管理配置信息,并根据客户机的请求提供此信息。该信息中包含客户机的 IP 地址,以及有关客户机可使用的网络服务的信息。
DHCP 由早期的 BOOTP 协议发展而来,后者设计用于在 TCP/IP 网络上引导系统。对于客户机和服务器之间传送的消息,DHCP 使用与 BOOTP 相同的格式。然而,与 BOOTP 消息不同,DHCP 消息可包含客户机的网络配置数据。
DHCP 的主要优点是它能够通过租用来管理 IP 地址的指定。可通过租用回收未使用的 IP 地址。这些回收的 IP 地址可以重新指定给其他客户机。使用 DHCP 的站点所用的 IP 地址池小于为所有客户机指定永久性 IP 地址时所需的 IP 地址池。
在设置 TCP/IP 网络以及进行该网络的日常管理时,某些任务很耗时,而 DHCP 可以帮助您处理这些任务。请注意,Oracle Solaris : DHCP 只能使用 IPv4。
Oracle Solaris : DHCP 拥有下列优点:
IP 地址管理-DHCP 的一个主要优点是更易于管理 IP 地址。在不使用 DHCP 的网络中,您必须手动指定 IP 地址。您必须小心地为每台客户机指定唯一的 IP 地址并单独配置每台客户机。如果客户机移动到其他网络,您必须为该客户机执行手动修改。启用 DHCP 后,DHCP 服务器便会管理和指定 IP 地址,而无需管理员介入。客户机无需重新手动配置便可移动到其他子网,因为它们从 DHCP 服务器中获取了适用于新网络的新的客户机信息。
网络客户机集中配置-您可以为某些客户机或某些类型的客户机创建定制的配置。配置信息存储在 DHCP 数据存储中的某个位置。您无需登录到客户机更改其配置。可以仅通过更改数据存储中的信息来更改多个客户机的配置。
支持 BOOTP 客户机-BOOTP 服务器和 DHCP 服务器都可以侦听并响应来自客户机的广播。除了响应 DHCP 客户机之外,DHCP 服务器还可以响应来自 BOOTP 客户机的请求。BOOTP 客户机从服务器接收引导所需的 IP 地址和信息。
支持本地客户机和远程客户机-BOOTP 提供了从一个网络到另一个网络的消息中继。DHCP 通过数种方法利用 BOOTP 的中继功能。大多数网络路由器可以配置为充当 BOOTP 中继代理角色,用于将 BOOTP 请求传送到不在客户机网络上的服务器。DHCP 请求也可以通过相同的方式转发,因为对于路由器而言,无法区别 DHCP 请求与 BOOTP 请求。当支持 BOOTP 中继的路由器不可用时,Oracle Solaris : DHCP 服务器也可以配置为充当 BOOTP 中继代理的角色。
网络引导-客户机可以使用 DHCP 而不是 RARP(Reverse Address Resolution Protocol,反向地址解析协议)和 bootparams 文件来获取从网络上的服务器进行引导所需的信息。DHCP 服务器可以为客户机提供运行所需的所有信息,包括 IP 地址、引导服务器和网络配置等信息。由于 DHCP 请求可以在子网间转发,因此,在使用 DHCP 网络引导时,可以减少在网络中部署的引导服务器的数量。RARP 引导要求每个子网都有一台引导服务器。
大型网络支持-拥有数百万台 DHCP 客户机的网络可以使用 Oracle Solaris : DHCP。DHCP 服务器使用多线程来同时处理大量客户机请求。该服务器也支持为处理大量数据而优化的数据存储。数据存储访问由单独的处理模块来处理。借助于这种数据存储方法,您可以添加对任何所需的数据库的支持。
您必须先安装和配置 DHCP 服务器。在配置过程中,您需要指定客户机在网络上运行时所需的有关网络的信息。具备该信息后,客户机便可请求并接收网络信息。
下图显示了 DHCP 服务事件的序列。圆圈中的数字与图表之后的说明中的编号相对应。
上图显示了以下步骤:
客户机通过将搜索消息广播到本地子网上的有限广播地址 (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) 手册页。
在 DHCP 服务器确定客户机的网络之后,便会选择相应的 IP 地址并确认该地址尚未使用。然后,DHCP 服务器通过广播一条提供消息来响应客户机。该提供消息中包含选定的 IP 地址以及有关可为客户机配置的服务的信息。每台服务器都会暂时保留所提供的 IP 地址,直到客户机确定是否使用该 IP 地址为止。
客户机会根据所提供的服务的数量和类型来选择最佳内容。客户机会广播一条请求来指定提供最佳内容的服务器的 IP 地址。该广播确保所有发出响应的 DHCP 服务器都知道客户机已经选择了一台服务器。未被选中的服务器会取消对之前提供的 IP 地址的保留。
被选中的服务器会为客户机分配 IP 地址,并将信息存储到 DHCP 数据存储中。该服务器还会向客户机发送一条确认消息 (acknowledgement message, ACK)。确认消息包含客户机的网络配置参数。客户机使用 ping 实用程序测试此 IP 地址,以确保它没有被其他系统使用。然后,客户机会继续引导以加入网络。
客户机会监视租用时间。当设定的时间段过去时,客户机会向所选的服务器发送一条新消息来延长租用时间。
接收请求的 DHCP 服务器会延长租用时间,前提是租用仍然遵循由管理员设置的本地租用策略。如果服务器在 20 秒内没有响应,客户机便会广播一条请求,以便其他 DHCP 服务器之一可以延长租用期。
当客户机不再需要 IP 地址时,便会通知服务器已释放了 IP 地址。此通知可以在正常关机时发送,也可以手动发送。
Oracle Solaris : DHCP 服务器在主机系统上作为 Oracle Solaris : 中的守护进程运行。该服务器有两个基本功能:
管理 IP 地址-DHCP 服务器控制一组 IP 地址,并将它们永久性地或在一段特定时间内分配给客户机。服务器使用租用机制来确定客户机可以使用非永久性地址的时间。当地址不再使用时,会返回到池中并可重新指定。服务器将 IP 地址与客户机的绑定信息保留在其 DHCP 网络表中,以确保地址不会被多台客户机使用。
为客户机提供网络配置-DHCP 服务器指定 IP 地址,并提供网络配置的其他信息,例如主机名、广播地址、网络子网掩码、缺省网关、名称服务,以及可能的更多信息。这些网络配置信息从服务器的 dhcptab 数据库中获取。
Oracle Solaris : DHCP 服务器也可配置为执行以下附加功能:
响应 BOOTP 客户机请求-服务器会侦听 BOOTP 客户机所发出的搜索 BOOTP 服务器的广播,并为 BOOTP 客户机提供 IP 地址和引导参数。这些信息必须已经由管理员进行静态配置。DHCP 服务器可同时充当 BOOTP 服务器和 DHCP 服务器。
转发请求-服务器会将 BOOTP 和 DHCP 请求转发到其他子网上的相应服务器。当服务器被配置为 BOOTP 中继代理时,便不能提供 DHCP 或 BOOTP 服务。
为 DHCP 客户机提供网络引导支持-服务器可以为 DHCP 客户机提供通过网络引导所需的以下信息: IP 地址、引导参数和网络配置信息。服务器也可以提供 DHCP 客户机通过广域网 (wide area network, WAN) 引导和安装所需的信息。
为提供主机名的客户机更新 DNS 表-对于在其 DHCP 服务请求中提供 Hostname 选项和值的客户机,服务器可以代表它们尝试进行 DNS 更新。
您能够以超级用户身份使用 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 表-该表包含可传送给客户机的配置信息。
DHCP 网络表-该表包含驻留在表名所指定的网络上的 DHCP 客户机和 BOOTP 客户机的相关信息。例如,网络 192.168.32.0 可以有一个名称包括 192_168_32_0 的表。
dhcptab 表包含客户机可以从 DHCP 服务器获取的所有信息。DHCP 服务器在每次启动时都会扫描 dhcptab 表。dhcptab 表的文件名根据所用的数据存储的不同而异。例如,由 NIS+ 数据存储 SUNWnisplus 创建的 dhcptab 表为 SUNWnisplus1_dhcptab。
DHCP 协议定义了许多可传送到客户机的标准信息项。这些项被称为参数、符号或选项。在 DHCP 协议中,选项由数字代码和文本标签定义,但没有值。下表显示了一些常用的标准选项。
表 12–1 DHCP 标准选项样例
代码 |
标签 |
说明 |
---|---|---|
1 |
Subnet |
子网掩码 IP 地址 |
3 |
Router |
路由器的 IP 地址 |
6 |
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 网络表将客户机标识符映射到 IP 地址和与每个地址关联的配置参数。网络表的格式在 dhcp_network(4) 手册页中进行了介绍。在 DHCP 管理程序中,在“地址”选项卡中显示的所有信息都来自网络表。
DHCP 管理程序是可用于执行与 DHCP 服务关联的所有管理功能的图形用户界面 (graphical user interface, GUI) 工具。此工具除了用于管理服务器之外,还可用于管理服务器所用的数据。您必须以超级用户身份运行 DHCP 管理程序。
可以通过以下方法在服务器上使用 DHCP 管理程序:
配置和取消配置 DHCP 服务器
启动、停止和重新启动 DHCP 服务器
禁用和启用 DHCP 服务
自定义 DHCP 服务器设置
使用 DHCP 管理程序,您可以通过以下方法管理 IP 地址、网络配置宏和网络配置选项:
在 DHCP 管理下添加和删除网络
在 DHCP 管理下查看、添加、修改、删除和释放 IP 地址
查看、添加、修改和删除网络配置宏
查看、添加、修改和删除非标准网络配置选项
DHCP 管理程序允许您通过以下方法管理 DHCP 数据存储:
将数据转换为一种新的数据存储格式
通过将 DHCP 数据从一台 DHCP 服务器导出并将其导入另一台服务器来在 DHCP 服务器之间移动该数据
DHCP 管理程序提供了使用此工具可执行的过程的全面联机帮助。有关更多信息,请参见关于 DHCP 管理程序。
所有 DHCP 管理功能都可以通过命令行实用程序来执行。如果您以超级用户身份登录或以指定给 DHCP 管理配置文件的用户身份登录,就可以运行实用程序。请参见设置用户访问 DHCP 命令的权限。
下表列出了实用程序,并说明了每个实用程序的用途。
表 12–2 DHCP 命令行实用程序
dhcpconfig、dhtadm 和 pntadm 命令的安全性由基于角色的访问控制 (role-based access control, RBAC) 设置决定。在缺省情况下,这些命令只能由超级用户运行。如果您想在其他用户名下使用这些命令,必须按照设置用户访问 DHCP 命令的权限中所述,将该用户名指定到 DHCP 管理配置文件中。
当您在要运行 DHCP 服务器的系统上首次运行 DHCP 管理程序时,需要对 Oracle Solaris : DHCP 服务器进行配置。
DHCP 管理程序服务器配置对话框将提示您输入在网络上启用并运行 DHCP 服务器时所需的基本信息。某些缺省值可从现有的系统文件中获取。如果您没有为网络配置系统,就没有缺省值。DHCP 管理程序会提示输入以下信息:
服务器的角色,充当 DHCP 服务器或充当 BOOTP 中继代理
数据存储类型(文件、二进制文件、NIS+ 或某些特定于您的站点的类型)
所选数据存储类型的数据存储配置参数
用于更新主机记录的名称服务(如果有),例如 /etc/hosts、NIS+ 或 DNS
租用时间的长度及客户机是否能够更新租用
DNS 服务器的 DNS 域名和 IP 地址
针对 DHCP 服务配置的第一个网络的网络地址和子网掩码
网络类型,局域网 (local area network, LAN) 或点对点网络
特定路由器的路由器搜索或 IP 地址
NIS 服务器的 NIS 域名和 IP 地址
NIS+ 服务器的 NIS+ 域名和 IP 地址
您也可以使用 dhcpconfig 命令来配置 DHCP 服务器。该实用程序自动从现有的系统文件中收集信息来提供有用的初始配置。因此,您必须确保在运行 dhcpconfig 之前这些文件是正确的。有关 dhcpconfig 用来获取信息的各种文件的信息,请参见 dhcpconfig(1M) 手册页。
Oracle Solaris : DHCP 服务器支持以下类型的 IP 地址分配:
手动分配-服务器为特定的 DHCP 客户机提供您为其选择的特定 IP 地址。该地址不可回收或指定给其他客户机。
自动或永久性分配-服务器提供没有失效期的 IP 地址,使其与客户机永久性地关联,直到您更改了这种指定方式或客户机释放了该地址。
动态分配-服务器向发出请求的客户机提供可租用特定一段时间的 IP 地址。当租用到期时,该地址可由服务器收回并可指定给其他客户机。具体期限由为服务器配置的租用时间决定。
您需要确定要提供给 DHCP 客户机的信息。在配置 DHCP 服务器时,需要提供有关网络的基本信息。然后,您可以添加更多想要提供给客户机的信息。
DHCP 服务器以选项/值对和宏的形式将网络配置信息存储在 dhcptab 表中。选项是指您要提供给客户机的网络数据的关键字。值被指定到选项并以 DHCP 消息的形式传送到客户机。例如,NIS 服务器地址通过一个名为 NISservs 的选项传送。NISservs 选项有一个与 DHCP 服务器指定的 IP 地址列表相同的值。宏提供了一种将要提供给客户机的任意数目的选项组合起来的便捷方法。您可以使用 DHCP 管理程序创建宏来组合选项并将值指定到选项。如果您更喜欢使用命令行工具,则可以通过 DHCP 配置表管理实用程序 dhtadm 来使用选项和宏。
在 Oracle Solaris : DHCP 中,选项是要传送到客户机的一条网络信息。DHCP 介绍中也将选项称为符号或标记。选项由数字代码和文本标签进行定义。在 DHCP 服务中使用选项时,便会为其赋值。
DHCP 协议为通常会指定的网络数据定义了大量的标准选项: Subnet、Router、Broadcst、NIS+dom、Hostname 和 LeaseTim 便是其中的几个示例。dhcp_inittab(4) 手册页中给出了标准选项的完整列表。您绝不能修改标准选项关键字。但是,您可以在将选项纳入宏时为与网络相关的选项指定值。
您可以为不是由标准选项表示的数据创建新的选项。您所创建的选项必须归为以下三种类别之一:
扩展选项-已成为标准 DHCP 选项但还没有纳入 DHCP 服务器实现的选项。如果您知道要使用的标准选项,但又不想升级您的 DHCP 服务器,可以使用扩展选项。
站点选项-您的站点独有的选项。这些选项由您创建。
供应商选项-只能应用于特定类别(如硬件或供应商平台)的客户机的选项。Oracle Solaris : DHCP 实现包括大量用于 Oracle Solaris : 客户机的供应商选项。例如,选项 SrootIP4 用于指定从网络引导的客户机应该用作其根 (/) 文件系统的服务器的 IP 地址。
第 15 章介绍创建、修改和删除 DHCP 选项的过程。
在 Oracle Solaris : DHCP 服务中,宏是指网络配置选项以及您为这些选项指定的值的集合。创建宏是为了组合要传送到特定的客户机或客户机类型的选项。例如,专用于特定子网中所有客户机的宏可能包含子网掩码、路由器 IP 地址、广播地址、NIS+ 域和租用时间的选项/值对。
当 DHCP 服务器处理宏时,它将宏中定义的网络选项及值放在 DHCP 消息中传送给客户机。对于特定类型的客户机,服务器会自动处理一些宏。
要让服务器自动处理宏,宏的名称必须符合下表中所示的类别之一。
表 12–3 自动处理的 DHCP 宏类别
仅当以下条件之一成立时,才能处理其名称未使用表 12–3 中列出的任何类别的宏:
宏映射到 IP 地址。
宏包含在另一个自动处理的宏中。
宏包含在另一个映射到 IP 地址的宏中。
当配置服务器时,在缺省情况下会创建一个名称与服务器名称相匹配的宏。系统不会为任何客户机自动处理该服务器宏,因为没有使用可引发自动处理的任一名称类型对该客户机进行命名。以后在服务器上创建 IP 地址时,便会将这些 IP 地址映射为在缺省情况下使用该服务器宏。
当 DHCP 客户机请求 DHCP 服务时,DHCP 服务器会确定与客户机相匹配的宏。服务器处理这些宏,并使用宏类别来确定处理的顺序。会首先处理最常见的类别,最后处理最特殊的类别。宏的处理顺序如下:
客户机类宏-最常见的类别
网络地址宏-比客户机类稍特殊
映射到 IP 地址的宏-比网络地址宏稍特殊
客户机 ID 宏-最特殊的类别,与某台客户机有关
包含在其他宏中的宏会作为容器宏的一部分来进行处理。
如果多个宏中包含同一选项,则会使用最特殊类别的宏中的该选项的值,因为它是最后处理的。例如,如果网络地址宏包含值为 24 小时的租用时间选项,而客户机 ID 宏包含值为 8 小时的租用时间选项,则客户机收到的租用时间为 8 小时。
为宏中所有选项指定的值的总长度不得超过 255 个字节,包括选项代码和长度信息。此限制由 DHCP 协议指定。
最可能受此限制影响的是那些用于将路径传送到 Oracle Solaris : 安装服务器上的文件的宏。一般情况下,应该能够传送所需的最小量的供应商信息。在需要输入路径名的选项中,应该使用简短的路径名。如果创建指向长路径的符号链接,则可以传送更简短的链接名。
“客户机”一词有时用来指代在网络上充当客户机角色的物理计算机。但是,本文档中介绍的 DHCP 客户机是一种软件实体。Oracle Solaris : DHCP 客户机是在配置为从 DHCP 服务器接收网络配置的系统上的 Oracle Solaris : 中运行的守护进程 (dhcpagent)。其他供应商提供的 DHCP 客户机也可以使用 Oracle Solaris : DHCP 服务器的服务。但是,本文档仅介绍 Oracle Solaris : DHCP 客户机。
有关 Oracle Solaris : DHCP 客户机的详细信息,请参见第 16 章。