名称服务转换是一项可配置的选择服务,管理员可通过它来指定为每种类型的网络信息使用的名称信息服务或源。服务被称为一个数据库。名称服务转换由调用任意 getXbyY() 接口(如以下接口)的客户机应用程序使用。
每个系统在 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 的角度来看,这些数据库均视为服务的可配置属性。
|
此外,名称服务转换中的 default 属性定义了当未定义源字符串时用于任何数据库的源字符串。此属性的值设置为 files,表示所有数据库及其信息都是在 /etc 目录本地发现的。您可以根据表 3 中列出的源为 default 属性设置不同配置。有关过程,请参见如何为所有命名数据库更改源。
通过 default 属性,您可以配置通用于数据库的源,而不是配置每个数据库的源。
下表介绍了在名称服务转换中可以为上面列出的数据库列出的源的种类。
|
以下搜索条件格式可用来选择一个或多个信息源,并可用来指定源的使用顺序。
单个源-如果某个信息类型只有一个源(例如 files),则使用名称服务转换的搜索例程将仅在该源中搜索信息。如果该例程找到了此信息,将返回 success 状态消息。如果该例程未找到此信息,则会停止搜索并返回不同的状态消息。不同的例程处理状态消息的方式也不同。
多个源-如果数据库中针对某个给定的信息类型包含了多个源,则名称服务转换会指示搜索例程在列出的第一个源中搜索。如果该例程找到了此信息,将返回 success 状态消息。如果该例程未在第一个源中找到此信息,将尝试在下一个源中进行搜索。该例程将依次搜索所有的源,直到找到此信息或者该例程由于指定了 return 而停止。如果在搜索了列出的所有源之后仍未找到此信息,该例程将停止搜索并返回 non-success 状态消息。
缺省情况下,在 Oracle Solaris 11 发行版中,第一个源是 files。当所列出的下一个源不可用时,此配置可防止系统挂起。
如果某个例程找到了此信息,则该例程将返回 success 状态消息。如果该例程未找到此信息,则会返回下面的三个错误状态消息之一。下表列出了可能的状态消息。
|
可以指示名称服务转换用下表中显示的两个操作之一来响应状态消息。
|
此外,对于 TRYAGAIN 状态消息,可以定义以下操作:
forever-不限次数地重试当前源
n-将当前源额外重试 n 次
名称服务转换状态消息和操作选项的组合决定了搜索例程在每个步骤执行的操作。状态消息和操作选项的组合构成了搜索条件。
对于每个源,该转换的缺省搜索条件是相同的。此列表包括了对多个搜索条件的描述。
UNAVAIL=continue.转到下一个名称服务转换源并继续搜索。如果该源是最后一个源或唯一的源,将返回 NOTFOUND 状态。
NOTFOUND=continue.转到下一个名称服务转换源并继续搜索。如果该源是最后一个源或唯一的源,将返回 NOTFOUND 状态。
TRYAGAIN=3。搜索当前源三次。在用完三次重试后,TRYAGAIN 操作转换为 continue ,并搜索下一个名称服务转换源。
可以通过使用前面列表中显示的 STATUS=action 语法显式指定某个其他条件来更改缺省搜索条件。有关过程,请参见如何为数据库配置搜索条件。
客户机库例程包含当没有在名称服务转换中定义特定的 SMF 属性或 default SMF 属性时或者该属性的语法不正确时使用的内建缺省项。通常,这些内建的缺省项只有 "files"。
auto_home 和 auto_master 表和映射的转换搜索条件组合成一个名为 automount 的类别。
timezone 表不使用名称服务转换,因此该表不包括在该转换的属性列表中。
只有当 keyserv 重新启动时,keyserv 守护进程才会读取名称服务转换中的 publickey 属性。如果您更改了名称服务转换属性,则在使用 svcadm refresh svc:/network/rpc/keyserv:default 重新启动 keyserv 守护进程之前,keyserv 不会注册这些更改。在更改属性并刷新 name-service/switch 服务之后,必须运行此命令以便将属性更改装入到 SMF 系统信息库中。