系统管理指南:IP 服务

第 10 章 TCP/IP 和 IPv4 详解(参考)

本章提供有关网络配置文件的 TCP/IP 网络参考信息,包括文件项的类型、用途和格式,同时还详细介绍了现有的网络数据库。本章还介绍如何基于已定义的网络分类和子网号衍生得到 IPv4 地址结构。

本章包含以下信息:

TCP/IP 和 IPv4 中的新增功能详解

在 Solaris 10 7/07 中,/etc/inet/ipnodes 文件已过时。只能对早期 Oracle Solaris 10 发行版使用 /etc/inet/ipnodes,如以下各个过程中所述。

TCP/IP 配置文件

网络中的每个系统都可以从以下 TCP/IP 配置文件和网络数据库中获取其 TCP/IP 配置信息:

Oracle Solaris : 安装程序在安装过程中创建上述文件。也可以按照本节中的说明手动编辑这些文件。hostsnetmasks 数据库是两个网络数据库,可供 Oracle Solaris : 网络上可用的名称服务读取。网络数据库和 nsswitch.conf 文件详细介绍了网络数据库的概念。对于 Solaris 10 11/06 及早期发行版,有关 ipnodes 文件的信息,请参见ipnodes 数据库

/etc/hostname.interface 文件

此文件定义了本地主机上的物理网络接口。本地系统上至少应该有一个 /etc/hostname.interface 文件。Oracle Solaris : 安装程序为安装过程中找到的第一个接口创建 /etc/hostname.interface 文件。此接口通常具有最低的设备编号(例如 eri0),并称为主网络接口。如果安装程序找到其他接口,您也可以在安装过程中对这些接口进行配置(可选)。


注 –

如果为同一接口创建备用主机名文件,则备用文件也必须遵循命名格式 hostname.[0-9]*,如 hostname.qfe0.a123。诸如 hostname.qfe0.bakhostname.qfe0.old 之类的名称无效,且会在系统引导期间被脚本忽略。

也请注意,一个给定的接口只能有一个相应的主机名文件。如果用有效的文件名为接口创建一个备用主机名文件,例如 /etc/hostname.qfe/etc/hostname.qfe.a123,则引导脚本会尝试同时引用这两个主机名文件的内容来进行配置,因而会产生错误。要避免这些错误,请为给定配置中不使用的主机名文件使用无效的文件名。


如果在安装之后为系统添加新的网络接口,则必须为此接口创建 /etc/hostname.interface 文件,如如何在安装系统后配置物理接口中所述。另外,为使 Oracle Solaris : 软件识别并使用新的网络接口,需要将此接口的设备驱动程序加载到相应的目录中。有关相应的 interface 名称和设备驱动程序的说明,请参阅新网络接口附带的文档。

基本的 /etc/hostname.interface 文件包含一项内容: 与此网络接口关联的主机名或 IPv4 地址。IPv4 地址可用传统的点分十进制格式或 CIDR 表示法表示。如果在 /etc/hostname.interface 文件中使用主机名,则 /etc/inet/hosts 文件也必须包含此主机名。

例如,假定 smc0 是称为 tenere 的系统的主网络接口。/etc/hostname.smc0 文件所包含的项可以是以点分十进制或 CIDR 表示法表示的 IPv4 地址,也可以是主机名 tenere


注 –

IPv6 使用 /etc/hostname6.interface 文件定义网络接口。有关更多信息,请参阅IPv6 接口配置文件


/etc/nodename 文件

此文件应该包含一项内容, 即本地系统的主机名。例如,在 timbuktu 系统上,/etc/nodename 文件将会包含 timbuktu 项。

/etc/defaultdomain 文件

此文件应该包含一项内容, 即本地主机网络所属的管理域的全限定域名。可以将此名称提供给 Oracle Solaris : 安装程序或在以后编辑此文件。有关网络域的更多信息,请参阅《系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)》

/etc/defaultrouter 文件

对于每个直接连接到网络的路由器,此文件可以包含一个对应项。该项应该是作为网络间路由器的网络接口的名称。/etc/defaultrouter 文件的存在表明系统是支持静态路由的。

hosts 数据库

hosts 数据库包含网络中各系统的 IPv4 地址和主机名。如果使用 NIS 或 DNS 名称服务,或者使用 LDAP 目录服务,则 hosts 数据库在专门存储主机信息的数据库中进行维护。例如,在运行 NIS 的网络中,hosts 数据库在 hostsbyname 文件中进行维护。

