启用和禁用Solaris DHCP 客户机
第16 章• 配置和管理DHCP 客户机379
如何禁用Solaris DHCP客户机
成为客户机系统上的超级用户。
如果使用sysidcfg 文件预配置了系统,请从network_interface 关键字中删除dhcp 子项。
取消配置系统并关闭系统。
# sys-unconfig
有关此命令删除的配置信息的更多信息,请参见sys-unconfig(1M) 手册页。
完成关闭之后重新引导系统。
如果系统使用预配置,则不会提示您提供配置信息,并且也不会配置DHCP客户机。
如果系统不使用预配置,则重新引导系统时,会提示您提供由sysidtool 程序给出的系统配
置信息。有关更多信息,请参见sysidtool(1M) 手册页。
当提示使用DHCP 来配置网络接口时,指定“否”。
DHCP客户机管理
在系统正常操作的情况下,不需要对Solaris DHCP客户机软件进行管理。dhcpagent 守护进
程会在引导系统时自动启动,重新协商租用,并在关闭系统时停止。您无法直接手动启动
和停止dhcpagent 守护进程。但是,作为客户机系统上的超级用户,您可以在必要时使用
ifconfig 命令来影响dhcpagent 对网络接口的管理。
用于DHCP客户机的ifconfig 命令选项
ifconfig 命令可以执行以下操作:
启动DHCP 客户机-命令ifconfig interface dhcp start 启动dhcpagent 与DHCP 服务器
之间的交互来获取IP 地址以及一组新的配置选项。当您更改希望客户机立即使用的信
息时(例如添加IP 地址或更改子网掩码时),此命令非常有用。
仅请求网络配置信息-命令ifconfig interface dhcp inform 使dhcpagent 发出对网络配置
参数的请求,但不包括IP 地址。当网络接口具有有效的IP 地址,但是客户机系统需要
更新的网络选项时,此命令非常有用。例如,如果您不使用DHCP管理IP 地址,但是
使用它在网络上配置主机,则此命令非常有用。
请求租用期延长-命令ifconfig interface dhcp extend 使dhcpagent 发出续订租用的请
求。客户机会自动发出续订租用的请求。但是,在以下情况下您可能需要使用此命令
:您更改了租用时间并希望客户机立即使用新的租用时间,而不是等到下次尝试续订租
用时使用。
1
2
3
4
5
DHCP 客户机管理
380 系统管理指南:IP 服务• 2006 年8 月
释放IP 地址-命令ifconfig interface dhcp release 使dhcpagent 放弃由网络接口使用的
IP 地址。当租用过期时,将自动释放IP 地址。如果租用时间很长而您需要在较长一段
时间内关闭网络接口,则可能需要使用此命令。从网络中删除系统时,应当使用此命
令。
删除IP 地址-命令ifconfig interface dhcp drop 使dhcpagent 关闭网络接口而不通知
DHCP服务器。借助此命令,客户机可以在重新引导时使用相同的IP 地址。
Ping 网络接口-命令ifconfig interface dhcp ping 可用于确定接口是否在DHCP 控制之
下。
查看网络接口的DHCP 配置状态-命令ifconfig interface dhcp status 显示DHCP 客户
机的当前状态。显示内容指示以下各项:
IP 地址是否已绑定到客户机
发送、接收和拒绝的请求数
此接口是否为主接口
租用的获取时间、过期时间以及安排开始续订尝试的时间
例如:
# ifconfig hme0 dhcp status
Interface State Sent Recv Declined Flags
hme0 BOUND 1 1 0 [PRIMARY]
(Began,Expires,Renew)=(08/16/2005 15:27, 08/18/2005 13:31, 08/17/2005 15:24)
设置DHCP客户机配置参数
客户机系统上的/etc/default/dhcpagent 文件包含dhcpagent 的可调参数。您可以使用文
本编辑器来更改多个影响客户机操作的参数。/etc/default/dhcpagent 文件记录完好,因
此,有关更多信息,请参阅此文件和dhcpagent(1M) 手册页。
/etc/dhcp.interface 文件是另一个设置影响DHCP客户机的参数的位置。系统启动脚本将在
此文件中设置的参数与ifconfig 命令一起使用。
缺省情况下,DHCP客户机配置如下:
客户机系统在一个物理网络接口上使用DHCP。
如果您希望在多个物理网络接口上使用DHCP,请参见第382 页中的“具有多个网络接
口的DHCP客户机系统”。
客户机系统不需要特定的主机名。
如果您希望客户机请求特定的主机名,请参见第383 页中的“DHCP客户机主机名”。
如果在安装Solaris 之后配置了DHCP客户机,则客户机不会自动配置为名称服务客户
机。
DHCP 客户机管理
第16 章• 配置和管理DHCP 客户机381
有关将名称服务用于DHCP客户机的信息,请参见第384 页中的“DHCP客户机系统和
名称服务”。
客户机仅请求子网掩码、路由器IP 地址、客户机主机名以及封装供应商选项。
可以在/etc/default/dhcpagent 文件内的PARAM_REQUEST_LIST 关键字中将DHCP客户机
的参数文件设置为请求更多选项。可以将DHCP服务器配置为提供没有经过专门请求的
选项。有关使用DHCP服务器宏将信息发送到客户机的信息,请参见第279 页中的“关
于DHCP宏”和第347 页中的“使用DHCP宏(任务列表)”。
具有多个网络接口的DHCP客户机系统
DHCP客户机可以同时管理一个系统上的多个不同接口。接口可以是物理接口,也可以是
逻辑接口。每个接口都有自己的IP 地址和租用时间。如果为DHCP配置多个网络接口,则
客户机会分别发出请求以配置这些接口。客户机为每个接口分别保留了一组网络配置参
数。虽然参数是分别存储的,但是某些参数仍具有全局性。全局参数应用于整个系统,而
不是应用于特定的网络接口。
主机名、NIS 域名和时区都是全局参数,对于所有接口应该具有相同的值。但是,这些值
可能会因为DHCP管理员指定的信息中的错误而有所不同。要确保对每个全局参数的查询
只有一个答案,只需请求主网络接口的参数。对于要视为主接口的接口,您可以在
/etc/dhcp.interface 文件中插入关键字primary。如果没有使用primary 关键字,则会将按
字母顺序列出的第一个接口视为主接口。
DHCP客户机针对逻辑接口和物理接口执行同样的租用管理,但对逻辑接口存在以下限制
:
DHCP客户机不管理与逻辑接口关联的缺省路由。
Solaris 内核将路由与物理接口而不是逻辑接口进行关联。建立物理接口的IP 地址之后,
应该将所需的缺省路由放在路由表中。如果随后使用DHCP来配置与此物理接口关联的
逻辑接口,则应已存在所需的路由。逻辑接口使用相同的路由。
当物理接口上的租用过期时,DHCP客户机便会删除与此接口关联的缺省路由。当逻辑
接口上的租用过期时,DHCP客户机不会删除与此逻辑接口关联的缺省路由。关联的物
理接口(也可能包括其他逻辑接口)可能需要使用相同的路由。
如果您需要添加或删除与DHCP控制的接口关联的缺省路由,则可以使用DHCP客户机
事件脚本机制。请参见第389 页中的“DHCP客户机事件脚本”。
DHCP客户机不自动为逻辑接口生成客户机标识符。
客户机标识符用于唯一标识DHCP客户机,以便客户机可以接收专用于该客户机的配置
信息。对于物理接口,DHCP客户机标识符由系统网络接口硬件的介质访问控制(media
access control, MAC) 地址派生而来。但是,对于具有多个租用的物理接口的DHCP客户
机标识符,不存在Internet 标准格式。对于希望通过DHCP配置的任何逻辑接口,您都
必须创建自己的客户机标识符。客户机标识符必须使用interface.CLIENT_ID 关键字在
/etc/default/dhcpagent 文件中进行指定。例如,要为逻辑接口ce0:1 指定客户机标识
符orangutan-ce0–1,请使用以下项:
ce0:1.CLIENT_ID=orangutan-ce0-1
具有多个网络接口的DHCP 客户机系统
382 系统管理指南:IP 服务• 2006 年8 月
有关可以在/etc/default/dhcpagent 文件中设置的参数的更多信息,请参见此文件和
dhcpagent(1M) 手册页。
如果您没有配置客户机标识符,则ifconfig 尝试配置逻辑接口以使用DHCP时会失败。
错误消息为:
ifconfig: ce0:1: interface does not have a configured DHCP client id
DHCP客户机主机名
缺省情况下,Solaris DHCP客户机不提供自己的主机名,因为此客户机希望DHCP服务器
提供主机名。缺省情况下,Solaris DHCP服务器配置为向DHCP客户机提供主机名。当您
同时使用Solaris DHCP客户机和服务器时,这些缺省设置会正常发挥作用。但是,当您将
Solaris DHCP客户机与某些第三方DHCP服务器一起使用时,客户机可能不会从服务器接
收主机名。如果Solaris DHCP客户机没有通过DHCP接收主机名,则客户机系统会在
/etc/nodename 文件中查找名称来用作主机名。如果此文件为空,则主机名将设置为
unknown。
如果DHCP服务器在DHCPHostname 选项中提供了一个名称,则客户机将使用该主机名,
即使/etc/nodename 文件中放置了其他值也是如此。如果您希望客户机使用特定的主机
名,则可以使客户机请求此名称。请参见以下过程。
如何使Solaris 客户机请求特定的主机名
在客户机系统上,以超级用户的身份编辑/etc/default/dhcpagent 文件。
在/etc/default/dhcpagent 文件中查找REQUEST_HOSTNAME 关键字,并按如下方式修改此关
键字:
REQUEST_HOSTNAME=yes
如果REQUEST_HOSTNAME 前面存在注释符号(#),请删除#。如果REQUEST_HOSTNAME 关键字不
存在,请插入此关键字。
在客户机系统上编辑/etc/hostname.interface 文件以添加以下行:
inet hostname
hostname 是您希望客户机使用的名称。
键入以下命令使客户机在重新引导时执行完整的DHCP 协商:
# pkill dhcpagent
# rm /etc/dhcp/interface.dhc
# reboot
1
2
3
4
DHCP 客户机主机名
第16 章• 配置和管理DHCP 客户机383
将删除在客户机上高速缓存的DHCP数据。客户机重新启动协议来请求新的配置信息,其
中包含新的主机名。DHCP服务器首先确保网络上的其他系统没有使用此主机名,然后将
此主机名指定给客户机。如果配置为可以执行此操作,则DHCP服务器便可使用客户机的
主机名来更新名称服务。
如果您随后要更改此主机名,请重复步骤3 和步骤4。
DHCP客户机系统和名称服务
Solaris 系统支持以下名称服务:DNS、NIS、NIS+ 和本地文件存储(/etc/inet/hosts)。每个
名称服务都只有在进行某些配置后才可用。还必须相应地设置名称服务转换器配置文件
(请参见nsswitch.conf(4))以指明要使用的名称服务。
在DHCP客户机系统可以使用名称服务之前,您必须将系统配置为此名称服务的客户机。
下表概述了与每个名称服务以及DHCP相关的问题。该表中还提供了一些文档链接,这些
文档可帮助您针对每个名称服务设置客户机。
表16–1DHCP客户机系统的名称服务客户机设置信息
名称服务客户机设置信息
NIS 如果您使用Solaris DHCP将Solaris 网络安装信息发送到客户机系统,则可以
使用包含NISservs 和NISdmain 选项的配置宏。这些选项将NIS 服务器的IP
地址和NIS 域名传递到客户机。然后客户机便会自动成为NIS 客户机。
如果DHCP客户机系统已在运行Solaris OS,则当DHCP服务器将NIS 信息
发送到DHCP客户机时,不会在该系统上自动配置NIS 客户机。
如果DHCP服务器配置为将NIS 信息发送到DHCP客户机系统,则在客户
机上按如下方式使用dhcpinfo 命令时,您可以看到为客户机提供的值:
# /sbin/dhcpinfo NISdmain
# /sbin/dhcpinfo NISservs
将系统设置为NIS 客户机时,请使用针对NIS 域名和NIS 服务器返回的值。
您可以使用标准方法为Solaris DHCP客户机系统设置NIS 客户机,
如《System Administration Guide: Naming and Directory Services (DNS, NIS, and
LDAP)》中的第5 章“Setting Up and Configuring NIS Service”所述。
提示– 您可以编写一个使用dhcpinfo 和ypinit 的脚本,以便在DHCP客户机
系统上自动配置NIS 客户机。
DHCP 客户机系统和名称服务
384 系统管理指南:IP 服务• 2006 年8 月
表16–1DHCP客户机系统的名称服务客户机设置信息(续)
名称服务客户机设置信息
NIS+ 如果DHCP客户机系统收到非保留IP 地址,则地址可能不会始终不变。您
必须使用非标准方法为DHCP客户机系统设置NIS+ 客户机,此方法在第
385 页中的“将DHCP客户机设置为NIS+ 客户机”中介绍。必须执行此过
程,因为NIS+ 使用安全措施来验证服务请求,而安全措施则取决于IP 地
址。
如果已经手动为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 的更多信
息,请参见《System Administration Guide: Naming and Directory Services
(DNS, NIS, and LDAP)》。
将DHCP客户机设置为NIS+ 客户机
您可以在作为DHCP客户机的Solaris 系统上使用NIS+ 名称服务。但是,执行此操作要求您
在某种程度上禁用NIS+ 的安全增强功能之一,即创建数据加密标准(Data Encryption
Standard, DES) 凭证。当您设置不使用DHCP的NIS+ 客户机时,请将此客户机的专有DES
凭证添加到NIS+ 服务器中。可以使用多种方法来创建凭证,例如使用nisclient 脚本或
nisaddcred 命令。
对于DHCP客户机,您不能使用这些方法。生成NIS+ 凭证时,要求客户机具有静态主机名
以创建和存储这些凭证。如果您要使用NIS+ 和DHCP,则必须为DHCP客户机的所有主机
名创建完全相同的凭证。这样,无论DHCP客户机接收何种IP 地址和关联主机名,此客户
机都可以使用相同的DES 凭证。
注意– 在执行以下过程之前,应清楚NIS+ 是为增强安全性而设计的。此过程由于允许任意
DHCP客户机接收NIS+ 凭证,而降低了安全性。
以下过程显示如何为所有DHCP主机名创建相同的凭证。仅当您知道DHCP客户机使用的
主机名时,此过程才有效。例如,当DHCP服务器生成主机名时,您便会知道客户机可能
收到的主机名。
DHCP 客户机系统和名称服务
第16 章• 配置和管理DHCP 客户机385
如何将Solaris DHCP客户机设置为NIS+ 客户机
要使DHCP客户机系统成为NIS+ 客户机,该系统必须使用属于NIS+ 域中其他NIS+ 客户机
系统的凭证。此过程仅为系统生成凭证,而这些凭证仅适用于登录到系统的超级用户。其
他登录到DHCP客户机系统的用户必须在NIS+ 服务器中具有自己专有的凭证。这些凭证根
据《System Administration Guide: Naming and Directory Services (NIS+)》中的过程进行创建。
通过在NIS+ 服务器上键入以下命令来为客户机创建凭证:
# nisgrep nisplus-client-name cred.org_dir > /tmp/file
此命令将NIS+ 客户机的cred.org_dir 表项写入临时文件中。
使用cat 命令查看此临时文件的内容。
或者,使用文本编辑器。
复制要用于DHCP 客户机的凭证。
您必须复制公钥和私钥,它们是包含以冒号分隔的数字和字母的长字符串。这些凭证将粘
贴到下一步发出的命令中。
通过键入以下命令来为DHCP 客户机添加凭证:
# nistbladm -a cname=" " auth_type=DES \
auth_name="" \
public_data=copied-public-key \
private_data=copied-private-key
对于copied-public-key,请粘贴您从临时文件中复制的公钥信息。对于copied-private-key,请
粘贴您从临时文件中复制的私钥信息。
通过在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客户机系统上的适当位置。
通过在DHCP 客户机系统上键入以下命令来为NIS+ 复制正确的名称服务转换器文件:
# cp /etc/nsswitch.nisplus /etc/nsswitch.conf
1
2
3
4
5
6
DHCP 客户机系统和名称服务
386 系统管理指南:IP 服务• 2006 年8 月
重新引导DHCP 客户机系统。
现在DHCP客户机系统应该可以使用NIS+ 服务。
将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+ 服务。
7
示例16–1
DHCP 客户机系统和名称服务
第16 章• 配置和管理DHCP 客户机387
使用脚本添加凭证
如果您要将大量的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="}" \
public_data=${PUBLIC_DATA} private_data=${PRIVATE_DTA} cred.org_Dir
示例16–2
DHCP 客户机系统和名称服务
388 系统管理指南:IP 服务• 2006 年8 月
done
exit 0
DHCP客户机事件脚本
您可以将Solaris DHCP客户机设置为运行可执行程序或脚本,这些程序或脚本可执行任何
适用于客户机系统的操作。出现特定的DHCP租用事件之后,便会自动执行称为事件脚本
的程序或脚本。可以使用事件脚本来运行其他命令、程序或者脚本以响应特定的租用事
件。您必须提供自己的事件脚本以使用此功能。
dhcpagent 使用以下事件关键字来标识DHCP租用事件:
事件关键字说明
BOUND 将接口配置为用于DHCP。客户机从DHCP服务器接收确认消息(ACK),此
消息同意租用IP 地址的请求。成功配置接口之后,便会立即调用事件脚
本。
EXTEND 客户机成功地延长了租用期。当客户机从DHCP服务器接收续订请求的确
认消息之后,便会立即调用事件脚本。
EXPIRE 租用时间结束时租用即到期。将在从接口中删除租用地址,并将接口标记
为关闭之前的瞬间调用事件脚本。
DROP 客户机结束租用,将接口从DHCP控制中删除。系统会在将接口从DHCP
控制中删除之前的瞬间调用事件脚本。
RELEASE 客户机放弃IP 地址。在客户机释放接口上的地址并将RELEASE 包发送到
DHCP服务器之前的瞬间调用事件脚本。
如果出现以上任意一种事件,dhcpagent 都会调用以下命令:
/etc/dhcp/eventhook interface event
其中,interface 是使用DHCP的接口,而event 是前面所述的事件关键字之一。例如,当ce0
接口首次配置为用于DHCP时,dhcpagent 会按如下方式调用事件脚本:
/etc/dhcp/eventhook ce0 BOUND
要使用事件脚本功能,您必须执行以下操作:
将可执行文件命名为/etc/dhcp/eventhook。
将文件的属主设置为root。
将权限设置为755 (rwxr-xr-x)。
DHCP 客户机事件脚本
第16 章• 配置和管理DHCP 客户机389
编写脚本或程序来执行一系列操作以响应记录的事件。由于Sun 可能会添加新事件,因
此,程序必须自动忽略所有无法识别或不需要执行操作的事件。例如,如果是RELEASE
事件,则程序或脚本就会向日志文件中写入消息,如果是其他事件,则会忽略。
使脚本或程序不进行交互。调用事件脚本之前,stdin、stdout 和stderr 将连接到
/dev/null。要查看输出或错误,您必须重定向到文件。
使脚本或程序可通过以下命令运行:
/etc/dhcp/eventhook interface event
事件脚本从dhcpagent 继承其程序环境,并以root 权限运行。如有必要,脚本可以使用
dhcpinfo 实用程序来获取有关接口的更多信息。有关更多信息,请参见dhcpinfo(1) 手册
页。
dhcpagent 守护进程将等待事件脚本在所有事件上退出。如果事件脚本在55 秒内没有退出,
则dhcpagent 会向脚本进程发送SIGTERM 信号。如果又经过3 秒之后进程仍没有退出,则守
护进程会发送SIGKILL 信号以中止此进程。
dhcpagent(1M) 手册页包含一个事件脚本的示例。
示例16–3 显示如何使用DHCP事件脚本来保持/etc/resolv.conf 文件的内容为最新。当出
现BOUND 和EXTEND 事件时,脚本便会替换域服务器和名称服务器的名称。当出现EXPIRE、
EXPIRE 和RELEASE 事件时,脚本便会从文件中删除域服务器和名称服务器的名称。
注– 此脚本示例假设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 ()
DHCP 客户机事件脚本
390 系统管理指南:IP 服务• 2006 年8 月
示例16–3 用于更新/etc/resolv.conf 文件的事件脚本(续)
{
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
}
DHCP 客户机事件脚本
第16 章• 配置和管理DHCP 客户机391
示例16–3 用于更新/etc/resolv.conf 文件的事件脚本(续)
# 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
;;
DHCP 客户机事件脚本
392 系统管理指南:IP 服务• 2006 年8 月
示例16–3 用于更新/etc/resolv.conf 文件的事件脚本(续)
*)
exit 0
;;
esac
DHCP 客户机事件脚本
第16 章• 配置和管理DHCP 客户机393
394
对DHCP 问题进行疑难解答(参考)
本章提供的信息可帮助您解决在配置DHCP服务器或客户机时可能遇到的问题, 还可帮助
您解决配置完成后使用DHCP时可能遇到的问题。
本章包含以下信息:
第395 页中的“对DHCP服务器问题进行疑难解答”
第400 页中的“对DHCP客户机配置问题进行疑难解答”
有关配置DHCP服务器的信息,请参见第14 章。有关配置DHCP客户机的信息,请参见
第379 页中的“启用和禁用Solaris DHCP客户机”。
对DHCP服务器问题进行疑难解答
您在配置服务器时可能会遇到以下几类问题:
第395 页中的“NIS+ 问题和DHCP数据存储”
第398 页中的“DHCP中的IP 地址分配错误”
NIS+ 问题和DHCP数据存储
如果使用NIS+ 作为DHCP数据存储,则可能遇到以下几类问题:
第395 页中的“无法选择NIS+ 作为DHCP数据存储”
第396 页中的“未完全配置用于DHCP数据存储的NIS+”
第396 页中的“有关DHCP数据存储的NIS+ 访问问题”
无法选择NIS+ 作为DHCP数据存储
如果您尝试使用NIS+ 作为数据存储,则DHCP管理程序可能不会提供NIS+ 作为数据存储
的选择。如果使用dhcpconfig 命令,则可能会看到一条消息,指出NIS+ 似乎未安装,也
不在运行。这两种症状表示尽管网络可能正在使用NIS+,但尚未针对此服务器配置
NIS+。必须先将服务器系统配置为NIS+ 客户机,然后才能选择NIS+ 作为数据存储。
17 第1 7 章
395
在将DHCP服务器系统设置为NIS+ 客户机之前,以下语句必须成立:
域必须已经配置。
NIS+ 域的主服务器必须正在运行。
主服务器的表必须已填充。
主机表必须包含新客户机系统(即DHCP服务器系统)的项。
有关配置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+ 无法用于passwd 和publickey 信息。
解决方法: 键入以下命令来查看名称服务转换器的配置文件:
cat /etc/nsswitch.conf
在passwd 和publickey 项中检查“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 服务器问题进行疑难解答
396 系统管理指南:IP 服务• 2006 年8 月
问题: DHCP服务器系统没有在NIS+ 域中创建org_dir 对象的权限。
解决方法: 键入以下命令:
nisls -ld org_dir
访问权限以r---rmcdrmcdr--- 形式列出,其中权限可分别应用于无人、属主、组和全局等
几类。对象的属主将在随后列出。
通常,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 凭
证。