系统管理指南:IP 服务

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