系统管理指南:IP 服务

网络数据库和 nsswitch.conf 文件

网络数据库是提供配置网络所需信息的文件。网络数据库如下所示:

如果网络分为多个子网,则在配置过程中,需要编辑 hosts 数据库和 netmasks 数据库。bootparamsethers 这两个数据库用于将系统配置为网络客户机。其余数据库由操作系统使用并很少需要编辑。

尽管 nsswitch.conf 文件不是网络数据库,但是您需要将此文件与相关的网络数据库一同进行配置。nsswitch.conf 指定要用于特定系统的名称服务: 本地文件、NIS、DNS 或 LDAP。

名称服务如何影响网络数据库

网络数据库的格式取决于您为网络选择的名称服务的类型。例如,hosts 数据库至少包含本地系统的主机名和 IPv4 地址以及直接连接到本地系统的所有网络接口的主机名和 IPv4 地址。但是,hosts 数据库也可以包含其他 IPv4 地址和主机名,具体取决于网络中的名称服务类型。

网络数据库按以下方式使用:


注 –

DNS 引导文件和数据文件不直接对应于网络数据库。


下图显示了这些名称服务使用 hosts 数据库的方式。

图 10–2 名称服务使用 hosts 数据库的方式

此图显示 DNS、NIS、NIS+ 名称服务和本地文件存储 hosts 数据库的不同方式。

下表列出了网络数据库及其对应的本地文件和 NIS 映射。


注 –

在 Solaris 10 11/06 之后的 Oracle Solaris : 发行版中,将删除 ipnodes 数据库。


表 10–1 网络数据库和对应的名称服务文件

网络数据库 

本地文件 

NIS 映射 

hosts

/etc/inet/hosts

hosts.byaddr hosts.byname

ipnodes

/etc/inet/ipnodes

ipnodes.byaddr ipnodes.byname

netmasks

/etc/inet/netmasks

netmasks.byaddr

ethers

/etc/ethers

ethers.byname ethers.byaddr

bootparams

/etc/bootparams

bootparams

protocols

/etc/inet/protocols

protocols.byname protocols.bynumber

services

/etc/inet/services

services.byname

networks

/etc/inet/networks

networks.byaddr networks.byname

本书介绍的是使用本地文件提供名称服务的网络所查看的网络数据库。

有关网络数据库在 NIS、DNS 和 LDAP 中的对应关系的信息,请参阅《系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)》

nsswitch.conf 文件

/etc/nsswitch.conf 文件定义了网络数据库的搜索顺序。基于在安装过程中指定的名称服务,Oracle Solaris : 安装程序为本地系统创建缺省的 /etc/nsswitch.conf 文件。如果选择了 "None" 选项,表示使用本地文件提供名称服务,生成的 nsswitch.conf 文件与下面的示例类似。


示例 10–5 使用文件提供名称服务的网络的 nsswitch.conf


# /etc/nsswitch.files:
#
# An example file that could be copied over to /etc/nsswitch.conf;
# it does not use any naming service.
#
# "hosts:" and "services:" in this file are used only if the
# /etc/netconfig file contains "switch.so" as a
# nametoaddr library for "inet" transports.

passwd:          files
group:           files
hosts:           files
networks:        files
protocols:       files
rpc:             files
ethers:          files
netmasks:        files
bootparams:      files
publickey:       files
# At present there isn't a 'files' backend for netgroup; the
# system will figure it out pretty quickly,
# and won't use netgroups at all.
netgroup:        files
automount:       files
aliases:         files
services:        files
sendmailvars:    files

nsswitch.conf(4) 手册页详细介绍了该文件。基本语法为:

database name-service-to-search

database 字段可以列出操作系统搜索的许多数据库类型之一。例如,此字段可以指示影响用户的数据库(例如 passwdaliases )或网络数据库。对于网络数据库,参数 name-service-to-search 的值可以是 filesnisnis+hosts 数据库也可以将 dns 作为要搜索的名称服务。也可以列出多个名称服务,例如 nis+files

示例 10–5 中,指示的唯一搜索选项为 files。因此,除了网络数据库信息之外,本地系统还从 /etc/etc/inet 目录中的文件获取安全信息和自动挂载信息。

更改 nsswitch.conf

/etc 目录包含由 Oracle Solaris : 安装程序创建的 nsswitch.conf 文件。此目录还包含以下名称服务的模板文件:

如果要从一个名称服务更改到另一个名称服务,可以将相应的模板复制到 nsswitch.conf,也可以有选择性地编辑 nsswitch.conf 文件,将缺省名称服务更改为搜索单个数据库。

例如,在运行 NIS 的网络中,可能必须更改网络客户机上的 nsswitch.conf 文件。bootparamsethers 数据库的搜索路径必须将 files 列为第一个选项,然后是 nis。以下示例说明了正确的搜索路径。


示例 10–6 运行 NIS 的网络中客户机的 nsswitch.conf


# /etc/nsswitch.conf:#
.
.
passwd:        files nis
group:         files nis

# consult /etc "files" only if nis is down.
hosts:         nis    [NOTFOUND=return] files
networks:      nis    [NOTFOUND=return] files
protocols:     nis    [NOTFOUND=return] files
rpc:           nis    [NOTFOUND=return] files
ethers:        files  [NOTFOUND=return] nis
netmasks:      nis    [NOTFOUND=return] files	
bootparams:    files  [NOTFOUND=return] nis
publickey:     nis    
netgroup:      nis

automount:     files nis
aliases:       files nis

# for efficient getservbyname() avoid nis
services:      files nis
sendmailvars:  files

