JavaScript is required to for searching.
跳过导航链接
退出打印视图
在 Oracle Solaris 11.1 中使用 DHCP     Oracle Solaris 11.1 Information Library (简体中文)
为本文档评分
search filter icon
search icon

文档信息

前言

1.  关于 DHCP(概述)

2.  管理 ISC DHCP 服务

3.  配置和管理 DHCP 客户机

关于 DHCP 客户机

DHCP 管理模型

MAC 地址和客户机 ID

DHCPv4 和 DHCPv6 之间的差异

DHCP 协议详细信息

逻辑接口

选项协商

配置语法

DHCP 客户机启动

DHCPv6 通信

DHCP 客户机协议如何管理网络配置信息

DHCPv4 客户机如何管理网络配置信息

DHCPv6 客户机如何管理网络配置信息

DHCP 客户机关闭

启用和禁用 DHCP 客户机

如何启用 DHCP 客户机

如何禁用 DHCP 客户机

DHCP 客户机管理

用于 DHCP 客户机的 ipadm 命令选项

设置 DHCP 客户机配置参数

对于 DHCPv4

对于 DHCPv4 和 DHCPv6

具有多个网络接口的 DHCP 客户机系统

DHCPv4 客户机主机名

如何使 DHCPv4 客户机请求特定的主机名

DHCP 客户机系统和名称服务

DHCP 客户机事件脚本

4.  DHCP 命令和文件(参考信息)

索引

请告诉我们如何提高我们的文档:
过于简略
不易阅读或难以理解
重要信息缺失
错误的内容
需要翻译的版本
其他
Your rating has been updated
感谢您的反馈!

您的反馈将非常有助于我们提供更好的文档。 您是否愿意参与我们的内容改进并提供进一步的意见?

关于 DHCP 客户机

DHCP 客户机为 dhcpagent 守护进程。如果使用 LiveCD GUI 安装程序安装 Oracle Solaris,则所安装的系统上将启用 DHCPv4 和 DHCPv6 协议。如果使用文本安装程序安装 Oracle Solaris,则系统将会提示您选择在所安装系统上配置网络的方式。如果指定 "Automatic Network Configuration"(自动网络配置),则所安装的系统上将启用 DHCPv4 和 DHCPv6 协议。

无需为了使用 DHCP 而对 Oracle Solaris 客户机执行其他任何操作。DHCP 服务器配置会确定为使用 DHCP 服务的 DHCP 客户机系统提供的信息。

如果客户机系统已经运行 Oracle Solaris,但是没有使用 DHCP,则可以将客户机系统重新配置为使用 DHCP。您还可以重新配置 DHCP 客户机系统,以使其停止使用 DHCP 而使用您提供的静态网络信息。有关更多信息,请参见启用和禁用 DHCP 客户机

DHCP 管理模型

