使用 Oracle® Solaris 11.2 目录和命名服务:DNS 和 NIS

退出打印视图

更新时间: 2014 年 7 月
 
 

名称服务转换概述

名称服务转换是一项可配置的选择服务,管理员可通过它来指定为每种类型的网络信息使用的名称信息服务或源。服务被称为一个数据库。名称服务转换由调用任意 getXbyY() 接口(如以下接口)的客户机应用程序使用。

  • gethostbyname()

  • getpwuid()

  • getpwnam()

  • getaddrinfo()

每个系统在 SMF 系统信息库中都有其自己的配置。名称服务转换中定义的每个属性都标识一个特定的数据库,例如主机、口令或组。指定给每个属性的值列出了可从中请求信息的一个或多个源。有时,这些值包括指导或选项。指导可以包括应当对服务进行多少次尝试、要应用的超时,以及如果服务失败要执行的操作。

名称服务转换还控制客户机的 DNS 转发,如管理域名系统中所述。DNS 转发允许客户机访问 Internet。

用于名称服务转换的数据库和源

使用 SMF 服务配置名称服务转换支持的数据库。要获取这些数据库的列表,可使用 svcfg 命令,如以下示例中所示。

# svccfg -s name-service/switch listprop config
config                      application
config/default              astring             files
config/password             astring             "files nis"
config/group                astring             "files nis"
config/host                 astring             "files nis"
config/network              astring             "nis [NOTFOUND=return] files"
config/protocol             astring             "nis [NOTFOUND=return] files"
config/rpc                  astring             "nis [NOTFOUND=return] files"
config/ether                astring             "nis [NOTFOUND=return] files"
config/netmask              astring             "files nis"
config/bootparam            astring             "nis [NOTFOUND=return] files"
config/publickey            astring             "nis [NOTFOUND=return] files"
config/netgroup             astring             nis
config/automount            astring             "files nis"
config/alias                astring             "files nis"
config/service              astring             "files nis"
config/printer              astring             "user nis"
config/auth_attr            astring             "files nis"
config/prof_attr            astring             "files nis"
config/project              astring             "files nis"

下表说明了每个数据库存储的信息类型。从 SMF 的角度来看,这些数据库均视为服务的可配置属性。

表 2  名称服务转换的数据库
信息数据库
信息类型
alias
电子邮件地址和别名
auth_attr
授权名称和说明
automount
有关可以在本地挂载的远程文件系统的信息
bootparam
无磁盘客户机的引导信息
ether
以太网地址和匹配的主机名
group
可以用来共享对文件的访问权限的组的相关信息
host
IP 地址和匹配的主机名
netgroup
共享 NFS 文件系统的信息
netmask
用于实现 IP 子网的网络掩码
network
每个网络的名称和编号
password
用户帐户信息
prof_attr
执行配置文件名称、说明和其他属性
project
项目名称、唯一标识符和关联的资源分配
protocol
Internet 协议名称、编号和任何别名
publickey
公钥信息
rpc
RPC 程序的名称和编号
service
Internet 服务的名称、端口和协议
tnrhdb
使用 Oracle Solaris 的 Trusted Extensions 功能的主机的安全属性
tnrhtp
Trusted Extensions 使用的模板

此外,名称服务转换中的 default 属性定义了当未定义源字符串时用于任何数据库的源字符串。此属性的值设置为 files,表示所有数据库及其信息都是在 /etc 目录本地发现的。您可以根据表 3 中列出的源为 default 属性设置不同配置。有关过程,请参见如何为所有命名数据库更改源

通过 default 属性,您可以配置通用于数据库的源,而不是配置每个数据库的源。

下表介绍了在名称服务转换中可以为上面列出的数据库列出的源的种类。

表 3  用于名称服务转换的信息源
信息源
说明
ad
标识 Active Directory 服务器上存储的数据库。
pam_list
替换过时的 compat 数据库。可用于口令和组信息,以支持 /etc/passwd/etc/shadow/etc/group 文件中的旧式 + 或 - 语法。
dns
指定将从 DNS 获取主机信息。
files
指定存储在客户机的 /etc 目录中的一个文件,例如 /etc/passwd
ldap
指定将从 LDAP 目录中获取项。
mdns
使用多播 DNS (Multicast DNS, mDNS) 指定主机信息。
nis
指定一个 NIS 映射,例如 hosts 映射。