如果使用本地文件提供名称服务,则 hosts 数据库将在 /etc/inet/hosts 文件中进行维护。此文件包含主网络接口的主机名和 IPv4 地址、连接到系统的其他网络接口的主机名和 IPv4 地址以及系统必须检查的其他网络地址。


注 –

为了与基于 BSD 的操作系统兼容,/etc/hosts 文件是指向 /etc/inet/hosts 的符号链接。


/etc/inet/hosts 文件格式

/etc/inet/hosts 文件使用以下基本语法。有关完整的语法信息,请参阅 hosts(4) 手册页。

IPv4-address hostname [nicknames] [#comment]

IPv4-address

包含本地主机必须识别的每个接口的 IPv4 地址。

hostname

包含设置期间指定给系统的主机名,以及指定给本地主机必须识别的其他网络接口的主机名。

[nickname]

包含主机别名的可选字段。

[#comment]

可选的注释字段。

初始 /etc/inet/hosts 文件

在系统上运行 Oracle Solaris : 安装程序时,该程序将配置初始 /etc/inet/hosts 文件。此文件包含本地主机所需的最少数目的项。其中包括回送地址、主机 IPv4 地址以及主机名。

例如,Oracle Solaris : 安装程序可能为图 5–1 中所示的 tenere 系统创建以下 /etc/inet/hosts 文件:


示例 10–1 系统 tenere/etc/inet/hosts 文件


127.0.0.1     localhost         loghost    #loopback address
192.168.200.3   tenere                      #host name

回送地址

示例 10–1 中,IPv4 地址 127.0.0.1回送地址。回送地址是本地系统用来允许进程间通信的保留网络接口。主机可使用此地址将数据包发送给自己。ifconfig 命令使用回送地址进行配置和测试,如使用 ifconfig 命令监视接口配置中所述。TCP/IP 网络中的每个系统都必须使用 IP 地址 127.0.0.1 作为本地主机的 IPv4 回送地址。

主机名

IPv4 地址 192.168.200.1 和名称 tenere 是本地系统的地址和主机名。它们指定给系统的主网络接口。

多个网络接口

一些系统具有多个网络接口,因为它们是路由器或者多宿主主机。每个连接到系统的网络接口都需要有自己的 IP 地址以及与其关联的名称。在安装过程中,必须配置主网络接口。安装时,如果特定系统具有多个接口,Oracle Solaris : 安装程序会针对其他接口对您进行提示。此时,您可以选择性地配置一个或多个其他接口,或者以后手动进行配置。

安装 Oracle Solaris : 后,可以通过将接口信息添加到系统的 /etc/inet/hosts 文件,来为路由器或多宿主主机配置其他接口。有关配置路由器和多宿主主机的更多信息,请参阅配置 IPv4 路由器配置多宿主主机

示例 10–2 显示了图 5–1 中所示的系统 timbuktu/etc/inet/hosts 文件。


示例 10–2 系统 timbuktu/etc/inet/hosts 文件


127.0.0.1        localhost     loghost
192.168.200.70   timbuktu      #This is the local host name
192.168.201.10   timbuktu-201  #Interface to network 192.9.201

通过这两个接口,timbuktu 作为路由器连接网络 192.168.200192.168.201

名称服务如何影响 hosts 数据库

NIS 和 DNS 名称服务以及 LDAP 目录服务在一台或多台服务器上维护主机名和地址。这些服务器维护 hosts 数据库,该数据库包含服务器所在的网络中每台主机和路由器(如果适用)的信息。有关这些服务的更多信息,请参阅《系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)》

本地文件何时提供名称服务

在使用本地文件提供名称服务的网络中,以本地文件模式运行的系统将查询各自的 /etc/inet/hosts 文件,以查找网络中其他系统的 IPv4 地址和主机名。因此,这些系统的 /etc/inet/hosts 文件必须包含以下内容:

图 10–1 显示了系统 tenere/etc/inet/hosts 文件。此系统以本地文件模式运行。请注意,此文件包含 192.9.200 网络中每个系统的 IPv4 地址和主机名。此文件还包含接口名称 timbuktu-201 及其对应的 IPv4 地址。此接口将 192.9.200 网络连接到 192.9.201 网络。

配置为网络客户机的系统对其回送地址和 IPv4 地址使用本地 /etc/inet/hosts 文件。

图 10–1 以本地文件模式运行的系统的 /etc/inet/hosts 文件

显示以本地文件模式运行的系统的主机文件可能的样式。

ipnodes 数据库


注 –

在 Solaris 10 11/06 之后的发行版中,不再包括 ipnodes 数据库。在这些后续发行版中,ipnodes 的 IPv6 功能迁移到 hosts 数据库中。


/etc/inet/ipnodes 文件既可以存储 IPv4 地址,又可以存储 IPv6 地址。此外,也可以存储以传统的点分十进制或 CIDR 表示法表示的 IPv4 地址。此文件作为将主机名与其 IPv4 和 IPv6 地址进行关联的本地数据库。不要将主机名及其地址存储在静态文件中,例如 /etc/inet/ipnodes。但是,为了进行测试,可以按照在 /etc/inet/hosts 中存储 IPv4 地址的方式在文件中存储 IPv6 地址。ipnodes 文件与 hosts 文件使用相同的格式约定。有关 /etc/inet/hosts 的更多信息,请参阅hosts 数据库。有关 ipnodes 文件的说明,请参见 ipnodes(4) 手册页。

启用了 IPv6 的应用程序使用 /etc/inet/ipnodes 数据库。只包含 IPv4 地址的现有 /etc/hosts 数据库保持不变,以利于现有应用程序的运行。如果 ipnodes 数据库不存在,则启用了 IPv6 的应用程序使用现有的 hosts 数据库。


注 –

如果需要添加地址,必须将 IPv4 地址同时添加到 hostsipnodes 文件中,而只需将 IPv6 地址添加到 ipnodes 文件中。



示例 10–3 /etc/inet/ipnodes 文件

必须按主机名对主机名地址进行分组,如以下示例所示。


#
# Internet IPv6 host table
# with both IPv4 and IPv6 addresses
#
::1     localhost
2001:db8:3b4c:114:a00:20ff:fe78:f37c   farsite.com farsite farsite-v6
fe80::a00:20ff:fe78:f37c     farsite-11.com farsitell
192.168.85.87   				 farsite.com farsite farsite-v4
2001:db8:86c0:32:a00:20ff:fe87:9aba   nearsite.com nearsite nearsite-v6
fe80::a00:20ff:fe87:9aba     nearsite-11.com nearsitell
10.0.0.177  				 nearsite.com nearsite nearsite-v4 loghost

netmasks 数据库

当您在网络中设置了子网划分时,才需要在配置网络时编辑 netmasks 数据库。netmasks 数据库由网络及其关联的子网掩码的列表组成。


注 –

创建子网时,每个新网络必须是单独的物理网络。不能在单个物理网络中应用子网划分。


什么是子网划分?

在大型互联网络中,子网划分是一种最大程度地利用有限的 32 位 IPv4 地址空间并减小路由表大小的方法。借助地址类,子网划分提供了一种将部分主机地址空间分配给网络地址的方法,从而使您具有更多网络。分配给新网络地址的主机地址空间部分称为子网号

除了更有效地利用 IPv4 地址空间之外,子网划分还具有多种管理方面的优势。随着网络数量的增长,路由过程将变得非常复杂。例如,某个小型组织可能为每个本地网络分配了一个 C 类网络号。随着组织的发展,管理大量不同的网络号可能变得异常复杂。一个更好的解决办法是将少量 B 类网络号分配给组织中的各个主要部门。例如,可以为工程部分配一个 B 类网络,为业务部分配一个 B 类网络,等等。然后,使用通过子网划分获得的附加网络号,将每一个 B 类网络划分为多个附加网络。这种划分方式还可以减少必须在路由器间传送的路由信息量。

为 IPv4 地址创建网络掩码

在进行子网划分的过程中,需要选择一个网络范围的网络掩码。网络掩码确定主机地址空间中有多少位以及哪些位表示子网号,有多少位以及哪些位表示主机号。请记住,完整的 IPv4 地址由 32 位组成。其中最多可用 24 位、最少可用 8 位表示主机地址空间,具体取决于地址类。网络掩码是在 netmasks 数据库中指定的。

如果计划使用子网,必须在配置 TCP/IP 之前确定网络掩码。如果计划将安装操作系统作为网络配置的一部分,Oracle Solaris : 安装程序将要求您提供网络的网络掩码。

32 位 IP 地址由网络部分和主机部分组成,如设计 IPv4 寻址方案中所述。32 位分为 4 个字节。根据网络类的不同,将每个字节分别指定给网络号或主机号。

例如,在 B 类 IPv4 地址中,左边的 2 个字节指定给网络号,而右边的 2 个字节指定给主机号。在 B 类 IPv4 地址 172.16.10 中,您可以将右边的 2 个字节指定给主机。

如果要实现子网划分,您需要将指定给主机号的字节中的某些位应用到子网地址。例如,16 位的主机地址空间可为 65,534 台主机提供地址。如果将第三个字节应用到子网地址,第四个字节应用到主机地址,则可以为最多 254 个网络提供地址,其中每个网络中最多具有 254 台主机。

主机地址字节中的哪些位应用到子网地址及主机地址是由子网掩码确定的。使用子网掩码从用作子网地址的字节中选择位。尽管网络掩码位必须是连续的,但它们不需要与字节边界对齐。

通过使用按位逻辑 AND 运算符,可以将网络掩码应用到 IPv4 地址。此操作将选出地址的网络号和子网号位置。

可以采用二进制表示法来说明网络掩码。可以使用计算器进行二进制到十进制的转换。以下示例显示了网络掩码的十进制格式和二进制格式。

如果将网络掩码 255.255.255.0 应用到 IPv4 地址 172.16.41.101,则结果为 IPv4 地址 172.16.41.0

172.16.41.101 & 255.255.255.0 = 172.16.41.0

此操作的二进制格式如下所示:

10000001.10010000.00101001.01100101(IPv4 地址)

11111111.11111111.11111111.00000000(网络掩码)进行 AND 操作

现在,系统查找网络号 172.16.41,而不是 172.16。如果您的网络号是 172.16.41,则此编号便是系统检查并找到的编号。因为最多可以为 IPv4 地址空间的第三个字节指定 254 个值,所以通过子网划分可以为 254 个网络创建地址空间,之前地址空间只可用于一个网络。

如果只需要为两个附加网络提供地址空间,则可以使用以下子网掩码:

255.255.192.0

此网络掩码将生成以下结果:

11111111.11111111.1100000.00000000

此结果仍然保留 14 位,供主机地址使用。因为所有 0 和 1 都是保留的,所以必须至少为主机号保留 2 位。

/etc/inet/netmasks 文件

如果您的网络运行 NIS 或 LDAP,则提供这些名称服务的服务器将维护 netmasks 数据库。对于使用本地文件提供名称服务的网络,此信息在 /etc/inet/netmasks 文件中维护。


注 –

为了与基于 BSD 的操作系统兼容,/etc/netmasks 文件是指向 /etc/inet/netmasks 的符号链接。


以下示例显示 B 类网络的 /etc/inet/netmasks 文件。


示例 10–4 B 类网络的 /etc/inet/netmasks 文件。


 # The netmasks file associates Internet Protocol (IPv4) address
 # masks with IPv4 network numbers.
 #
 # 	network-number	netmask
 #
 # Both the network-number and the netmasks are specified in
 # “decimal dot” notation, e.g:
 #
 #        128.32.0.0   255.255.255.0
 192.168.0.0  255.255.255.0

如果 /etc/netmasks 文件不存在,请使用文本编辑器创建此文件。使用以下语法:

network-number	netmask-number

有关完整的详细信息,请参阅 netmasks(4) 手册页。

创建网络掩码号时,在 /etc/inet/netmasks 中键入由 ISP 或 Internet 注册机构指定的网络号(不是子网号)和网络掩码号。每个子网掩码应单占一行。

例如:


128.78.0.0	    255.255.248.0

您还可以在 /etc/inet/hosts 文件中键入网络号的符号名称。然后,可以使用这些网络名称代替网络号作为命令参数。

inetd Internet 服务守护进程

inetd 守护进程在系统引导时将启动 Internet 标准服务,并可以在系统运行时重新启动服务。使用服务管理工具 (Service Management Facility, SMF) 可以修改标准 Internet 服务或由 inetd 守护进程启动其他服务。

使用以下 SMF 命令可以管理由 inetd 启动的服务:

svcadm

对服务的管理性操作,例如启用、禁用或重新启动。有关详细信息,请参阅 svcadm(1M) 手册页。

svcs

查询服务状态。有关详细信息,请参阅 svcs(1) 手册页。

inetadm

显示和修改服务的属性。有关详细信息,请参阅 inetadm(1M) 手册页。

inetadm 配置文件中针对特定服务的 proto 字段值指示该服务所基于的传输层协议。如果该服务只适用于 IPv4,则 proto 字段必须指定为 tcpudpsctp

网络数据库和 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

Oracle Solaris : 中的路由协议

本节介绍了 Oracle Solaris 10 中支持的两个路由协议:路由信息协议 (Routing Information Protocol, RIP) 和 ICMP 路由器搜索 (Router Discovery, RDISC)。RIP 和 RDISC 都是标准 TCP/IP 协议。有关 Oracle Solaris 10 中可用的路由协议的完整列表,请参阅表 5–1表 5–2

路由信息协议 (Routing Information Protocol, RIP)

RIP 由系统引导时自动启动的路由选择守护进程 in.routed 实现。如果在指定了 s 选项的情况下 in.routed 在路由器上运行,它将使用一个可到达每个可访问网络的路由填充内核路由表,并通过所有网络接口通告“可访问性”。

如果在指定了 q 选项的情况下 in.routed 在主机上运行,它将提取路由信息,但不会通告可访问性。在主机上,可以使用两种方法提取路由信息:

ICMP 路由器搜索 (Router Discovery, RDISC) 协议

主机使用 RDISC 从路由器获取路由信息。因此,当主机运行 RDISC 时,路由器也必须运行其他协议(例如 RIP)来交换路由器信息。

RDISC 由应该运行在路由器和主机上的 in.routed 实现。在主机上,in.routed 使用 RDISC 从通过 RDISC 通告自身状态的路由器中搜索缺省路由。在路由器上,in.routed 使用 RDISC 将缺省路由通告给直接相连的网络中的主机。请参见 in.routed(1M) 手册页和 gateways(4) 手册页。

网络类


注 –

虽然很多旧网络仍然是基于网络类的,但是 IANA 不再提供基于类的网络号。


本节详细介绍了 IPv4 网络类。每个类以不同的方式使用 32 位 IPv4 地址空间,为网络地址部分提供或多或少的位。这些类是 A 类、B 类和 C 类。

A 类网络号

A 类网络号使用 IPv4 地址的前 8 位作为其“网络部分”。其余的 24 位包含 IPv4 地址的主机部分,如下图所示。

图 10–3 A 类地址中的字节分配

图中显示 0-7 位是网络部分,而其余的 24 位是 32 位 A 类 IPv4 地址的主机部分。

为 A 类网络号的第一个字节指定的值应该介于 0–127 范围内。以 IPv4 地址 75.4.10.4 为例。第一个字节中的值 75 指示主机位于 A 类网络中。其余字节 4.10.4 构成了主机地址。只有 A 类编号的第一个字节已向 IANA 注册。其余三个字节的使用完全由网络号的属主决定。只有 127 个 A 类网络。每个 A 类网络都可以接纳最多 16,777,214 台主机。

B 类网络号

B 类网络号将 16 位用于网络号,并将 16 位用于主机号。B 类网络号的第一个字节介于 128–191 的范围内。在编号 172.16.50.56 中,前两个字节 172.16 已向 IANA 注册,它们构成了网络地址。最后两个字节 50.56 表示主机地址,由网络号的属主根据自己的判断指定。下图说明了一个 B 类地址。

图 10–4 B 类地址中的字节分配

图中显示 0-15 位是网络部分,其余的 16 位是主机部分的 32 位 B 类 IPv4 地址。

B 类通常指定给网络中具有许多主机的组织。

C 类网络号

C 类网络号将 24 位用于网络号,并将 8 位用于主机号。C 类网络号适用于主机很少的网络-最多 254 台。C 类网络号占用 IPv4 地址的前三个字节。只有第四字节由网络属主根据自己的判断指定。下图说明了 C 类地址中的字节。

图 10–5 C 类地址中的字节分配

图中显示 0-23 位是网络部分,其余的 8 位是主机部分的 32 位 C 类 IPv4 地址。

C 类网络号的第一个字节介于 192–223 范围内。第二和第三个字节分别介于 1–255 范围内。192.168.2.5 是一个典型的 C 类地址。前三个字节 192.168.2 构成了网络号。最后一个字节 5 是主机号。