DHCPv4 需要显式客户机配置。如果需要,必须设置 DHCPv4 系统以用于寻址,此操作通常在系统初次安装期间执行或者使用 ipadm 命令动态执行。请参见ipadm(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 接口执行此操作。但是,对于逻辑接口 (bge0:1),如果未配置客户机 ID,则使用 DUID+IAID。

与 IPv4 DHCP 不同,DHCPv6 未提供 "client name"(客户机名称)选项,因此无法仅基于 DHCPv6 来命名系统。相反,如果需要知道与 DHCPv6 提供的地址相匹配的 DNS 名称,请使用 DNS 反向解析(通过 getaddrinfo(3SOCKET) 函数的地址到名称查询)查找对应的名称信息。这意味着,如果仅使用 DHCPv6 且希望节点使用特定的名称,则必须按如下所示使用 svccfg 命令指定节点名称:

# svccfg -s svc:/system/identity:node setprop config/nodename = astring: hostname

DHCPv4 和 DHCPv6 之间的差异

DHCPv4 和 DHCPv6 之间存在以下两个主要差异:

DHCP 协议详细信息

如果使用 DHCPv4,DHCP 服务器会提供要用于已指定地址的子网掩码。如果使用 DHCPv6,子网掩码(也称为“前缀长度”)由路由器通告指定,且不受 DHCP 服务器的控制。

DHCPv4 有一个用于设置系统范围节点名称的主机名选项。DHCPv6 没有这样的选项。

要为 DHCPv6 配置客户机 ID,必须指定 DUID,而不是允许系统自动选择一个。对于守护进程,可以按全局方式执行此操作,也可以基于每个接口来执行。使用以下格式设置全局 DUID(请注意初始点):

.v6.CLIENT_ID=DUID

将特定接口设置为使用给定 DUID(并使系统看起来是 DHCPv6 服务器的多个独立客户机):

bge0.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。例如:

bge0.v6 CLIENT ID=DUID

DHCPv6 以不同的方式工作。与 IPv4 不同,IPv6 接口上的第零个逻辑接口始终是本地链路。在没有其他可用的指定方法(如 DHCP 服务器)时,将使用本地链路自动将 IP 地址指定给 IP 网络中的设备。第零个逻辑接口不能由 DHCP 控制,因此,虽然 DHCPv6 在第零个逻辑接口(也称为“物理”接口)上运行,但是它仅在非零逻辑接口上指定地址。

作为对 DHCPv6 客户机请求的响应,DHCPv6 服务器返回客户机要配置的地址的列表。

选项协商

在 DHCPv6 中存在 "Option Request"(选项请求)选项,该选项为服务器提供关于客户机首选查看内容的提示。如果所有的可能选项都是从服务器发送到客户机,则可以发送的信息如此之多,以致于必须在发往客户机的过程中删除其中一些信息。服务器可能会使用该提示从要包括在答复中的选项中进行选择。或者,服务器可能忽略提示,而选择要包括的其他项。例如,在 Oracle Solaris 中,首选选项可能包括 Oracle Solaris DNS 地址域或 NIS 地址域,但不大可能包括网络 BIOS 服务器。

为 DHCPv4 也提供了相同类型的提示,但是未提供特殊的 "Option Request"(选项请求)选项。DHCPv4 改用 /etc/default/dhcpagent 中的 PARAM_REQUEST_LIST

配置语法

如果使用 /etc/default/dhcpagent,则配置 DHCPv6 客户机的方式与配置现有 DHCPv4 客户机的方式非常类似。

通过在接口名称(如果有)和要配置的参数之间增加一个 ".v6" 标记。例如,可以按以下所示设置全局 IPv4 选项请求列表:

PARAM_REQUEST_LIST=1,3,6,12,15,28,43

可以按以下所示将单个接口配置为省略主机名选项:

bge0.PARAM_REQUEST_LIST=1,3,6,15,28,43

要为 DHCPv6 设置全局请求列表,请注意前导点:

.v6.PARAM_REQUEST_LIST=23,24

或者,要设置单个接口,请按照以下示例操作:

bge0.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。

不过,对于 DHCPv4,如果在 Oracle Solaris 安装过程中未执行此操作,则必须请求客户机启动。请参见如何启用 DHCP 客户机

dhcpagent 守护进程可获取引导系统时所涉及的其他进程所需的配置信息。因此,系统启动脚本会在引导过程前期启动 dhcpagent 并处于等待状态,直到来自 DHCP 服务器的网络配置信息到达。

虽然缺省设置是运行 DHCPv6,但是可以选择不运行 DHCPv6。DHCPv6 开始运行后,您可以使用 ipadm delete-addr 命令停止它。也可以通过修改 /etc/inet/ndpd.conf 文件禁用 DHCPv6,以便在重新引导时它不会启动。

以下示例显示了如何立即关闭 DHCPv6:

ex# echo ifdefault StatefulAddrConf false >> /etc/inet/ndpd.conf  
ex# pkill -HUP -x in.ndpd   
ex# ipadm delete-addr -r dhcp-addrobj

启动时,如果系统中存在持久性 DHCP 配置,则 dhcpagent 将会在执行启动脚本的过程中启动。然后,dhcpagent 将按照DHCP 的工作原理中所述配置网络接口。

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 文件。

在 DHCPv6 启动后,还可以使用以下任一 ipadm 版本停止它:

ipadm delete-addr dhcp-addrobj

ipadm delete-addr -r dhcp-addrobj

DHCP 客户机协议如何管理网络配置信息

DHCPv4 和 DHCPv6 客户机协议以不同的方式管理网络配置信息。主要差异在于,对于 DHCPv4,协商是针对单个地址和一些与之配套的选项的租用。对于 DHCPv6,协商是针对一批地址和一批选项。

有关 DHCPv4 客户机和服务器之间的交互的背景信息,请参见第 1 章

DHCPv4 客户机如何管理网络配置信息

从 DHCP 服务器获取信息包之后,dhcpagent 便会配置网络接口并初启它。此守护进程在 IP 地址的租用时间内对接口进行控制,并在内部表中维护配置数据。系统启动脚本使用 dhcpinfo 命令从内部表中提取配置选项值。这些值用于配置系统并使其在网络上进行通信。

dhcpagent 守护进程将被动地等待一段时间,通常为租用时间的一半。然后此守护进程从 DHCP 服务器请求延长租用期。如果系统将接口关闭或 IP 地址已更改的信息通知给 dhcpagent,则守护进程不会对接口进行控制,除非 ipadm 命令指示这样做。如果 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 会将当前配置信息写入一个文件(如果该文件存在的话)。对于 DHCPv4,该文件名为 /etc/dhcp/interface.dhc,对于 DHCPv6,该文件名为 /etc/dhcp/interface.dh6。缺省情况下,会保存而不是释放租用,因此 DHCP 服务器无法检测到 IP 地址未处于活动使用状态,这样在下次引导时客户机就可以轻松地重新获取地址了。此缺省操作与 ipadm delete-addr dhcp-addrobj 命令等效。

如果重新引导系统时该文件中的租用仍然有效,则 dhcpagent 将发送要求使用相同 IP 地址和网络配置信息的简短请求。对于 DHCPv4,这是“请求”消息。对于 DHCPv6,则消息为“确认”消息。

如果 DHCP 服务器允许此请求,则 dhcpagent 可以使用它在系统关闭时写入磁盘的信息。如果服务器不允许客户机使用此信息,则 dhcpagent 将启动DHCP 的工作原理中所述的 DHCP 协议序列。因此,客户机将获取新的网络配置信息。