有关名称服务转换器的完整详细信息,请参阅《系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)》

bootparams 数据库

bootparams 数据库包含配置为以网络客户机模式引导的系统所使用的信息。如果网络中具有网络客户机,则需要编辑此数据库。有关过程,请参见配置网络客户机。此数据库是根据 /etc/bootparams 文件中输入的信息生成的。

bootparams(4) 手册页介绍了此数据库的完整语法。基本语法为:

system-name file-key-server-name:pathname

对于每个网络客户机系统,该项可能包含以下信息: 客户机名称、关键字列表、服务器名称以及路径名。每项的第一个条目都是客户机系统的名称。第一个条目以外的所有其他条目都是可选的。以下是一个示例。


示例 10–7 bootparams 数据库


myclient   root=myserver : /nfsroot/myclient  \
swap=myserver : /nfsswap//myclient \
dump=myserver : /nfsdump/myclient

在此示例中,dump= 告知客户机主机不要查找转储文件。

bootparams 的通配符项

在大多数情况下,应在编辑 bootparams 数据库时使用通配符项以支持客户机。该项为:

*  root=server:/path dump=:

星号 (*) 通配符指示该项应用于 bootparams 数据库中所有未特别命名的客户机。

ethers 数据库

ethers 数据库是根据在 /etc/ethers 文件中输入的信息构建的。此数据库将主机名与其介质访问控制 (Media Access Control, MAC) 地址进行关联。仅当运行 RARP 守护进程时,才需要创建 ethers 数据库。也就是说,如果正在配置网络客户机,则需要创建此数据库。

RARP 使用该文件将 MAC 地址映射到 IP 地址。如果正在运行 RARP 守护进程 in.rarpd,则需要设置 ethers 文件并在运行此守护进程的所有主机上维护此文件,以便将所做的更改应用到网络中。

ethers(4) 手册页介绍了此数据库的完整语法。基本语法为:


MAC-address   hostname   #comment
MAC-address

主机的 MAC 地址

hostname

主机的正式名称

#comment

要附加到文件中某项的注释

设备制造商提供 MAC 地址。如果在系统引导过程中未显示 MAC 地址,请参见硬件手册中的相关帮助信息。

ethers 数据库添加项时,请确保主机名与 hosts(对于 Solaris 10 11/06 及早期发行版,为 ipnodes 数据库)中的主名称而不是别名相对应,如下所示。


示例 10–8 ethers 数据库中的项


8:0:20:1:40:16  fayoum
8:0:20:1:40:15  nubian 
8:0:20:1:40:7   sahara    # This is a comment
8:0:20:1:40:14  tenere 

其他网络数据库

很少需要编辑其余的网络数据库。

networks 数据库

networks 数据库将网络名称与网络号相关联,允许某些应用程序使用和显示网络名称而不是网络号。networks 数据库基于 /etc/inet/networks 文件中的信息。此文件包含通过路由器与您网络连接的所有网络的名称。

Oracle Solaris : 安装程序配置初始 networks 数据库。但是,如果在现有网络拓扑中添加了新网络,必须更新此数据库。

networks(4) 手册页介绍了 /etc/inet/networks 的完整语法。基本格式为:


network-name  network-number  nickname(s)  #comment
network-name

网络的正式名称

network-number

由 ISP 或 Internet 注册机构指定的编号

nickname

用于识别网络的任何其他名称

#comment

要附加到文件中某项的注释

您必须对 networks 文件进行维护。netstat 程序使用此数据库中的信息生成状态表。

以下是一个 /etc/networks 文件样例。


示例 10–9 /etc/networks 文件


#ident	"@(#)networks	1.4	92/07/14 SMI"	/* SVr4.0 1.1	*/
#
# The networks file associates Internet Protocol (IP) network
# numbers with network names. The format of this file is:
#
# 	network-name		 	 network-number		 	 nicnames . . .

# The loopback network is used only for intra-machine communication
loopback		 	 127

#
# Internet networks
#
arpanet     10	   arpa  # Historical
#
# local networks

eng   192.168.9 #engineering
acc   192.168.5 #accounting
prog  192.168.2 #programming

protocols 数据库

protocols 数据库列出了在系统上安装的 TCP/IP 协议及其协议编号。Oracle Solaris : 安装程序自动创建此数据库。此文件很少需要进行管理。

protocols(4) 手册页介绍了此数据库的语法。以下是一个 /etc/inet/protocols 文件的示例。


示例 10–10 /etc/inet/protocols 文件


#
# Internet (IP) protocols
#
ip    0   IP    # internet protocol, pseudo protocol number
icmp  1   ICMP  # internet control message protocol
tcp   6   TCP   # transmission control protocol
udp  17   UDP   # user datagram protocol

services 数据库

services 数据库列出了 TCP 和 UDP 服务的名称及其已知的端口号。此数据库由调用网络服务的程序使用。在 Oracle Solaris : 安装过程中自动创建 services 数据库。通常,此数据库不需要进行任何管理。

services(4) 手册页介绍了完整的语法信息。以下是从典型的 /etc/inet/services 文件中摘录的内容。


示例 10–11 /etc/inet/services 文件


#
# Network services
#
echo      7/udp
echo      7/tcp
echo      7/sctp6
discard   9/udp     sink null
discard   11/tcp
daytime   13/udp
daytime   13/tcp
netstat   15/tcp
ftp-data  20/tcp
ftp       21/tcp
telnet    23/tcp
time      37/tcp    timeserver
time      37/udp    timeserver
name      42/udp    nameserver
whois     43/tcp    nickname