名称服务转换的源格式

    以下搜索条件格式可用来选择一个或多个信息源,并可用来指定源的使用顺序。

  • 单个源-如果某个信息类型只有一个源(例如 files),则使用名称服务转换的搜索例程将在该源中搜索信息。如果该例程找到了此信息,将返回 success 状态消息。如果该例程未找到此信息,则会停止搜索并返回不同的状态消息。不同的例程处理状态消息的方式也不同。

  • 多个源-如果数据库中针对某个给定的信息类型包含了多个源,则名称服务转换会指示搜索例程在列出的第一个源中搜索。如果该例程找到了此信息,将返回 success 状态消息。如果该例程未在第一个源中找到此信息,将尝试在下一个源中进行搜索。该例程将依次搜索所有的源,直到找到此信息或者该例程由于指定了 return 而停止。如果在搜索了列出的所有源之后仍未找到此信息,该例程将停止搜索并返回 non-success 状态消息。

缺省情况下,在 Oracle Solaris 11 发行版中,第一个源是 files。当所列出的下一个源不可用时,此配置可防止系统挂起。

用于名称服务转换的状态消息

如果某个例程找到了此信息,则该例程将返回 success 状态消息。如果该例程未找到此信息,则会返回下面的三个错误状态消息之一。下表列出了可能的状态消息。

表 4  用于名称服务转换的状态消息
状态消息
说明
SUCCESS
在指定的源中找到了所请求的项。
UNAVAIL
该源不响应或者不可用。换句话说,无法找到或访问数据库源。
NOTFOUND
该源给出 "No such entry"(该项不存在)的响应。换句话说,已访问了数据库,但未找到所需的信息。
TRYAGAIN
该源正忙,下次可能会响应。换句话说,已找到了数据库但无法响应查询。

名称服务转换的转换操作选项

可以指示名称服务转换用下表中显示的两个操作之一来响应状态消息。

表 5  从名称服务转换对状态消息的响应
操作
说明
return
停止查找信息。
continue
尝试在下一个源中查找。

    此外,对于 TRYAGAIN 状态消息,可以定义以下操作:

  • forever-不限次数地重试当前源

  • n-将当前源额外重试 n

用于名称服务转换的缺省搜索条件

名称服务转换状态消息和操作选项的组合决定了搜索例程在每个步骤执行的操作。状态消息和操作选项的组合构成了搜索条件

对于每个源,该转换的缺省搜索条件是相同的。此列表包括了对多个搜索条件的描述。

  • SUCCESS=return.停止查找信息。使用已经找到的信息以继续。

  • UNAVAIL=continue.转到下一个名称服务转换源并继续搜索。如果该源是最后一个源或唯一的源,将返回 NOTFOUND 状态。

  • NOTFOUND=continue.转到下一个名称服务转换源并继续搜索。如果该源是最后一个源或唯一的源,将返回 NOTFOUND 状态。

  • TRYAGAIN=forever。无限制地搜索当前名称服务转换源。

  • TRYAGAIN=3。搜索当前源三次。在用完三次重试后,TRYAGAIN 操作转换为 continue ,并搜索下一个名称服务转换源。

可以通过使用前面列表中显示的 STATUS=action 语法显式指定某个其他条件来更改缺省搜索条件。有关过程,请参见如何为数据库配置搜索条件


注 -  名称服务转换中的查找是按照项目的列出顺序执行的。但是,口令更新将以相反的顺序执行,除非使用 passwd –r repository 命令另行指定了更新顺序。有关更多信息,请参见名称服务转换和口令信息

语法有误时该怎么办?

客户机库例程包含当没有在名称服务转换中定义特定的 SMF 属性或 default SMF 属性时或者该属性的语法不正确时使用的内建缺省项。通常,这些内建的缺省项只有 "files"。

auto_homeauto_master

auto_homeauto_master 表和映射的转换搜索条件组合成一个名为 automount 的类别。

timezone 和名称服务转换

timezone 表不使用名称服务转换,因此该表不包括在该转换的属性列表中。

名称服务转换中的 keyservpublickey


Caution

注意  -  在对名称服务转换进行更改后,您必须重新启动 keyserv 守护进程,更改才会生效。


只有当 keyserv 重新启动时,keyserv 守护进程才会读取名称服务转换中的 publickey 属性。如果您更改了名称服务转换属性,则在使用 svcadm refresh svc:/network/rpc/keyserv:default 重新启动 keyserv 守护进程之前,keyserv 不会注册这些更改。在更改属性并刷新 name-service/switch 服务之后,必须运行此命令以便将属性更改装入到 SMF 系统信息库中。