系统管理指南:IP 服务

第 2 部分 TCP/IP 管理

本部分介绍配置、管理 TCP/IP 网络以及对其进行疑难解答的任务和概念性信息。

第 2 章 规划 TCP/IP 网络(任务)

本章介绍了以有组织的成本效益方式创建网络时必须解决的问题。解决了这些问题之后,即可在将来配置和管理网络时制定一个网络计划。

本章包含以下信息:

有关配置网络任务的信息,请参阅第 5 章

网络规划(任务列表)

下表列出了各种配置网络的任务。此表中包含对各项任务要完成的工作的说明,以及当前文档中详细介绍用于执行任务的特定步骤的章节。

任务 

说明 

参考 

1. 规划您的硬件要求和网络拓扑 

确定所需的设备类型以及此设备在站点上的布局。 

2. 为网络获取一个已注册的 IP 地址 

如果计划与本地网络之外的网络进行通信(例如通过 Internet),则您的网络必须具有一个唯一的 IP 地址。 

请参阅获取网络的 IP 号

3. 基于 IPv4 网络前缀或 IPv6 站点前缀为系统设计一个 IP 地址寻址方案。 

确定如何在站点上部署地址。 

请参阅设计 IPv4 寻址方案准备 IPv6 寻址计划

4. 创建一个包含网络中所有计算机 IP 地址和主机名的列表。  

使用此列表可生成网络数据库 

请参阅网络数据库

5. 确定要在网络中使用的名称服务。  

决定是使用 NIS、LDAP、DNS,还是使用本地 /etc 目录中的网络数据库。

请参阅选择名称服务和目录服务

6. 在适用于网络的情况下建立管理细分 

决定站点是否需要将网络划分为多次管理细分 

请参阅管理细分

7. 在进行网络设计时确定路由器的放置位置。 

如果网络足够大而需要路由器,请创建一个支持这些路由器的网络拓扑。 

请参阅为网络规划路由器

8. 为子网制定策略(如果需要)。 

您可能需要创建子网,以便管理 IP 地址空间或为用户提供更多 IP 地址。 

有关 IPv4 子网规划的信息,请参阅什么是子网划分?

有关 IPv6 子网规划的信息,请参阅为子网制定编号方案

确定网络硬件

设计网络时,您必须确定最能满足组织需求的网络类型。必须制定的一些规划决策涉及以下网络硬件:

根据以上因素,即可确定局域网大小。


注 –

如何规划网络硬件不在本手册的介绍范围内。有关帮助信息,请参阅硬件附带的手册。


确定网络的 IP 地址寻址格式

您希望支持的系统数量会影响网络的配置方式。您的组织可能需要由某一建筑的同一楼层中几十个独立系统所组成的一个小型网络。或者,您可能需要设置一个由分布在多个建筑中的 1,000 个以上系统所组成的网络。此设置要求您进一步将网络划分为多个称为子网的分支。

规划网络寻址方案时,请考虑以下因素:

自 1990 年以来,Internet 在全球范围内的增长已经导致可用的 IP 地址不足。为了改善这种状况,Internet 工程任务组 (Internet Engineering Task Force, IETF) 开发了许多备用 IP 地址寻址方案。现在使用的 IP 地址类型包括以下几种:

如果您的组织为网络指定了多个 IP 地址或者使用子网,请在组织内部指定一个中心权威机构来指定网络 IP 地址。此权威机构应该维持对已指定的网络 IP 地址池的控制,并且根据需要指定网络、子网和主机地址。为了避免出现问题,请确保在组织中不存在重复或随机的网络号。

IPv4 地址

这些 32 位地址是针对 TCP/IP 设计的原始 IP 地址寻址格式。最初,IP 网络具有 A、B 和 C 三类。指定给网络的网络号反映了这种类指定并加上 8 位或更多位来表示主机。基于类的 IPv4 地址要求为网络号配置网络掩码。此外,要为本地网络中的系统提供更多地址,通常还需要将这些地址划分为多个子网。

现在,IP 地址称为 IPv4 地址。虽然不能再从 ISP 获取基于类的 IPv4 网络号,但是很多现有网络仍拥有这些网络号。有关管理 IPv4 地址的更多信息,请参阅设计 IPv4 寻址方案

CIDR 格式的 IPv4 地址

IETF 开发了无类域间路由 (Classless Inter-Domain Routing, CIDR),作为在短期到中期内解决 IPv4 地址不足的情况的方法。此外,还设计了 CIDR 格式作为解决全局 Internet 路由表容量匮乏状况的修正方法。使用 CIDR 表示的 IPv4 地址长度为 32 位,并且具有相同的点分十进制格式。但是,CIDR 在最右边的位之后添加了一个前缀标识,用于定义 IPv4 地址的网络部分。有关更多信息,请参阅设计 CIDR IPv4 寻址方案

DHCP 地址

通过动态主机配置协议 (Dynamic Host Configuration Protocol, DHCP),系统可从 DHCP 服务器接收配置信息,其中包括作为引导进程的一部分的 IP 地址。DHCP 服务器维护 IP 地址池,通过该地址池可为 DHCP 客户机指定地址。使用 DHCP 的站点所用的 IP 地址池小于为所有客户机指定永久性 IP 地址时所需的 IP 地址池。您可以设置 Oracle Solaris : DHCP 服务来管理站点的 IP 地址或部分地址。有关更多信息,请参阅第 12 章

IPv6 地址

IETF 部署了 128 位 IPv6 地址作为可用的 IPv4 地址不足的长期解决方案。IPv6 地址提供的地址空间比 IPv4 可用的地址空间更大。Oracle Solaris : 通过使用双堆栈 TCP/IP,可在同一主机上支持 IPv4 和 IPv6 寻址。与 CIDR 格式的 IPv4 地址一样,IPv6 地址也没有网络类或网络掩码的概念。采用 CIDR 格式时,IPv6 地址会使用前缀指定定义站点网络的地址部分。有关 IPv6 的介绍,请参阅IPv6 寻址概述

专用地址和文档前缀

IANA 保留了用于专用网络的一个 IPv4 地址块和一个 IPv6 站点前缀。您可以在一个企业网络内的系统上部署这些地址,但是请注意,不能在 Internet 中路由具有专用地址的包。有关专用地址的更多信息,请参阅使用专用 IPv4 地址


注 –

用于文档的专用 IPv4 地址也会保留。本书中的示例使用专用 IPv4 地址和保留的 IPv6 文档前缀。


获取网络的 IP 号

IPv4 网络通过 IPv4 网络号加上网络的掩码或网络掩码的组合来定义。IPv6 网络通过其站点前缀定义;如果划分为子网,则通过其子网前缀定义。

除非将网络规划为永久性专用网络,否则本地用户很可能需要在本地网络之外进行通信。因此,必须从适当的组织为网络获取一个已注册的 IP 号,然后才能与外部进行通信。此地址会成为 IPv4 寻址方案的网络号或 IPv6 寻址方案的站点前缀。

Internet 服务提供商可为网络提供 IP 地址,其定价基于不同的服务级别。了解各个 ISP 可确定哪一个提供商可提供最好的网络服务。ISP 通常向企业提供动态分配的地址或静态 IP 地址。某些 ISP 同时提供 IPv4 和 IPv6 地址。

如果您的站点是一个 ISP,则可通过您语言环境的 Internet 注册机构 (Internet Registry, IR) 获取用户的 IP 地址块。Internet 编号分配机构 (Internet Assigned Numbers Authority, IANA) 最终负责将注册的 IP 地址授予世界各地的 IR。每个 IR 都拥有由其提供服务的语言环境的注册信息和模板。有关 IANA 及其 IR 的信息,请参阅 IANA's IP Address Service page


注 –

请勿随意为网络指定 IP 地址,即使当前未将网络连接到外部 TCP/IP 网络也是如此。相反,应按照使用专用 IPv4 地址中所述使用专用地址。


设计 IPv4 寻址方案


注 –

有关 IPv6 地址规划的信息,请参阅准备 IPv6 寻址计划


本节提供了 IPv4 地址的概述,以帮助您制定一个 IPv4 寻址计划。有关 IPv6 地址的信息,请参见IPv6 寻址概述。有关 DHCP 地址的信息,请参见第 12 章

每个基于 IPv4 的网络都必须包含以下内容:

IPv4 地址是在系统上唯一标识一个网络接口的 32 位数字,如IP 地址如何应用于网络接口中所述。IPv4 地址以十进制数字表示,分为四个用句点分隔的 8 位字段。每个 8 位字段表示 IPv4 地址的一个字节。这种表示 IPv4 地址字节的形式通常称为点分十进制格式

下图显示了 IPv4 地址 172.16.50.56 的组成部分。

图 2–1 IPv4 地址格式

该图将 IPv4 地址分为两部分:网络部分和网络主机,具体将在下文中介绍。

172.16

注册的 IPv4 网络号。在基于类的 IPv4 表示法中,此编号还定义了 IP 网络类,在本示例中为 B 类,应已通过 IANA 进行了注册。

50.56

IPv4 地址的主机部分。主机部分唯一标识网络系统上的一个接口。请注意,对于本地网络中的每个接口,地址的网络部分相同,但是主机部分一定不同。

如果计划将基于类的 IPv4 网络划分为多个子网,则需要定义子网掩码或网络掩码,如netmasks 数据库所述。

以下示例说明了 CIDR 格式的地址 192.168.3.56/22

图 2–2 CIDR 格式的 IPv4 地址

该图显示了 CIDR 地址的三个部分:网络部分、主机部分和网络前缀,具体将在下文中介绍。

192.168.3

网络部分,由从 ISP 或 IR 收到的 IPv4 网络号组成。

56

主机部分,此部分是为系统接口指定的部分。

/22

网络前缀,定义包含网络号的地址的位数。网络前缀还为 IP 地址提供子网掩码。网络前缀也是由 ISP 或 IR 指定的。

基于 Oracle Solaris : 的网络可以将标准 IPv4 地址、CIDR 格式的 IPv4 地址、DHCP 地址、IPv6 地址和专用 IPv4 地址结合起来。

设计 IPv4 寻址方案

本节介绍了标准 IPv4 地址组织而成的类。虽然 IANA 不再分配基于类的网络号,但是这些网络号仍然在许多网络中使用。您也许需要使用基于类的网络号来管理站点的地址空间。有关 IPv4 网络类的完整介绍,请参阅网络类

下表说明了标准 IPv4 地址如何划分为网络地址空间和主机地址空间。对于每个类,“范围”指定网络号第一个字节的十进制值的范围。“网络地址”指示专用于地址的网络部分的 IPv4 地址的字节数。每个字节都由 xxx 表示。“主机地址”指示专用于地址的主机部分的字节数。例如,在 A 类网络地址中,第一个字节专用于网络,最后三个字节专用于主机。对于 C 类网络,则应用相反的指定。

表 2–1 IPv4 类的划分

类 

字节范围 

网络号 

主机地址 

A

0–127  

xxx

xxx.xxx. xxx

B

128–191  

xxx.xxx

xxx.xxx

C

192–223  

xxx.xxx. xxx

xxx

IPv4 地址的第一个字节中的编号定义网络是 A 类、B 类还是 C 类。其余三个字节的范围从 0 至 255。编号 0 和 255 为保留编号。您可以为每个字节指定编号 1 至 254,具体取决于 IANA 指定给网络的网络类。

下表显示了为您指定的 IPv4 地址字节。该表还显示了可用于为主机指定的每个字节中的编号范围。

表 2–2 可用 IPv4 类的范围

网络类 

字节 1 的范围 

字节 2 的范围 

字节 3 的范围  

字节 4 的范围 

A

0–127 

1–254 

1–254  

1–254 

B

128–191 

由 IANA 预先指定 

1–254 

1–254 

C

192–223 

由 IANA 预先指定 

由 IANA 预先指定 

1–254 

IPv4 子网号

有时会将包含大量主机的本地网络划分为多个子网。如果将 IPv4 网络号划分为子网,则需要为每个子网指定一个网络标识符。您可以通过将 IPv4 地址主机部分的某些位用作网络标识符,从而最大程度地提高 IPv4 地址空间的效率。用作网络标识符时,地址的指定部分会成为子网号。可以使用网络掩码来创建子网号,该网络掩码是选择 IPv4 地址的网络和子网部分的位掩码。有关详细信息,请参阅为 IPv4 地址创建网络掩码

设计 CIDR IPv4 寻址方案

最初构成 IPv4 的网络类不再在全局 Internet 上使用。现在,IANA 可将无类别 CIDR 格式的地址分发给其世界各地的注册机构。所有从 ISP 获取的 IPv4 地址都采用 CIDR 格式,如图 2–2 所示。

CIDR 地址的网络前缀表示有多少 IPv4 地址可用于网络上的主机。请注意,这些主机地址指定给主机上的接口。如果主机有多个物理接口,则需要为每个正在使用的物理接口指定一个主机地址。

CIDR 地址的网络前缀还定义了子网掩码的长度。大多数 Oracle Solaris 10 命令可识别网络子网掩码的 CIDR 前缀标识。但是,Oracle Solaris : 安装程序和 /etc/netmask file 要求使用点分十进制表示法来设置子网掩码。在这两种情况下,请使用 CIDR 网络前缀的点分十进制表示法,如下表所示。

表 2–3 CIDR 前缀及其等效的十进制值

CIDR 网络前缀 

可用 IP 地址 

等效的点分十进制表示的子网 

/19 

8,192  

255.255.224.0 

/20 

4,096  

255.255.240.0 

/21 

2,048 

255.255.248.0 

/22 

1024 

255.255.252.0 

/23 

512 

255.255.254.0 

/24 

256 

255.255.255.0 

/25 

128 

255.255.255.128 

/26 

64 

255.255.255.192 

/27 

32 

255.255.255.224 

有关 CIDR 地址的更多信息,请参阅以下内容:

使用专用 IPv4 地址

IANA 为公司保留了用于其专用网络的三个 IPv4 地址块。这些地址在 RFC 1918, Address Allocation for Private Internets 中有定义。您可以在公司内联网的本地网络系统上使用这些专用地址(也称为 1918 地址)。但是,专用地址在 Internet 上是无效的。请勿在必须与本地网络之外的网络通信的系统上使用它们。

下表列出了 IPv4 专用地址的范围及其相应的掩码。

IPv4 地址范围 

网络掩码 

10.0.0.0 - 10.255.255.255 

10.0.0.0 

172.16.0.0 - 172.31.255.255 

172.16.0.0 

192.168.0.0 - 192.168.255.255 

192.168.0.0 

IP 地址如何应用于网络接口

要连接到网络,系统必须至少有一个物理网络接口。每个网络接口都必须具有其唯一的 IP 地址。安装 Oracle Solaris : 的过程中,必须为安装程序找到的第一个接口提供 IP 地址。通常,此接口的名称为 device-name0,例如 eri0hme0。此接口会被视为主网络接口

如果向主机添加第二个网络接口,则此接口也必须具有自己唯一的 IP 地址。添加第二个网络接口后,主机会成为多宿主主机。与此相反,向主机添加第二个网络接口并启用 IP 转发时,该主机会成为路由器。有关说明,请参见配置 IPv4 路由器

每个网络接口都有设备名称、设备驱动程序以及位于 /devices 目录中的关联设备文件。网络接口的设备名称可能为 erismc0,这两个设备名称用于两个常用的以太网接口。

有关与接口相关的信息和任务,请参阅在 Solaris 10 3/05 中管理接口第 6 章


注 –

本书假定您的系统具有以太网接口。如果计划使用不同的网络介质,请参阅网络接口附带的手册以获取配置信息。


命名网络中的实体

收到指定的网络 IP 地址并将此 IP 地址提供给系统后,下一个任务即是为主机指定名称。然后,必须确定如何处理网络中的名称服务。这些名称最初是在设置网络时使用,之后是在通过路由器、网桥或 PPP 扩展网络时使用。

TCP/IP 协议使用系统的 IP 地址在网络中查找系统。但是,如果使用的是可识别的名称,则可以轻松地标识系统。因此,TCP/IP 协议(和 Oracle Solaris :)要求 IP 地址和主机名唯一标识系统。

从 TCP/IP 角度来说,网络是一组命名的实体。主机是具有名称的实体,路由器是具有名称的实体,网络也是具有名称的实体。也可以为安装有网络的组或部门指定名称,这与可为部门、区域或公司指定名称一样。理论上,可用于标识网络的名称分层结构实际没有限制。域名可标识一个

管理主机名

许多站点允许用户为其计算机选择主机名。服务器也需要至少一个与其主网络接口的 IP 地址关联的主机名。

作为系统管理员,必须确保域中的每个主机名都是唯一的。也就是说,网络中不能有两台计算机都命名为 "fred"。但是,名为 "fred" 的计算机可以有多个 IP 地址。

规划网络时,请创建一个包含 IP 地址及其关联的主机名的列表,以便在设置过程中轻松访问它们。此列表可以帮助检验所有主机名是否唯一。

选择名称服务和目录服务

通过 Oracle Solaris : 可以使用三种类型的名称服务:本地文件、NIS 和 DNS。名称服务可维护有关网络中计算机的关键信息,如主机名、IP 地址、以太网地址等。Oracle Solaris : 还允许您选择是同时使用 LDAP 目录服务和名称服务,还是使用 LDAP 目录服务而非名称服务。有关 Oracle Solaris : 上名称服务的介绍,请参阅《系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)》中的第 I 部分, “关于名称和目录服务”

网络数据库

安装操作系统时,作为此过程的一部分,需要提供服务器、客户机或独立系统的主机名和 IP 地址。Oracle Solaris : 安装程序将该信息添加到 hostsipnodes 网络数据库(对于 Solaris 10 11/06 及早期 Solaris 10 发行版)。该数据库是包含 TCP/IP 在网络中运行所必需的信息的一组网络数据库的一部分。为网络选择的名称服务可读取这些数据库。

网络数据库的配置非常关键。因此,需要决定作为网络规划过程一部分要使用的名称服务。此外,决定是否使用名称服务还会影响是否将网络组织为管理域。网络数据库和 nsswitch.conf 文件提供了一组网络数据库的详细信息。

使用 NIS 或 DNS 作为名称服务

NIS 和 DNS 名称服务可维护网络上多台服务器中的网络数据库。《系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)》介绍了这些名称服务并说明如何配置数据库。此外,该指南还详细说明了“名称空间”和“管理域”的概念。

使用本地文件作为名称服务

如果未实现 NIS、LDAP 或 DNS,网络会使用本地文件提供名称服务。“本地文件”一词是指 /etc 目录中由网络数据库使用的一系列文件。除非另行指明,否则,本书中的过程将假定您使用本地文件作为名称服务。


注 –

如果决定使用本地文件作为网络的名称服务,则以后可以设置其他名称服务。


域名

许多网络会将其主机和路由器组织为管理域的分层结构。如果使用 NIS 或 DNS 名称服务,则必须为组织选择一个全球唯一的域名。要确保域名是唯一的,应向 InterNIC 注册此域名。如果计划使用 DNS,则也需要向 InterNIC 注册域名。

域名结构是分层的。新域通常位于现有的相关域的下方。例如,分公司的域名可位于父公司域名的下方。如果域名没有其他关系,则该组织可以直接将其域名放置在其中一个现有顶级域的下方。

以下是一些顶级域的示例:

您可以选择标识自己组织的名称,并且规定该名称必须是唯一的。

管理细分

管理细分的问题即是对大小和控制进行处理。网络中包含的主机和服务器越多,管理任务就会越复杂。您可能需要通过设置其他管理划分来处理此类情况。如添加特殊的网络类,将现有网络划分为多个子网。有关为网络设置管理细分的决策由以下因素确定:

为网络规划路由器

回顾使用 TCP/IP 的情形,网络中有两种类型的实体: 主机和路由器。所有网络都必须包含主机,不过并非所有网络都需要路由器。网络的物理拓扑可确定是否需要路由器。本节介绍了网络拓扑和路由的概念。在决定将其他网络添加到现有网络环境中时,这些概念非常重要。


注 –

有关在 IPv4 网络上配置路由器的完整详细信息和任务,请参阅IPv4 网络上的包转发和路由。有关在 IPv6 网络上配置路由器的完整详细信息和任务,请参阅配置 IPv6 路由器


网络拓扑概述

网络拓扑描述了网络如何结合在一起。路由器是指将网络相互连接的实体。路由器是指任何一台具有两个或更多网络接口并实现 IP 转发的计算机。但是,只有正确配置,系统才能用作路由器,如配置 IPv4 路由器中所述。

路由器可连接两个或更多网络以形成更大的互联网络。必须配置路由器,使其能在两个相邻网络间传送包。路由器还应该可以将包传送到相邻网络以外的网络。

下图显示了网络拓扑的基本部分。第一个图例显示由单个路由器连接的两个网络的简单配置。第二个图例显示由两个路由器互连的三个网络的配置。在第一个示例中,路由器 R 将网络 1 和网络 2 连接成一个大型互联网络。在第二个示例中,路由器 R1 连接网络 1 和 2。路由器 R2 连接网络 2 和 3。这些连接形成了一个包括网络 1、2 和 3 的网络。

图 2–3 基本网络拓扑

图中显示由单个路由器连接的两个网络的拓扑。

除了将网络连接成互联网络之外,路由器还会在基于目标网络地址的网络间路由包。随着互联网络的日益复杂,每个路由器制定的有关包目标地址的决策也越来越多。

下图显示了一种更为复杂的情况。路由器 R3 直接连接网络 1 和 3。冗余性提高了可靠性。如果网络 2 关闭,则路由器 R3 仍会在网络 1 和 3 之间提供路由。您可以互连许多网络。但是,这些网络必须使用相同的网络协议。

图 2–4 在网络间提供其他路径的网络拓扑

图中显示了由两个路由器连接的三个网络的拓扑。

路由器如何传送包

作为包头的一部分的接受者 IP 地址可确定包的路由方式。如果此地址包含本地网络的网络号,则包会直接传送到具有此 IP 地址的主机。如果网络号不是指本地网络,则包将传送到本地网络中的路由器。

路由器在路由表中维护路由信息。这些表包含路由器连接到的网络中的主机和路由器的 IP 地址。该表还包含指向这些网络的链接。路由器收到包后即会检查路由表,以确定该表是否在标题中列出了目标地址。如果该表不包含目标地址,则路由器会将此包转发到其路由表中列出的其他路由器。有关路由器的详细信息,请参阅配置 IPv4 路由器

下图中显示了由两个路由器连接的三个网络的网络拓扑。

图 2–5 具有三个互连网络的网络拓扑

图中显示了由两个路由器连接的三个网络的样例。

路由器 R1 连接网络 192.9.200192.9.201。路由器 R2 连接网络 192.9.201192.9.202。如果网络 192.9.200 中的主机 A 向网络 192.9.202 中的主机 B 发送消息,则会发生以下事件:

  1. 主机 A 通过网络 192.9.200 发送出一个包。包头中包含接收主机 B 的 IPv4 地址 192.9.202.10

  2. 网络 192.9.200 中没有 IPv4 地址为 192.9.202.10 的计算机。因此,路由器 R1 会接受此包。

  3. 路由器 R1 检查其路由表。网络 192.9.201 中没有地址为 192.9.202.10 的计算机。但是,路由表确实列出了路由器 R2。

  4. R1 随后会选择 R2 作为“下一个跃点”路由器。R1 会将包发送到 R2。

  5. 由于 R2 将网络 192.9.201 连接到 192.9.202,因此 R2 拥有主机 B 的路由信息。路由器 R2 随后会将包转发到网络 192.9.202,在此主机 B 接受包。

第 3 章 IPv6 介绍(概述)

本章概述了 Oracle Solaris : Internet 协议版本 6 (Internet Protocol version 6, IPv6) 的实现。此实现包括支持 IPv6 地址空间的相关守护进程和实用程序。

IPv6 和 IPv4 地址可以在 Oracle Solaris : 联网环境中共存。配置了 IPv6 地址的系统将保留其原有的 IPv4 地址。涉及 IPv6 地址的操作不会对 IPv4 操作造成不良影响,反之亦然。

本章主要讨论以下主题:

有关 IPv6 的更多详细信息,请查阅以下各章:

IPv6 的主要特征

与 IPv4 相比,IPv6 的显著特征是具有更大的地址空间。IPv6 还在许多方面改进了 Internet 功能,本节将概述这些方面。

对寻址进行了扩展

IP 地址大小从 IPv4 中的 32 位增加到 IPv6 中的 128 位,从而可以支持更多层的寻址分层结构。另外,IPv6 提供了更多的可寻址 IPv6 系统。有关更多信息,请参见IPv6 寻址概述

地址自动配置和相邻节点搜索

IPv6 相邻节点搜索 (Neighbor Discovery, ND) 协议简化了 IPv6 地址的自动配置。自动配置是 IPv6 主机的一个功能,可用来自动生成其自身的 IPv6 地址,从而简化地址管理并缩短管理时间。有关更多信息,请参见IPv6 地址自动配置

相邻节点搜索协议对应于以下 IPv4 协议的组合: 地址解析协议 (Address Resolution Protocol, ARP)、Internet 控制消息协议 (Internet Control Message Protocol, ICMP)、路由器搜索 (Router Discovery, RDISC) 和 ICMP 重定向。IPv6 路由器使用相邻节点搜索来通告 IPv6 站点前缀。IPv6 主机使用相邻节点搜索来实现各种目的,包括从 IPv6 路由器请求前缀。有关更多信息,请参见IPv6 相邻节点搜索协议概述

简化了包头的格式

IPv6 包头格式要么删除某些 IPv4 包头字段,要么将这些字段设为可选。尽管地址大小增加了,但这种更改却最大程度地减少了 IPv6 包头所占用的带宽。虽然 IPv6 地址长度是 IPv4 地址长度的四倍,但是 IPv6 包头的大小只是 IPv4 包头大小的两倍。

改进了对 IP 数据包头选项的支持

更改了 IP 数据包头选项的编码方式,从而提高了转发效率。而且,对 IPv6 选项长度的限制也不那么严格。这种更改为以后引入新选项提供了更大的灵活性。

对 IPv6 寻址提供了应用程序支持

许多关键的 Oracle Solaris : 网络服务都能够识别和支持 IPv6 地址,例如:

其他 IPv6 资源

除本部分外,您还可以从以下两节列出的资源中获取有关 IPv6 的信息。

IPv6 互联网信息文档和标准与 Internet 草案

有许多与 IPv6 有关的 RFC。下表列出了本书截稿时已有的主要 IPv6 文章及其 Internet 工程任务组 (Internet Engineering Task Force, IETF) Web 的位置。

表 3–1 与 IPv6 相关的 RFC 和 Internet 草案

RFC 或 Internet 草案 

主题 

位置 

RFC 2461,Neighbor Discovery for IP Version 6 (IPv6)

描述 IPv6 相邻节点搜索协议的特征和功能 

http://www.ietf.org/rfc/rfc2461.txt$number=2461

RFC 3306,Unicast—Prefix—Based IPv6 Multicast Addresses

描述 IPv6 多点传送地址的格式和类型 

ftp://ftp.rfc-editor.org/in-notes/rfc3306.txt

RFC 3484, Default Address Selection for Internet Protocol version 6 (IPv6)

描述用于选择 IPv6 缺省地址的算法 

http://www.ietf.org/rfc/rfc3484?number=3484

RFC 3513,Internet Protocol version 6 (IPv6) Addressing Architecture

包含有关 IPv6 地址类型的完整详细信息,并提供了很多示例 

http://www.ietf.org/rfc/rfc3513.txt?number=3513

RFC 3587,IPv6 Global Unicast Address Format

定义 IPv6 单点传送地址的标准格式 

http://www.ietf.org/rfc/rfc3587.txt?number=3587

Web 站点

下面的 Web 站点提供有关 IPv6 的有用信息。

表 3–2 与 IPv6 相关的 Web 站点

Web 站点 

说明 

位置 

IPv6 论坛 

该社区的 Web 站点提供世界各地与 IPv6 相关的演示文稿、活动、课程和实现的链接 

http://www.ipv6forum.com

Internet 工程任务组 IPv6 工作组 

此 IETF 工作组的主页提供所有相关 IPv6 RFC 和 Internet 草案的链接 

http://www.ietf.org/html.charters/ipv6-charter.html

IPv6 网络概述

本节介绍 IPv6 网络拓扑的基本术语。下图显示了 IPv6 网络的基本部分。

图 3–1 IPv6 网络的基本组件

下文将对该图进行说明。

该图描述 IPv6 网络以及它与 ISP 的连接。内部网络由链路 1、链路 2、链路 3 和链路 4 组成。每个链路上安装若干台主机,末端连接一台路由器。链路 4 是网络的 DMZ,它的一端连接边界路由器。边界路由器使用 IPv6 隧道与 ISP 相连,从而为网络提供 Internet 连通性。链路 2 和 3 作为子网 8a 进行管理。子网 8b 仅包含链路 1 上的系统。子网 8c 与链路 4 上的 DMZ 相接。

图 3–1 中所示,IPv6 网络与 IPv4 网络具有几乎完全相同的组件。但是,IPv6 术语与 IPv4 术语稍有不同。下面是用在 IPv6 上下文中的网络组件的常见术语。

节点

具有 IPv6 地址且接口配置为支持 IPv6 的任何系统。该专业术语适用于主机和路由器。

IPv6 路由器

用来转发 IPv6 包的节点。路由器必须至少有一个接口配置为支持 IPv6。IPv6 路由器还可以通过内部网络通告企业的已注册 IPv6 站点前缀。

IPv6 主机

具有 IPv6 地址的节点。IPv6 主机可以有多个配置为支持 IPv6 的接口。与 IPv4 主机一样,IPv6 主机也不转发包。

链路

单一且连续的网络介质,其两端均连接有路由器。

相邻节点

与本地节点在同一个链路上的 IPv6 节点。

IPv6 子网

IPv6 网络的管理段。与 IPv4 子网的组件一样,IPv6 子网的组件也可以直接对应于链路上的所有节点。必要时,可以在单独的子网中对链路上的节点进行管理。另外,IPv6 还支持多链路子网,在多链路子网上,多个链路上的节点可以是同一个子网的组件。图 3–1 中的链路 2 和链路 3 是多链路子网 8a 的组件。

IPv6 隧道

在一个 IPv6 节点和另一个 IPv6 节点端点之间提供虚拟的点对点路径的隧道。IPv6 支持可手动配置的隧道和 6to4 自动隧道。

边界路由器

位于网络边界的路由器,是通往本地网络外部端点的 IPv6 隧道的一个端点。此路由器必须至少有一个连接到内部网络的 IPv6 接口。对于外部网络,此路由器可以有一个 IPv6 接口或一个 IPv4 接口。

IPv6 寻址概述

因为一个节点可以有多个接口,所以应将 IPv6 地址指定给接口,而非节点。此外,可以为一个接口指定多个 IPv6 地址。


注 –

有关 IPv6 地址格式的完整技术信息,请参阅 RFC 2374,IPv6 Global Unicast Address Format


IPv6 定义了以下三种地址类型:

单点传送

标识单个节点的接口。

多点传送

标识一组通常位于不同节点上的接口。发送到多点传送地址的包将传递到多点传送组的所有成员。

任意点传送

标识一组通常位于不同节点上的接口。发送到任意点传送地址的包将传递到任意点传送组中物理位置最接近发送者的成员节点。

IPv6 地址的各个部分

IPv6 地址的长度为 128 位,由八个 16 位字段组成,相邻字段用冒号分隔。IPv6 地址中的每个字段都必须包含一个十六进制数字,而 IPv4 地址则以点分十进制表示法表示。在下图中,x 表示十六进制数字。

图 3–2 IPv6 地址的基本格式

该图显示 IPv6 地址的三个部分,下文将对此进行说明。

最左侧的三个字段(48 位)包含站点前缀。站点前缀描述通常由 ISP 或区域 Internet 注册机构 (Regional Internet Registry, RIR) 分配给您的站点的公共拓扑

下一个字段是您(或其他管理员)为您的站点分配的 16 位子网 ID。子网 ID 描述专用拓扑(也称为站点拓扑),因为它是您的站点的内部 ID。

最右侧的四个字段(64 位)包含接口 ID,也称为标记。接口 ID 可以从接口的 MAC 地址自动配置,也可以采用 EUI-64 格式手动配置。

请再看一下图 3–2 中的地址:

2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b

此示例显示了 IPv6 地址的全部 128 位。前 48 位 2001:0db8:3c4d 包含表示公共拓扑的站点前缀。随后的 16 位 0015 包含代表站点专用拓扑的子网 ID。低阶(最右边的 64 位 0000:0000:1a2f:1a2b)包含接口 ID。

缩短 IPv6 地址

大多数 IPv6 地址都不会占用全部 128 位,这可能会导致一些字段会被零填充或仅包含零。

IPv6 寻址体系结构允许您使用两个冒号 (: : ) 表示法来表示连续的 16 位零字段。例如,可以通过将接口 ID 中两个连续的零字段替换为两个冒号来缩短图 3–2 中的 IPv6 地址。替换后的地址为 2001:0db8:3c4d:0015::1a2f:1a2b。其他零字段可以表示为单个 0。还可以省略字段中的前导零,如将 0db8 更改为 db8

因此,地址 2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b 可以缩短为 2001:db8:3c4d:15::1a2f:1a2b

可以使用两个冒号替代 IPv6 地址中任意连续的全零字段。例如,IPv6 地址 2001:0db8:3c4d:0015:0000:d234::3eee:0000 可以缩短为 2001:db8:3c4d:15:0:d234:3eee::

IPv6 中的前缀

IPv6 地址最左边的字段包含用来路由 IPv6 包的前缀。IPv6 前缀具有以下格式:

prefix/length in bits

前缀长度以无类域间路由 (classless inter-domain routing, CIDR) 表示法声明。CIDR 表示法在地址末尾有一个斜杠,斜杠后跟前缀长度(以位为单位)。有关 CIDR 格式的 IP 地址的信息,请参阅设计 CIDR IPv4 寻址方案

IPv6 地址的站点前缀最多占用 IPv6 地址最左侧的 48 位。例如,IPv6 地址 2001:db8:3c4d:0015:0000:0000:1a2f:1a2b/48 的站点前缀包含在最左边的 48 位 2001:db8:3c4d 中。此前缀可使用如下形式(将零省略掉)来表示:

2001:db8:3c4d::/48


注 –

前缀 2001:db8::/32 是专用于文档示例的特殊 IPv6 前缀。


您还可以指定子网前缀,该前缀用来定义连接到路由器的网络的内部拓扑。示例 IPv6 地址具有以下子网前缀:

2001:db8:3c4d:15::/64

子网前缀总是包含 64 位。这些位中有 48 位用于站点前缀,还有 16 位用于子网 ID。

下列前缀已留作特殊用途:

2002::/16

指示后跟 6to4 路由前缀。

fe80::/10

指示后跟链路本地地址。

ff00::/8

指示后跟多点传送地址。

单点传送地址

IPv6 包括两种不同的单点传送地址指定方式:

单点传送地址的类型由地址中最左边(高阶)的连续位(其中包含前缀)来确定。

单点传送地址的格式按以下分层结构进行组织:

全局单点传送地址

全局单点传送地址在 Internet 中保持全局唯一。IPv6 中的前缀中的示例 IPv6 地址是全局单点传送地址。下图显示全局单点传送地址的范围,它们对应于 IPv6 地址的相应部分。

图 3–3 全局单点传送地址的各个部分

该图将单点传送地址分为公共拓扑、站点前缀、站点拓扑、子网 ID 和接口 ID。

公共拓扑

站点前缀定义从网络到路由器的公共拓扑。企业的站点前缀可以从 ISP 或区域 Internet 注册机构 (Regional Internet Registry, RIR) 获取。

站点拓扑和 IPv6 子网

在 IPv6 中,子网 ID 定义网络的管理子网,它的最大长度为 16 位。可以在配置 IPv6 网络的过程中指定子网 ID。子网前缀通过指定已分配了子网的特定链路来定义路由器的站点拓扑。

IPv6 子网在概念上与 IPv4 子网相同,因为每个子网通常都与一个硬件链路相关联。但是,IPv6 子网 ID 用十六进制表示法表示,而不是用点分十进制表示法表示。

接口 ID

接口 ID 用来标识特定节点的接口。接口 ID 必须在子网内唯一。IPv6 主机可以使用相邻节点搜索协议自动生成其自身的接口 ID。相邻节点搜索协议基于主机接口的 MAC 地址或 EUI-64 地址自动生成接口 ID。也可以手动指定接口 ID,建议对 IPv6 路由器和启用了 IPv6 的服务器采用这种方式。有关如何创建手动 EUI-3513 地址的说明,请参阅 RFC 3513,Internet Protocol Version 6 (IPv6) Addressing Architecture

过渡型全局单点传送地址

为了进行过渡,IPv6 协议提供在 IPv6 地址中嵌入 IPv4 地址这一功能。这种类型的 IPv4 地址便于借助现有的 IPv4 网络隧道传送 IPv6 包。6to4 地址就是一种过渡型全局单点传送地址。有关 6to4 寻址的更多信息,请参阅6to4 自动隧道

链路本地单点传送地址

链路本地单点传送地址只能用在本地网络链路上。在企业外部,链路本地地址不但无效,而且无法识别。以下示例显示了链路本地地址的格式。


示例 3–1 链路本地单点传送地址的各个部分

该图说明 IPv6 链路本地地址的格式,下文将对此进行说明。

链路本地前缀具有以下格式:

fe80::interface-ID/10

下面是链路本地地址的示例:

fe80::23a1:b152


fe80

10 位二进制前缀 1111111010 的十六进制表示形式。此前缀用来将 IPv6 地址的类型标识为链路本地地址。

interface-ID

接口的十六进制地址,通常从 48 位 MAC 地址派生而来。

如果在安装 Oracle Solaris : 的过程中启用了 IPv6,则会使用链路本地地址配置本地计算机上编号最小的接口。每个接口都至少需要一个链路本地地址,以便将该节点与本地链路上的其他节点区分开。因此,您需要为节点的其他接口手动配置链路本地地址。完成配置后,该节点会使用其链路本地地址进行自动地址配置和相邻节点搜索。

多点传送地址

IPv6 支持使用多点传送地址。多点传送地址用来标识多点传送组,多点传送组是一组通常位于不同节点上的接口。一个接口可以属于任意数量的多点传送组。如果 IPv6 地址的前 16 位是 ff00 n,则说明该地址是多点传送地址。

多点传送地址用来向定义为多点传送组成员的所有接口发送信息或服务。例如,使用多点传送地址与本地链路上的所有 IPv6 节点进行通信。

在创建某个接口的 IPv6 单点传送地址时,内核会自动使该接口成为某些多点传送组的成员。例如,内核会使每个节点都成为“请求节点”多点传送组的成员,相邻节点搜索协议使用该组来检测可访问性。内核还自动使节点成为“所有节点”或“所有路由器”多点传送组的成员。

有关多点传送地址的详细信息,请参阅IPv6 多点传送地址详解。有关技术信息,请参见 RFC 3306, Unicast-Prefix-based IPv6 Multicast Addresses,其中介绍了多点传送地址的格式。有关正确使用多点传送地址和组的更多信息,请参见 RFC 3307, Allocation Guidelines for IPv6 Multicast Addresses

任意点传送地址和组

IPv6 任意点传送地址用来标识一组位于不同 IPv6 节点上的接口。每组接口都称作一个任意点传送组。当包发送到任意点传送地址时,任意点传送组中物理位置最接近发送者的成员将收到包。


注 –

Oracle Solaris : 实现的 IPv6 不支持创建任意点传送地址和任意点传送组。但是,Oracle Solaris : IPv6 节点可以将包发送到任意点传送地址。有关更多信息,请参见6to4 中继路由器隧道的注意事项


IPv6 相邻节点搜索协议概述

IPv6 引入了相邻节点搜索协议,该协议使用消息传递作为处理相邻节点间的交互的方式。相邻节点是指在同一链路上的 IPv6 节点。例如,通过发出与相邻节点搜索相关的消息,节点可以获知相邻节点的链路本地地址。相邻节点搜索控制 IPv6 本地链路上的以下主要活动:

相邻节点搜索使用下列类型的 ICMP 消息在链路上的节点之间进行通信:

有关相邻节点搜索消息和其他相邻节点搜索协议主题的详细信息,请参阅IPv6 相邻节点搜索协议。有关相邻节点搜索的技术信息,请参见 RFC 2461, Neighbor Discovery for IP Version 6 (IPv6)

IPv6 地址自动配置

IPv6 的一个主要特征就是允许主机自动配置接口。通过相邻节点搜索,主机可以在本地链路上查找 IPv6 路由器并请求站点前缀。在自动配置过程中,主机将执行以下操作:

无状态自动配置概述

无状态自动配置不需要手动配置主机,只需对路由器进行很少的配置(如果需要的话),而且不需要其他服务器。无状态机制允许主机生成其本身的地址。无状态机制使用本地信息以及由路由器通告的非本地信息来生成地址。

可以为接口实现临时地址,临时地址也是自动配置的。可以为主机上的一个或多个接口启用临时地址标记。但是,与自动配置的标准 IPv6 地址不同,临时地址由站点前缀和一个随机生成的 64 位数字组成。这个随机数将成为 IPv6 地址的接口 ID 部分。临时地址作为接口 ID 时,不会生成链路本地地址。

路由器将通告链路上已指定的所有前缀。IPv6 主机使用相邻节点搜索从本地路由器获取子网前缀。主机通过合并子网前缀和从接口的 MAC 地址生成的接口 ID 来自动生成 IPv6 地址。如果没有路由器,主机可以只生成链路本地地址。链路本地地址只能用于和同一链路上的节点进行通信。


注 –

请不要使用无状态自动配置功能来创建服务器的 IPv6 地址。主机会在自动配置过程中基于特定于硬件的信息来自动生成接口 ID。如果用新接口替换现有的接口,当前的接口 ID 可能会变得无效。


IPv6 隧道概述

对于大多数企业,必须以循序渐进的方式在现有的 IPv4 网络中分步引入 IPv6。Oracle Solaris : 双栈网络环境既支持 IPv4 功能又支持 IPv6 功能。因为大多数网络都使用 IPv4 协议,所以 IPv6 网络目前需要一种在其边界外部进行通信的方法。IPv6 网络可以使用隧道来实现这一目的。

在大多数 IPv6 隧道传送方案中,外发 IPv6 包封装在 IPv4 包内部。IPv6 网络的边界路由器可以设置经由各种 IPv4 网络到达目标 IPv6 网络的边界路由器的点对点隧道。包通过隧道到达目标网络的边界路由器,该边界路由器将对包取消封装,然后将单独的 IPv6 包转发到目标节点。

Oracle Solaris : IPv6 实现支持下列隧道传送方案:

有关 IPv6 隧道的详细信息,请参阅IPv6 隧道。有关 IPv4 到 IPv4 隧道和 VPN 的信息,请参阅虚拟专用网络和 IPsec

第 4 章 规划 IPv6 网络(任务)

在新网络或现有网络上部署 IPv6 需要进行许多规划工作。本章包含在您的站点配置 IPv6 之前必须执行的规划任务。对于现有的网络,IPv6 部署应逐步分阶段进行。本章中的主题有助于您在原本仅使用 IPv4 的网络上分阶段采用 IPv6。

本章讨论以下主题:

有关 IPv6 概念的介绍,请参阅第 3 章。有关详细信息,请参阅第 11 章

IPv6 规划(任务列表)

请依次完成以下任务列表中的任务,以完成 IPv6 部署所必须执行的规划任务。

下表列出了各种配置 IPv6 网络的任务。此表中包含对各项任务要完成的工作的说明,以及当前文档中详细介绍用于执行任务的特定步骤的章节。

任务 

说明 

参考 

1. 准备硬件以支持 IPv6。 

确保硬件可以升级到 IPv6。 

准备网络拓扑以支持 IPv6

2. 找到支持 IPv6 的 ISP。 

确保当前的 ISP 支持 IPv6。否则,请寻找可以支持 IPv6 的 ISP。可以使用两个 ISP,一个 ISP 用于 IPv6 通信,另一个用于 ISP IPv4 通信。 

 

3. 确保应用程序能够支持 IPv6。 

验证应用程序是否可以在 IPv6 环境中运行。 

如何准备网络服务以支持 IPv6

4. 获取站点前缀。 

从 ISP 或最近的 RIR 获取您站点的 48 位站点前缀。 

获取站点前缀

5. 制定子网寻址计划。 

必须先整体规划 IPv6 网络拓扑和寻址方案,然后才能在网络中的各个节点上配置 IPv6。 

为子网制定编号方案

6. 制定隧道使用计划。 

确定应当使用哪些路由器来建立与其他子网或外部网络连接的隧道。 

在网络拓扑中规划隧道

7. 为网络上的实体制定寻址计划。 

在配置 IPv6 之前,应当先制定好服务器、路由器和主机的寻址计划。 

为节点制定 IPv6 寻址计划

8. 制定 IPv6 安全策略。 

在制定 IPv6 安全策略时,需要弄清楚 IP 过滤器、IP 安全体系结构 (IP security architecture, IPsec)、Internet 密钥交换 (Internet Key Exchange, IKE) 和其他 Oracle Solaris : 安全功能。 

第 4 部分, IP 安全性

9. (可选)设置 DMZ。 

出于安全方面的考虑,在配置 IPv6 之前,需要为 DMZ 及其实体制定寻址计划。 

IPv6 实现的安全注意事项

10. 使节点能够支持 IPv6。 

在所有的路由器和主机上配置 IPv6。 

IPv6 路由器配置(任务列表)

11. 打开网络服务。 

确保现有的服务器能够支持 IPv6。 

主要的 TCP/IP 管理任务(任务列表)

12. 更新名称服务器以支持 IPv6。 

确保使用新 IPv6 地址更新 DNS、NIS 和 LDAP 服务器。 

针对 IPv6 配置名称服务支持

IPv6 网络拓扑方案

本章中的任务旨在说明如何在典型企业网络上规划 IPv6 服务。下图显示本章中所谈及的网络。建议的 IPv6 网络可能包括该图中显示的部分或全部网络链路。

图 4–1 IPv6 网络拓扑方案

该图显示 IPv6 网络。下文将对该图的内容进行说明。

企业网络方案由五个具有现有 IPv4 地址的子网组成。网络的链路直接对应于管理子网。四个内部网络以 RFC 1918 样式的专用 IPv4 地址表示,这是在缺少 IPv4 地址时的常见解决方案。下面是这些内部网络的寻址方案:

外部的公共网络 172.16.85 充当企业的 DMZ(隔离区)。此网络中包含 Web 服务器、匿名 FTP 服务器以及企业为外界提供的其他资源。路由器 2 使用防火墙并将公共网络 172.16.85 与内部主干分开。在 DMZ 的另一端,路由器 1 使用防火墙并充当企业的边界服务器。

图 4–1 中,公共 DMZ 具有 RFC 1918 专用地址 172.16.85。在实际应用中,公共 DMZ 必须具有已注册的 IPv4 地址。大多数 IPv4 站点都使用公共地址和 RFC 1918 专用地址的组合。但是,在引入 IPv6 时,公共地址和专用地址的概念发生了变化。因为 IPv6 具有大得多的地址空间,所以,可以将公共 IPv6 地址同时用于专用网络和公共网络。

准备现有的网络以支持 IPv6


注 –

Oracle Solaris : 双协议栈支持同时执行 IPv4 操作和 IPv6 操作。在网络上部署 IPv6 期间或在部署之后,可以成功运行与 IPv4 相关的操作。


IPv6 在现有的网络中引入了其他功能。因此,在首次部署 IPv6 时,必须确保不会中断正在使用 IPv4 的任何操作。本节中的主题介绍如何在现有的网络中分步引入 IPv6。

准备网络拓扑以支持 IPv6

IPv6 部署中的第一步就是评估网络上现有的哪些实体能够支持 IPv6。大多数情况下,在实现 IPv6 时,网络拓扑(电缆、路由器和主机)可以保持不变。但是,在实际为网络接口配置 IPv6 地址之前,可能必须针对 IPv6 准备现有的硬件和应用程序。

检验网络上的哪个硬件可以升级到 IPv6。例如,可以就下列类别的硬件,查阅制造商的文档,确定是否已经针对 IPv6 做好准备:


注 –

本部分中的所有过程都假定您的设备(尤其是路由器)可以升级到 IPv6。


某些型号的路由器无法升级到 IPv6。有关更多信息和解决方法,请参阅IPv4 路由器无法升级到 IPv6

准备网络服务以支持 IPv6

在当前的 Oracle Solaris : 发行版中,下列典型的 IPv4 网络服务可以支持 IPv6:

IMAP(Internet 消息访问协议)邮件服务仅适用于 IPv4。

针对 IPv6 配置的节点可以运行 IPv4 服务。在打开 IPv6 时,并非所有的服务都能够接受 IPv6 连接。已经移植到 IPv6 的服务将能够接受连接。尚未移植到 IPv6 的服务将使用 IPv4 协议栈。

在将服务升级到 IPv6 之后,可能会出现一些问题。有关详细信息,请参见将服务升级到 IPv6 之后遇到的问题

准备服务器以支持 IPv6

因为服务器被视为 IPv6 主机,所以,在缺省情况下,服务器的 IPv6 地址会由相邻节点搜索协议自动配置。但是,许多服务器会有多个网络接口卡 (network interface card, NIC),您可能希望将它们换出以进行维修或更换。更换 NIC 后,相邻节点搜索会自动为新 NIC 生成一个新的接口 ID。对于特定的服务器,可能不支持此行为。

因此,请考虑为服务器的每个接口手动配置 IPv6 地址的接口 ID 部分。有关说明,请参阅如何配置用户指定的 IPv6 标记。以后需要更换现有的 NIC 时,已经配置的 IPv6 地址可应用于更换后的 NIC。

Procedure如何准备网络服务以支持 IPv6

  1. 更新以下网络服务以支持 IPv6:

    • 邮件服务器

    • NIS 服务器

    • NFS


      注 –

      LDAP 无需执行特定于 IPv6 的配置任务即可支持 IPv6。


  2. 检验防火墙硬件是否能够支持 IPv6。

    有关说明,请参阅与防火墙有关的文档。

  3. 检验网络上的其他服务是否已移植到 IPv6。

    有关更多信息,请参阅软件的营销宣传材料和相关文档。

  4. 如果您的站点部署了下列服务,请确保已经针对这些服务采取了相应的措施:

    • 防火墙

      考虑增强面向 IPv4 的策略以支持 IPv6。有关更多的安全注意事项,请参见IPv6 实现的安全注意事项

    • 邮件

      在 DNS 的 MX(邮件交换)记录中,考虑添加邮件服务器的 IPv6 地址。

    • DNS

      有关特定于 DNS 的注意事项,请参见如何准备 DNS 以支持 IPv6

    • IPQoS

      在主机上使用先前用于 IPv4 的同一 Diffserv 策略。有关更多信息,请参见分类器模块

  5. 在将某个节点转换为支持 IPv6 以前,审计由该节点提供的任何网络服务。

Procedure如何准备 DNS 以支持 IPv6

当前的 Oracle Solaris : 发行版在客户端和服务器端均支持 DNS 解析。要使 DNS 服务支持 IPv6,请执行以下准备工作。

有关与准备 DNS 以支持 IPv6 相关的更多信息,请参阅《系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)》

  1. 确保执行递归名称解析的 DNS 服务器是双栈(IPv4 和 IPv6)服务器或者仅包含 IPv4。

  2. 在 DNS 服务器上,使用转发区域中相关的 IPv6 数据库 AAAA 记录填充 DNS 数据库。


    注 –

    需要特别注意那些运行多个关键服务的服务器。确保网络正常工作,还要确保所有的关键服务都已经移植到 IPv6。然后,将服务器的 IPv6 地址添加到 DNS 数据库中。


  3. 向反向区域中添加与 AAAA 记录相关联的 PTR 记录。

  4. 向描述区域的 NS 记录中仅添加 IPv4 数据或者同时添加 IPv6 和 IPv4 数据。

在网络拓扑中规划隧道

在将网络迁移到 IPv4 和 IPv6 的混合网络时,IPv6 实现支持将许多隧道配置作为转换机制。隧道可以使隔离的 IPv6 网络能够进行通信。因为大多数 Internet 都运行 IPv4,所以,来自您的站点的 IPv6 包需要借助于通往目标 IPv6 网络的隧道在 Internet 上传播。

下面是在 IPv6 网络拓扑中使用隧道的一些主要方案:

有关配置隧道的过程,请参阅针对 IPv6 支持配置隧道所需的任务(任务列表)。有关隧道的相关概念信息,请参阅IPv6 隧道

IPv6 实现的安全注意事项

在现有网络中引入 IPv6 时,必须注意不要危及站点的安全性。在分阶段实现 IPv6 时,需要注意以下安全问题:

本书包括可用在 IPv6 实现中的安全功能。

准备 IPv6 寻址计划

从 IPv4 转换到 IPv6 的主要任务包括制定寻址计划。此任务涉及到进行以下准备:

获取站点前缀

在配置 IPv6 之前,必须获取站点前缀。站点前缀用于派生 IPv6 实现中所有节点的 IPv6 地址。有关站点前缀的介绍,请参阅IPv6 中的前缀

支持 IPv6 的任何 ISP 都可以为贵工作单位提供 48 位 IPv6 站点前缀。如果当前的 ISP 仅支持 IPv4,则可以使用另一个 ISP 来支持 IPv6,同时保留当前的 ISP 来支持 IPv4。在这种情况下,您可以使用多种解决方法之一。有关更多信息,请参见当前的 ISP 不支持 IPv6

如果贵工作单位是 ISP,则可以从相应的 Internet 注册机构获取客户的站点前缀。有关更多信息,请参见 Internet Assigned Numbers Authority (IANA)(Internet 编号分配机构)。

制定 IPv6 编号方案

除非建议的 IPv6 网络是全新的网络,否则请将现有的 IPv4 拓扑用作 IPv6 编号方案的基础。

为子网制定编号方案

在制定编号方案时,应首先将现有的 IPv4 子网映射到等效的 IPv6 子网。例如,请考虑图 4–1 中所示的子网。子网 1–4 除了用数字 1–4 来指示子网以外,还使用所指定的 RFC 1918 IPv4 专用地址作为其地址的前 16 位。为了进行说明,假定已将 IPv6 前缀 2001:db8:3c4d/48 指定给该站点。

下表说明了如何将专用的 IPv4 前缀映射到 IPv6 前缀。

IPv4 子网前缀 

等效的 IPv6 子网前缀  

192.168.1.0/24

2001:db8:3c4d:1::/64

192.168.2.0/24

2001:db8:3c4d:2::/64

192.168.3.0/24

2001:db8:3c4d:3::/64

192.168.4.0/24

2001:db8:3c4d:4::/64

为节点制定 IPv6 寻址计划

对于大多数主机,采用无状态自动配置为其接口配置 IPv6 地址是恰当的省时策略。当主机从离其最近的路由器接收到站点前缀时,相邻节点搜索会自动为主机上的每个接口生成 IPv6 地址。

服务器需要具有稳定的 IPv6 地址。如果您未手动配置服务器的 IPv6 地址,那么,更换服务器上的 NIC 卡时,系统会自动配置一个新的 IPv6 地址。在为服务器创建地址时,请记住以下提示:

由于 IPv4 地址的数量有限,因此,在过去,网络设计者必须考虑在何处使用全局已注册地址和专用 RFC 1918 地址。但是,全局和专用 IPv4 地址的概念并不适用于 IPv6 地址。可以在网络的所有链路(包括公共 DMZ)上使用全局单点传送地址(包括站点前缀)。

第 5 章 配置 TCP/IP 网络服务和 IPv4 寻址(任务)

TCP/IP 网络管理包括两个阶段。第一个阶段是装配硬件。第二个阶段是配置实现 TCP/IP 协议的守护进程、文件和服务。

本章介绍如何在实现 IPv4 寻址和服务的网络上配置 TCP/IP。


注 –

本章中的许多任务同时适用于仅启用了 IPv4 的网络和启用了 IPv6 的网络。如果这两种寻址格式的配置任务是不同的,则 IPv4 配置步骤在本章中介绍。本章中的任务交叉引用第 7 章中的等效 IPv6 任务。


本章包含以下信息:

本章新增内容

在 Solaris 10 8/07 中,进行了以下更改:

配置 IPv4 网络之前(任务列表)

在配置 TCP/IP 之前,请完成下表中列出的任务。此表中包含对各项任务要完成的工作的说明,以及当前文档中详细介绍用于执行任务的特定步骤的章节。

任务 

说明 

参考 

1. 设计网络拓扑。 

确定网络的物理布局。 

网络拓扑概述IPv4 自治系统拓扑

2. 从 ISP 或区域 Internet 注册机构 (Regional Internet Registry, RIR) 获取网络号。 

获取已注册的网络号,站点上的系统可以使用它与外部进行通信。 

设计 IPv4 寻址方案

3. 为网络规划 IPv4 寻址方案。如果适用,则包括子网寻址。 

将网络号用作寻址计划的基础。 

设计 IPv4 寻址方案

4. 根据网络拓扑来装配网络硬件。保证硬件正常工作。 

设置在网络拓扑设计中概述的系统、网络介质、路由器、交换机、集线器和网桥。 

硬件手册和网络拓扑概述

5. 将 IPv4 地址和主机名指定给网络中的所有系统。 

在 Oracle Solaris : 安装过程中或安装后,在适当的文件中指定 IPv4 地址。 

设计 IPv4 寻址方案如何更改 IPv4 地址和其他网络配置参数

6. 运行网络接口和路由器所需的配置软件(如果适用)。 

配置路由器和多宿主主机。 

为网络规划路由器配置 IPv4 路由器(以了解有关路由器的信息)。

7. 确定网络使用的名称服务或目录服务: NIS、LDAP、DNS 或本地文件。 

配置选定的名称服务和/或目录服务。 

《系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)》

8. 选择网络的域名(如果适用)。 

选择网络的域名,并向 InterNIC 注册。 

《系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)》

确定主机配置模式

作为网络管理员,您可以将 TCP/IP 配置为在主机和路由器上运行(如果适用)。可以将这些系统配置为从本地系统上的文件或者从网络中其他系统上的文件获取配置信息。需要以下配置信息:

从本地文件获取 TCP/IP 配置信息的系统在本地文件模式下运行。从远程网络服务器获取 TCP/IP 配置信息的系统在网络客户机模式下运行。

应该以本地文件模式运行的系统

要以本地文件模式运行,系统必须有 TCP/IP 配置文件的本地副本。TCP/IP 配置文件中介绍了这些文件。系统应有自己的磁盘,尽管严格说来此建议并非必需。

大多数服务器应该以本地文件模式运行。此要求涉及以下服务器:

此外,路由器应该以本地文件模式运行。

专门用作打印服务器的系统无需以本地文件模式运行。单台主机是否应该以本地文件模式运行,取决于网络的规模。

如果运行的网络规模很小,则在单台主机上维护这些文件所涉及的工作量是易于管理的。如果网络为数百台主机服务,则该任务将变得很困难,即使将网络划分为许多管理子域也是如此。因此,对于大型网络,使用本地文件模式通常效率较低。但是,由于路由器和服务器必须是独立的,因此应该以本地文件模式配置它们。

网络配置服务器

网络配置服务器是为以网络客户机模式配置的主机提供 TCP/IP 配置信息的服务器。这些服务器支持以下三种引导协议:

网络配置服务器还可以用作 NFS 文件服务器。

如果要将任何主机配置为网络客户机,还必须将网络上的至少一个系统配置为网络配置服务器。如果网络划分为多个子网,则包含网络客户机的每个子网必须配有至少一个网络配置服务器。

配置为网络客户机的系统

从网络配置服务器获取其配置信息的任何主机都以网络客户机模式运行。已配置为网络客户机的系统不需要 TCP/IP 配置文件的本地副本。

网络客户机模式简化了大型网络的管理。网络客户机模式最大限度地减小了在单台主机上执行的配置任务的数目。网络客户机模式保证网络中的所有系统都遵循相同的配置标准。

可以在所有类型的计算机上配置网络客户机模式。例如,可以在独立系统上配置网络客户机模式。

混合配置

配置并不仅限于纯本地文件模式或纯网络客户机模式。路由器和服务器应该始终以本地文件模式进行配置。对于主机,可以使用本地文件模式和网络客户机模式的任何组合。

IPv4 网络拓扑方案

图 5–1 显示了网络号为 192.9.200 的虚构网络上的主机。该网络有一个网络配置服务器,称为 sahara。主机 tenerenubian 有自己的磁盘并以本地文件模式运行。主机 faiyum 也有磁盘,但是此系统以网络客户机模式运行。

最后,系统 timbuktu 被配置为路由器。该系统包括两个网络接口。第一个接口名为 timbuktu。此接口属于网络 192.9.200。第二个接口名为 timbuktu-201。此接口属于网络 192.9.201。这两个网络都位于组织域 deserts.worldwide.com 中。该域将本地文件用作其名称服务。

图 5–1 IPv4 网络拓扑方案中的主机

该图显示一个样例网络,其中有一个为四台主机提供服务的网络服务器。

将子网添加到网络(任务列表)

如果要将不使用子网的网络更改为使用子网的网络,请执行以下任务列表中的任务。


注 –

本节中的信息仅适用于 IPv4 子网。有关规划 IPv6 子网的信息,请参阅准备网络拓扑以支持 IPv6为子网制定编号方案


下表列出了各种用于在当前网络中添加子网的任务。此表中包含对各项任务要完成的工作的说明,以及当前文档中详细介绍用于执行任务的特定步骤的章节。

任务 

说明 

参考 

1. 确定网络拓扑是否需要子网。 

确定新子网的拓扑,其中包括路由器和主机在子网中的位置。 

为网络规划路由器什么是子网划分?网络类

2. 将含有新子网号的 IP 地址指定给要成为子网成员的系统。 

在 Oracle Solaris : 安装过程中或稍后,在 /etc/hostname.interface 文件中配置使用新子网号的 IP 地址。

确定网络的 IP 地址寻址格式

3. 在子网中的所有预期系统上配置子网的网络掩码。 

如果要手动配置网络客户机,请修改 /etc/inet/netmasks 文件。或者,将网络掩码提供给 Oracle Solaris : 安装程序。

netmasks 数据库为 IPv4 地址创建网络掩码

4. 用子网中所有系统的新 IP 地址编辑网络数据库。 

在所有主机上修改 /etc/inet/hosts(对于 Solaris 10 11/06 和早期发行版,则修改 /etc/inet/ipnodes),以反映新主机地址。

hosts 数据库

5. 重新引导所有系统。 

   

网络配置任务列表

下表列出了从无子网的网络配置转变到使用子网的网络后还需要执行的额外任务。此表中包含对各项任务要完成的工作的说明,以及当前文档中详细介绍用于执行任务的特定步骤的章节。

任务 

说明 

参考 

以本地文件模式配置主机 

涉及到编辑 nodenamehostnamehostsdefaultdomaindefaultrouternetmasks 文件

如何以本地文件模式配置主机

设置网络配置服务器 

涉及到打开 in.tftp 守护进程以及编辑 hostsethersbootparams 文件

如何设置网络配置服务器

以网络客户机模式配置主机 

涉及到创建 hostname 文件、编辑 hosts 文件以及删除 nodenamedefaultdomain 文件(如果它们存在)

如何以网络客户机模式配置主机

为网络客户机指定路由策略 

涉及到确定在主机上使用静态路由还是动态路由。 

如何在单接口主机上启用静态路由如何在单接口主机上启用动态路由

修改现有网络配置  

涉及到更改主机名、IP 地址以及在安装时设置的或稍后配置的其他参数。 

如何更改 IPv4 地址和其他网络配置参数

配置本地网络中的系统

网络软件与操作系统软件一起安装。此时,必须将某些 IP 配置参数存储在适当文件中,以便可以在引导时读取它们。

网络配置过程涉及到创建或编辑网络配置文件。如何使配置信息可用于系统内核是有条件的。是否可用取决于这些文件是在本地存储(本地文件模式)还是从网络配置服务器获取(网络客户机模式)。

在网络配置过程中提供的参数如下:

如果 Oracle Solaris : 安装程序检测到系统上有多个接口,则可以选择在安装过程中配置其他接口。有关完整说明,请参见《Oracle Solaris 10 9/10 安装指南:基本安装》

本章包含有关创建和编辑本地配置文件的信息。有关使用名称服务数据库的信息,请参见《系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)》

Procedure如何以本地文件模式配置主机

使用此过程可以在以本地文件模式运行的主机上配置 TCP/IP。

  1. 承担主管理员角色或者成为超级用户

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 转到 /etc 目录。

  3. 验证在 /etc/nodename 文件中设置的主机名是否正确。

    在 Oracle Solaris : 安装过程中指定系统的主机名时,该主机名将输入到 /etc/nodename 文件中。确保节点名称项是系统的正确主机名。

  4. 检验系统上的每个网络接口是否存在对应的 /etc/hostname.interface 文件。

    有关 /etc/hostname. interface 文件的文件语法和基本信息,请参阅管理物理接口的基础知识

    Oracle Solaris : 安装程序要求您在安装过程中至少配置一个接口。自动配置的第一个接口将成为主网络接口。安装程序为主网络接口和在安装时选择配置的任何其他接口创建 /etc/hostname.interface 文件。

    如果在安装过程中配置了其他接口,请验证每个接口是否有对应的 /etc/hostname.interface 文件。在 Oracle Solaris : 安装过程中,无需配置多个接口。但是,如果稍后要将更多接口添加到系统中,则必须手动配置它们。

    有关手动配置接口的步骤,请参阅在 Solaris 10 3/05 中管理接口如何在安装系统后配置物理接口(适用于从 Solaris 10 1/06 开始的发行版)。

  5. 对于 Solaris 10 11/06 和更早的发行版,验证 /etc/inet/ipnodes 文件中的项是否最新。

    Oracle Solaris 10 安装程序会创建 /etc/inet/ipnodes 文件。此文件包含在安装过程中配置的每个接口的节点名称和 IPv4 地址以及 IPv6 地址(如果适用)。

    /etc/inet/ipnodes 文件中的项使用以下格式:


    IP-address node-name nicknames...
    

    nicknames 是接口的其他名称。

  6. 验证 /etc/inet/hosts 文件中的项是否最新。

    Oracle Solaris : 安装程序为主网络接口、回送地址和在安装过程中配置的任何其他接口(如果适用)创建项。

    1. 确保 /etc/inet/hosts 中的现有项是最新的。

    2. (可选)为安装后添加到本地主机的任何网络接口添加 IP 地址和对应名称。

    3. (可选)如果 /usr 文件系统是 NFS 挂载的,则添加文件服务器的一个或多个 IP 地址。

  7. /etc/defaultdomain 文件中键入主机的全限定域名。

    例如,假定主机 tenere 是域 deserts.worldwide.com 的一部分。此时应在 /etc/defaultdomain 中键入 deserts.worldwide.com。有关更多信息,请参见/etc/defaultdomain 文件

  8. /etc/defaultrouter 文件中键入路由器的名称。

    有关此文件的信息,请参见/etc/defaultrouter 文件

  9. /etc/inet/hosts 文件中键入缺省路由器的名称及其 IP 地址。

    还可以使用其他路由选项,如如何以网络客户机模式配置主机中所述。可以将这些选项应用于本地文件模式配置。

  10. 为网络添加网络掩码(如果适用):

    • 如果主机从 DHCP 服务器获取其 IP 地址,则不必指定网络掩码。

    • 如果已经在此客户机所在的网络上设置 NIS 服务器,则可以将 netmask 信息添加到该服务器上的相应数据库中。

    • 对于所有其他情况,请执行以下操作:

    1. /etc/inet/netmasks 文件中键入网络号和网络掩码。

      使用以下格式:


      network-number netmask

      例如,对于 C 类网络号 192.168.83,请键入:


      192.168.83.0    255.255.255.0
      

      对于 CIDR 地址,将网络前缀转换为等效的用点分十进制表示法表示的项。网络前缀及其点分十进制等效项可以在表 2–3 中找到。例如,使用以下内容可以表示 CIDR 网络前缀 192.168.3.0/22


      192.168.3.0 255.255.252.0
    2. /etc/nsswitch.conf 中更改网络掩码的查找顺序,以便首先搜索本地文件:


      netmasks:   files nis
  11. 重新引导系统。

Procedure如何设置网络配置服务器

有关如何设置安装服务器和引导服务器的信息,请参见《Oracle Solaris 10 9/10 安装指南:基本安装》

  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 转到预期的网络配置服务器的根 (/) 目录。

  3. 通过创建目录 /tftpboot 打开 in.tftpd 守护进程:


    # mkdir /tftpboot
    

    此命令将系统配置为 TFTP、bootparams 和 RARP 服务器。

  4. 创建指向目录的符号链接。


    # ln -s /tftpboot/. /tftpboot/tftpboot
    
  5. /etc/inetd.conf 文件中启用 tftp 行。

    检查该项是否如下所示:


    tftp dgram udp6 wait root /usr/sbin/in.tftpd in.tftpd -s /tftpboot

    此行可防止 in.tftpd 检索除位于 /tftpboot 中的文件之外的任何文件。

  6. 编辑 hosts 数据库。

    添加网络中每个客户机的主机名和 IP 地址。

  7. 编辑 ethers 数据库。

    为网络中以网络客户机模式运行的每台主机创建项。

  8. 编辑 bootparams 数据库。

    请参见bootparams 数据库。使用通配符项,或者为以网络客户机模式运行的每台主机创建项。

  9. /etc/inetd.conf 项转换为服务管理工具 (Service Management Facility, SMF) 服务清单,并启用生成的服务:


    # /usr/sbin/inetconv
    
  10. 验证 in.tftpd 是否正常工作。


    # svcs network/tftp/udp6
    

    应该看到与如下所示类似的输出:


    STATE          STIME    FMRI
    online         18:22:21 svc:/network/tftp/udp6:default
管理 in.tftpd 守护进程

in.tftpd 守护进程由服务管理工具管理。可以使用 svcadm 命令对 in.tftpd 执行管理操作(如启用、禁用或重新启动)。启动和重新启动此服务的职责已委托给 inetd。使用 inetadm 命令可以进行配置更改以及查看 in.tftpd 的配置信息。使用 svcs 命令可以查询服务的状态。有关服务管理工具的概述,请参阅《系统管理指南:基本管理》中的第 18  章 “管理服务(概述)”

配置网络客户机

网络客户机从网络配置服务器接收其配置信息。因此,在将主机配置为网络客户机之前,必须确保至少为网络设置了一个网络配置服务器。

Procedure如何以网络客户机模式配置主机

在要以网络客户机模式配置的每台主机上,执行以下过程。

  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. /etc 目录中搜索 nodename 文件。

    如果存在这样的文件,则删除它。

    删除 /etc/nodename 会导致系统使用 hostconfig 程序从网络配置服务器获取主机名、域名和路由器地址。请参见配置本地网络中的系统

  3. 如果 /etc/hostname.interface 文件不存在,则创建它。

    确保该文件为空。/etc/hostname.interface 文件为空会导致系统从网络配置服务器获取 IPv4 地址。

  4. 确保 /etc/inet/hosts 文件仅包含回送网络接口的 localhost 名称和 IP 地址。


    # cat /etc/inet/hosts
    # Internet host table
    #
    127.0.0.1       localhost

    IPv4 回送接口的 IP 地址为 127.0.0.1.

    有关更多信息,请参见回送地址。该文件不应包含本地主机(主网络接口)的 IP 地址和主机名。

  5. 检查是否存在 /etc/defaultdomain 文件。

    如果存在这样的文件,则删除它。

    hostconfig 程序自动设置域名。要覆盖由 hostconfig 设置的域名,请在 /etc/defaultdomain 文件中键入替代域名。

  6. 确保客户机的 /etc/nsswitch.conf 文件中的搜索路径反映网络的名称服务需求。

Procedure如何更改 IPv4 地址和其他网络配置参数

此过程说明如何在以前安装的系统上修改 IPv4 地址、主机名和其他网络参数。使用此过程可以修改服务器或联网独立系统的 IP 地址。此过程不适用于网络客户机或设备。这些步骤创建一个在重新引导后继续存在的配置。


注 –

此操作说明仅适用于更改主网络接口的 IPv4 地址。要为系统添加其他接口,请参阅如何在安装系统后配置物理接口


在几乎所有情况下,以下步骤都使用传统的 IPv4 点分十进制表示法指定 IPv4 地址和子网掩码。另外,在此过程中也可以使用 CIDR 表示法在所有适用文件中指定 IPv4 地址。有关 CIDR 表示法的简介,请参见CIDR 格式的 IPv4 地址

  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. (仅适用于 Solaris 10 11/06 及早期发行版)在 /etc/inet/ipnodes 文件或等效 ipnodes 数据库中修改 IP 地址。

    对于要添加到系统的每个 IP 地址,使用以下语法:


    IP-address host-name, nicknames
    IP-address interface-name, nicknames
    

    第一项应该包含主网络接口的 IP 地址和系统的主机名。可以选择添加主机名的别名。将其他物理接口添加到系统时,在 /etc/inet/ipnodes 中为这些接口的 IP 地址和关联名称创建项。

  3. 如果必须更改系统的主机名,请在 /etc/nodename 文件中修改主机名项。

  4. /etc/inet/hosts 文件或等效 hosts 数据库中修改 IP 地址和主机名(如果适用)。

  5. /etc/hostname.interface 文件中修改主网络接口的 IP 地址。

    可以在 /etc/hostname.interface 文件中将以下任何项用作主网络接口的项:

    • 用传统的点分十进制格式表示的 IPv4 地址

      使用以下语法:


      IPv4 address subnet mask
      

      网络掩码项是可选的。如果不指定它,则假定为缺省网络掩码。

      以下是一个示例:


      # vi hostname.eri0
      10.0.2.5 netmask 255.0.0.0
      
    • 用 CIDR 表示法表示的 IPv4 地址(如果适合网络配置)。


      IPv4 address/network prefix
      

      以下是一个示例:


      # vi hostname.eri0
      10.0.2.5/8
      

      CIDR 前缀指定适合 IPv4 地址的网络掩码。例如,上面的 /8 指示网络掩码 255.0.0.0

    • 主机名。

      要在 /etc/hostname.interface 文件中使用系统的主机名,请确保主机名和关联的 IPv4 地址也在 hosts 数据库中。

  6. 如果已更改子网掩码,请在以下文件中修改子网项:

    • /etc/netmasks

    • (可选)/etc/hostname.interface

  7. 如果已更改子网地址,请在 /etc/defaultrouter 中将缺省路由器的 IP 地址更改为新子网缺省路由器的 IP 地址。

  8. 重新引导系统。


    # reboot -- -r
    

示例 5–1 修改要在重新引导后继续存在的 IPv4 地址和其他网络参数

此示例说明如何更改已移动到其他子网的系统的以下网络参数:

查看系统的当前状态:


# hostname
myhost
# ifconfig -a

lo0: flags=1000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000 
eri0: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 10.0.0.14 netmask ff000000 broadcast 10.255.255.255
        ether 8:0:20:c1:8b:c3 

接下来,在适当的文件中更改系统的主机名和 eri0 的 IP 地址:


# vi /etc/nodename
mynewhostname

In Solaris 10 11/06 and earlier Solaris 10 releases only, do the following:
# vi /etc/inet/ipnodes
192.168.55.14   mynewhostname      #moved system to 192.168.55 net

# vi /etc/inet/hosts
#
# Internet host table
#
127.0.0.1       localhost
192.168.55.14   mynewhostname        loghost
# vi /etc/hostname.eri0
192.168.55.14   netmask  255.255.255.0

最后,更改缺省路由器的网络掩码和 IP 地址。


# vi /etc/netmasks.
.
.
192.168.55.0    255.255.255.0
# vi /etc/defaultrouter
192.168.55.200        #moved system to 192.168.55 net
#

进行这些更改后,重新引导系统。


# reboot -- -r

验证在重新引导后是否保持刚设置的配置:


# hostname
mynewhostname
# ifconfig -a

lo0: flags=1000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000 
eri0: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 192.168.55.14 netmask ffffff00 broadcast 10.255.255.255
        ether 8:0:20:c1:8b:c3 


示例 5–2 为当前会话更改 IP 地址和主机名

此示例说明如何仅为当前会话更改主机名、主网络接口的 IP 地址和子网掩码。如果重新引导系统,则系统会恢复到其以前的 IP 地址和子网掩码。主网络接口 eri0 的 IP 地址从 10.0.0.14 更改为 192.168.34.100


# ifconfig -a

lo0: flags=1000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000 
eri0: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 10.0.0.14 netmask ff000000 broadcast 10.255.255.255
        ether 8:0:20:c1:8b:c3 
# ifconfig eri0 192.168.34.100 netmask 255.255.255.0 broadcast + up
# vi /etc/nodename
mynewhostname

# ifconfig -a
lo0: flags=1000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000 
eri0: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 192.168.34.100 netmask ffffff00 broadcast 10.255.255.255
        ether 8:0:20:c1:8b:c3 
# hostname
mynewhostname


示例 5–3 使用 CIDR 表示法为当前会话更改 IPv4 地址

此示例说明如何使用 CIDR 表示法,仅为当前会话更改主机名和 IP 地址。如果重新引导系统,则系统会恢复到其以前的 IP 地址和子网掩码。主网络接口 eri0 的 IP 地址从 10.0.0.14 更改为 192.168.6.25/27


# ifconfig -a

lo0: flags=1000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000 
eri0: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 10.0.0.14 netmask ff000000 broadcast 10.255.255.255
        ether 8:0:20:c1:8b:c3 
# ifconfig eri0 192.168.6.25/27 broadcast + up
# vi /etc/nodename
mynewhostname
# ifconfig -a

lo0: flags=1000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000 
eri0: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 192.168.06.25 netmask ffffffe0 broadcast 10.255.255.255
        ether 8:0:20:c1:8b:c3 
# hostname
mynewhostname

对 IPv4 地址使用 CIDR 表示法时,不必指定网络掩码。ifconfig 使用网络前缀标识来确定网络掩码。例如,对于 192.168.6.0/27 网络,ifconfig 设置网络掩码 ffffffe0。如果使用了更常见的 /24 前缀标识,则生成的网络掩码是 ffffff00。使用 /24 前缀标识相当于在配置新 IP 地址时为 ifconfig 指定网络掩码 255.255.255.0


另请参见

要更改除主网络接口之外的接口的 IP 地址,请参阅《系统管理指南:基本管理》如何在安装系统后配置物理接口

IPv4 网络上的包转发和路由

本节包含说明如何在 IPv4 网络上为路由器和主机配置转发和路由的过程和示例。

包转发是在网络上的系统之间共享信息的基本方法。包在源接口和目标接口(通常位于两个不同的系统上)之间进行传送。当您发出命令或将消息发送到非本地接口时,系统将那些包转发到本地网络上。然后,具有包头中所指定目标 IP 地址的接口将从本地网络检索包。如果目标地址不在本地网络上,则将包转发到下一个相邻网络或跃点。缺省情况下,在安装 Oracle Solaris : 时自动配置包转发。

路由是系统确定要向何处发送包的过程。系统上的路由协议“搜索”本地网络中的其他系统。当源系统和目标系统位于同一本地网络中时,包在它们之间传送的路径称为直接路由。如果包必须至少传送到源系统之外的一个跃点,则源系统和目标系统之间的路径称为间接路由。路由协议获知目标接口的路径,并将有关已知路由的数据保留在系统的路由表中。

路由器是特别配置的系统,具有用于将路由器连接到多个本地网络的多个物理接口。因此,路由器可以将包转发到主 LAN 之外,而不管路由器是否运行路由协议。有关路由器如何转发包的更多信息,请参阅为网络规划路由器

路由协议处理系统上的路由活动,并通过与其他主机交换路由信息,维护到远程网络的已知路由。路由器和主机都可以运行路由协议。主机上的路由协议与其他路由器和主机上的路由选择守护进程进行通信。这些协议有助于主机确定向何处转发包。启用网络接口后,系统自动与路由选择守护进程进行通信。这些守护进程监视网络中的路由器,并将路由器的地址通告本地网络中的所有主机。某些路由协议(虽然不是全部)还维护可以用于衡量路由性能的统计信息。与包转发不同,必须在 Oracle Solaris : 系统上显式配置路由。

本节介绍在 IPv4 路由器和主机上管理包转发和路由的任务。有关在启用了 IPv6 的网络中路由的信息,请参阅配置 IPv6 路由器

Oracle Solaris : 支持的路由协议

路由协议分为内部网关协议 (interior gateway protocol, IGP)、外部网关协议 (exterior gateway protocol, EGP) 或这两者的组合。内部网关协议通过常见的管理控制在网络中的路由器之间交换路由信息。在图 5–3 所示的网络拓扑中,路由器运行 IGP 以交换路由信息。通过外部网关协议,将本地互联网络连接到外部网络的路由器可以与外部网络中的其他路由器交换信息。例如,将公司网络连接到 ISP 的路由器运行 EGP,以便与 ISP 上的相应路由器交换路由信息。边界网关协议 (Border Gateway Protocol, BGP) 是常见的 EGP,用于在不同的组织和 IGP 之间传送路由信息。

下表提供有关 Oracle Solaris : 路由协议以及每个协议的关联文档的位置的信息。

表 5–1 Oracle Solaris : 路由协议

协议 

关联的守护进程 

说明 

参考 

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

in.routed

用于路由 IPv4 包和维护路由表的 IGP 

如何配置 IPv4 路由器

Internet 控制消息协议 (Internet Control Message Protocol, ICMP) 路由器搜索 

in.routed

由主机用来搜索网络上存在的路由器 

如何在单接口主机上启用静态路由如何在单接口主机上启用动态路由

下一代路由信息协议 (Routing Information Protocol next generation, RIPng) 

in.ripngd

用于路由 IPv6 包和维护路由表的 IGP 

如何配置启用了 IPv6 的路由器

相邻节点搜索 (Neighbor Discovery, ND) 协议 

in.ndpd

通告存在 IPv6 路由器并搜索网络中存在的 IPv6 主机 

配置 IPv6 接口

Oracle Solaris 10 也支持开放源代码 Quagga 路由协议套件。这些协议可以从 SFW 集合磁盘获取,尽管它们不是 Oracle Solaris : 主发行版的一部分。下表列出了 Quagga 协议:

表 5–2 OpenSolaris Quagga 协议

协议 

守护进程  

说明 

RIP 协议 

ripd

路由 IPv4 包并将其路由表通告相邻节点的 IPv4 距离向量 IGP。 

RIPng 

ripngd

IPv6 距离向量 IGP。路由 IPv6 包和维护路由表。 

开放最短路径优先 (Open Shortest Path First, OSPF) 协议 

ospfd

用于包路由和高可用性联网的 IPv4 链路状态 IGP 

边界网关协议 (Border Gateway Protocol, BGP) 

bgpd

用于在管理域之间路由的 IPv4 和 IPv6 EGP。 

下图显示使用 Quagga 路由协议的自治系统:

图 5–2 运行 Quagga 协议的公司网络

此图显示运行 Quagga 路由协议的公司网络。上下文对该图进行了说明。

该图显示了一个公司网络自治系统,该系统已划分为两个路由域:A 和 B。路由域是具有统一的路由策略的互联网络(出于管理目的或由于域使用单个路由协议)。图中的两个域都运行 Quagga 协议套件中的路由协议。

路由域 A 是通过单个 OSPF 域 ID 管理的 OSPF 域。此域中的所有系统都将 OSPF 作为其内部网关协议运行。除了内部主机和路由器外,域 A 还包括两个边界路由器。

边界路由器 R1 将公司网络连接到 ISP 并最终连接到 Internet。为便于公司网络和外界之间的通信,R1 通过其面向外部的网络接口运行 BGP。边界路由器 R5 将域 A 与域 B 连接在一起。管理域 B 上的所有系统时,都将 RIP 作为其内部网关协议。因此,边界路由器 R5 在面向域 A 的接口上必须运行 OSPF,在面向域 B 的接口上必须运行 RIP。

有关 Quagga 协议的更多信息,请参阅 Open Solaris Quagga。有关这些协议的配置过程,请转到 quagga 文档

IPv4 自治系统拓扑

具有多个路由器和网络的站点通常将其网络拓扑作为单个路由域或自治系统 (autonomous system, AS) 进行管理。下图显示了一个将被视为小型 AS 的典型网络拓扑。在贯穿本节的示例中引用的就是此拓扑。

图 5–3 具有多个 IPv4 路由器的自治系统

在下面的上下文中,对自治系统的此拓扑图进行了说明。

该图显示了一个已划分为三个本地网络(即 10.0.5.0172.20.1.0192.168.5)的 AS。四个路由器分担包转发和路由职责。AS 包括以下类型的系统:

配置 IPv4 路由器

本节包含配置 IPv4 路由器的过程和示例。要配置启用了 IPv6 的路由器,请参阅如何配置启用了 IPv6 的路由器

由于路由器提供两个或多个网络之间的接口,因此必须为路由器的每个物理网络接口指定唯一名称和 IP 地址。这样,每个路由器都有与其主网络接口关联的主机名和 IP 地址,以及其他每个网络接口的至少一个唯一名称和 IP 地址。

也可以使用以下过程将只有一个物理接口的系统(缺省情况下为主机)配置为路由器。如果单接口系统将要用作 PPP 链路上的一个端点,则可以将它配置为路由器,如《系统管理指南:网络服务》中的“规划拨号 PPP 链路”所述。


注 –

可以在 Oracle Solaris : 系统安装过程中配置路由器的所有接口。有关说明,请参见《Oracle Solaris 10 9/10 安装指南:基本安装》


Procedure如何配置 IPv4 路由器

以下说明假定要在安装后配置路由器的接口。

开始之前

在网络中物理安装路由器后,将路由器配置为以本地文件模式运行,如如何以本地文件模式配置主机中所述。此配置可确保即使网络配置服务器关闭路由器也会引导。

  1. 在要配置为路由器的系统上,承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 从 Solaris 10 1/06 发行版开始,使用 dladm show-link 命令确定在路由器上物理安装了哪些接口。


    # dladm show-link
    

    dladm show-link 的以下示例输出指示,在系统上以物理方式提供了具有四个接口的 qfe NIC 和两个 bge 接口。


    qfe0             type: legacy    mtu: 1500       device: qfe0
    qfe1             type: legacy    mtu: 1500       device: qfe1
    qfe2             type: legacy    mtu: 1500       device: qfe0
    qfe3             type: legacy    mtu: 1500       device: qfe1
    bge0             type: non-vlan  mtu: 1500       device: bge0
    bge1             type: non-vlan  mtu: 1500       device: bge1
  3. 查看在安装过程中配置和检测了路由器上的哪些接口。


    # ifconfig -a
    

    ifconfig -a 的以下示例输出显示在安装过程中配置了接口 qfe0。此接口位于 172.16.0.0 网络中。尚未配置 qfe NIC 上的其他接口(即 qfe1 - qfe3)以及 bge 接口。


    lo0: flags=1000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
            inet 127.0.0.1 netmask ff000000 
    qfe0: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
            inet 172.16.26.232 netmask ffff0000 broadcast 172.16.26.255
            ether 0:3:ba:11:b1:15 
             
  4. 配置并检测另一个接口。


    # ifconfig interface plumb up
    

    例如,对于 qfe1,请键入:


    # ifconfig qfe1 plumb up
    

    注 –

    使用 ifconfig 命令显式配置的接口在重新引导后不会继续存在。


  5. 将 IPv4 地址和网络掩码指定给接口。


    注意 – 注意 –

    可以将 IPv4 路由器配置为通过 DHCP 接收其 IP 地址,但是此建议仅适用于非常有经验的 DHCP 系统管理员。



    # ifconfig interface IPv4-address netmask+netmask
    

    例如,要将 IP 地址 192.168.84.3 指定给 qfe1,请执行以下任一操作:

    • 如果使用传统的 IPv4 表示法,请键入以下内容:


      # ifconfig qfe1 192.168.84.3 netmask + 255.255.255.0
      
    • 如果使用 CIDR 表示法,请键入以下内容:


      # ifconfig qfe1 192.168.84.3/24
      

      前缀 /24 自动将 255.255.255.0 网络掩码指定给 qfe1。有关 CIDR 前缀及其点分十进制网络掩码等效项的表,请参阅图 2–2

  6. (可选)要确保在重新引导后接口配置继续存在,请为其他每个物理接口创建 /etc/hostname.interface 文件。

    例如,请创建 /etc/hostname.qfe1/etc/hostname.qfe2 文件。然后在 /etc/hostname.qfe1 文件中键入主机名 timbuktu,在 /etc/hostname.qfe2 中键入主机名 timbuktu-201。有关配置单个接口的更多信息,请参阅如何在安装系统后配置物理接口

    在创建此文件后,务必进行配置重新引导:


    # reboot -- -r
    
  7. /etc/inet/hosts 文件中添加每个接口的主机名和 IP 地址。

    例如:


    172.16.26.232      deadsea        #interface for network 172.16.0.0
    192.168.200.20     timbuktu       #interface for network 192.168.200
    192.168.201.20     timbuktu-201   #interface for network 192.168.201
    192.168.200.9      gobi
    192.168.200.10     mojave
    192.168.200.110    saltlake
    192.168.200.12     chilean

    接口 timbuktutimbuktu-201 位于同一系统上。请注意,timbuktu-201 的网络地址与 timbuktu 的网络接口不同。之所以不同,是因为网络 192.168.201 的物理网络介质已连接到 timbuktu-201 网络接口,而网络 192.168.200 的介质已连接到 timbuktu 接口。

  8. (仅适用于 Solaris 10 11/06 及早期 Solaris 10 发行版)将每个新接口的 IP 地址和主机名添加到 /etc/inet/ipnodes 文件或等效 ipnodes 数据库中。

    例如:


    vi /etc/inet/ipnodes
    172.16.26.232      deadsea        #interface for network 172.16.0.0
    192.168.200.20     timbuktu       #interface for network 192.168.200
    192.168.201.20     timbuktu-201   #interface for network 192.168.201
    
  9. 如果路由器连接到划分为多个子网的任何网络,请将网络号和网络掩码添加到 /etc/inet/netmasks 文件。

    • 对于传统的 IPv4 地址表示法(如 192.168.83.0),应键入:


      192.168.83.0    255.255.255.0
    • 对于 CIDR 地址,在 /etc/inet/netmask 文件的项中使用前缀的点分十进制版本。网络前缀及其点分十进制等效项可以在图 2–2 中找到。例如,可以使用 /etc/netmasks 中的以下项来表示 CIDR 网络前缀 192.168.3.0/22


      192.168.3.0 255.255.252.0
  10. 在路由器上启用 IPv4 包转发。

    使用以下命令之一启用包转发:

    • 使用 routeadm 命令,如下所示:


      # routeadm -e ipv4-forwarding -u
      
    • 使用以下服务管理工具 (service management facility, SMF) 命令:


      # svcadm enable ipv4-forwarding
      

    此时,路由器可以将包转发到本地网络之外。路由器还支持静态路由(可以将路由手动添加到路由表的过程)。如果计划在此系统上使用静态路由,则路由器配置已完成。但是,需要在系统路由表中维护路由。有关添加路由的信息,请参见配置路由route(1M) 手册页。

  11. (可选)启动路由协议。

    路由选择守护进程 /usr/sbin/in.routed 自动更新路由表(该过程称为动态路由)。使用以下任一方法打开缺省 IPv4 路由协议:

    • 使用 routeadm 命令,如下所示:


      # routeadm -e ipv4-routing -u
      
    • 使用以下 SMF 命令启动路由协议,如 RIP。


      # svcadm enable route:default
      

      in.routed 守护进程关联的 SMF FMRI 是 svc:/network/routing/route

    有关 routeadm 命令的信息,请参见 routeadm(1M) 手册页。


示例 5–4 配置网络的缺省路由器

此示例说明如何升级具有多个接口的系统以使其成为缺省路由器。目标是使图 5–3 所示的路由器 2 成为网络 172.20.1.0 的缺省路由器。路由器 2 包含两个有线网络连接,一个是与网络 172.20.1.0 的连接,另一个是与网络 10.0.5.0 的连接。该示例假定路由器在本地文件模式下工作,如如何以本地文件模式配置主机中所述。

成为超级用户或承担等效角色后,可以确定系统接口的状态。从 Solaris 10 1/06 开始,可以使用 dladm 命令,如下所示:


# dladm show-link
ce0             type: legacy    mtu: 1500       device: ce0 
bge0            type: non-vlan  mtu: 1500       device: bge0 
bge1            type: non-vlan  mtu: 1500       device: bge1

# ifconfig -a
lo0: flags=1000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000 
ce0: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 172.20.1.10 netmask ffff0000 broadcast 172.20.10.100
        ether 8:0:20:c1:1b:c6 

dladm show-link 的输出指示有三个链路在系统上是可用的。仅检测了 ce0 接口。进行缺省路由器配置首先应将 bge0 接口物理连接到 10.0.5.0 网络。然后,检测该接口,并使其在重新引导后继续存在。


# ifconfig bge0 plumb up
# ifconfig bge0 10.0.5.10
# ifconfig -a
lo0: flags=1000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000 
ce0: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 172.20.1.10 netmask ffff0000 broadcast 172.255.255.255
        ether 8:0:20:c1:1b:c6 
bge0: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 10.0.5.10 netmask ff000000 broadcast 10.255.255.255
        ether 8:0:20:e5:95:c4
 # vi /etc/hostname.bge0
10.0.5.10
255.0.0.0

使用重新配置引导命令,重新引导系统:


# reboot -- -r

使用有关新检测的接口和它所连接到的网络的信息,继续配置以下网络数据库:


# vi /etc/inet/hosts
127.0.0.1       localhost
172.20.1.10        router2        #interface for network 172.20.1
10.0.5.10          router2-out    #interface for network 10.0.5
# vi /etc/inet/netmasks
172.20.1.0    255.255.0.0
10.0.5.0      255.0.0.0

最后,使用 SMF 启用包转发,再启用 in.routed 路由选择守护进程。


# svcadm enable ipv4-forwarding
# svcadm enable route:default

现在,在路由器 2 上启用了 IPv4 包转发和通过 RIP 的动态路由。但是,网络 172.20.1.0 的缺省路由器配置尚未完成。您需要执行以下操作:


路由表和路由类型

路由器和主机都维护路由表。每个系统上的路由选择守护进程都使用所有的已知路由来更新该表。在将包转发到本地网络之前,系统的内核读取路由表。路由表列出了系统知晓的网络的 IP 地址,包括系统本地缺省网络的 IP 地址。该表还列出了每个已知网络的网关系统的 IP 地址。网关是一个系统,它可以接收传出包并将它们转发到距本地网络一个跃点的位置。以下是一个仅启用了 IPv4 的网络中某系统的简单路由表:


Routing Table: IPv4
  Destination           Gateway           Flags  Ref   Use   Interface
-------------------- -------------------- ----- ----- ------ ---------
default              172.20.1.10          UG       1    532   ce0
224.0.0.0            10.0.5.100           U        1      0   bge0
10.0.0.0             10.0.5.100           U        1      0   bge0
127.0.0.1            127.0.0.1            UH       1     57   lo0

可以在 Oracle Solaris : 系统上配置以下两种类型的路由:静态路由和动态路由。可以在单个系统上配置其中一种或两种路由类型。实现动态路由的系统依赖路由协议(如用于 IPv4 网络的 RIP 和用于 IPv6 网络的 RIPng)来维护其路由表。仅运行静态路由的系统不依赖于路由协议来获取路由信息及更新路由表。相反,您必须通过 route 命令手动维护系统的已知路由。有关完整的详细信息,请参阅 route(1M) 手册页。

为本地网络或自治系统配置路由时,请考虑在特定的路由器和主机上支持哪种路由类型。

下表显示了不同的路由类型,以及各个路由类型分别最适用于哪种网络方案。

路由类型 

最适用于 

静态 

小型网络、从缺省路由器获取其路由的主机,以及仅需要知晓接下来几个跃点上一个或两个路由器的缺省路由器。

动态 

较大的互联网络、具有多个主机的本地网络中的路由器以及大型自治系统上的主机。动态路由是大多数网络中系统的最佳选择。

组合的静态和动态路由 

将静态路由网络和动态路由网络连接在一起的路由器,以及将内部自治系统与外部网络连接在一起的边界路由器。将系统上的静态路由和动态路由组合在一起是一种常见的做法。 

图 5–3 所示的 AS 将静态路由和动态路由组合在一起。

配置路由

要为 IPv4 网络实现动态路由,请使用 routeadmsvcadm 命令启动 in.routed 路由选择守护进程。有关说明,请参见如何配置 IPv4 路由器。动态路由是大多数网络和自治系统的首选策略。但是,您的网络拓扑或您网络中的特定系统可能需要静态路由。在该情况下,必须手动编辑系统路由表,向网关反映已知路由。接下来的过程说明如何添加静态路由。


注 –

到同一目标的两个路由不会自动导致系统进行负载平衡或故障转移。如果需要这些功能,请使用 IPMP,如第 30 章中所述。


Procedure如何将静态路由添加到路由表

  1. 查看路由表的当前状态。

    使用常规用户帐户运行以下形式的 netstat 命令:


    % netstat -rn
    

    输出将与如下所示类似:


    Routing Table: IPv4
      Destination           Gateway           Flags  Ref   Use   Interface
    -------------------- -------------------- ----- ----- ------ ---------
    192.168.5.125        192.168.5.10          U      1   5879   ipge0
    224.0.0.0            198.168.5.10          U      1  0       ipge0
    default              192.168.5.10          UG     1  91908
    127.0.0.1            127.0.0.1             UH     1  811302   lo0
  2. 承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  3. (可选)刷新路由表中的现有项。


    # route flush
    
  4. 添加一个在系统重新引导后继续存在的路由。


    # route -p add -net network-address -gateway gateway-address
    
    -p

    创建一个在系统重新引导后必须继续存在的路由。如果希望路由仅对当前会话有效,则不要使用 -p 选项。

    add

    指示将要添加以下路由。

    -net network-address

    指定路由将转到具有 network-address 中地址的网络。

    -gateway gateway-address

    指示指定路由的网关系统具有 IP 地址 gateway-address


示例 5–5 将静态路由添加到路由表

以下示例说明如何将静态路由添加到系统。该系统是路由器 2,即Figure&;5–3 所示的 图 5–3 网络的缺省路由器。在示例 5–4 中,为路由器 2 配置了动态路由。为了更好地充当网络 172.20.1.0 中主机的缺省路由器,路由器 2 还需要到 AS 的边界路由器 10.0.5.150 的静态路由。

要查看路由器 2 上的路由表,请执行以下操作:


# netstat -rn
Routing Table: IPv4
  Destination           Gateway           Flags  Ref   Use   Interface
-------------------- -------------------- ----- ----- ------ ---------
default              172.20.1.10          UG        1    249 ce0
224.0.0.0            172.20.1.10          U         1      0 ce0
10.0.5.0             10.0.5.20            U         1     78 bge0
127.0.0.1            127.0.0.1            UH        1     57 lo0

路由表指示路由器 2 知晓的两个路由。缺省路由将路由器 2 的 172.20.1.10 接口用作其网关。在路由器 2 上运行的 in.routed 守护进程搜索到第二个路由 10.0.5.0。此路由的网关是 IP 地址为 10.0.5.20 的路由器 1。

要将另一个路由添加到网络 10.0.5.0(它将其网关作为边界路由器),请执行以下操作:


# route -p add -net 10.0.5.0/24 -gateway 10.0.5.150/24
add net 10.0.5.0: gateway 10.0.5.150

现在,路由表具有边界路由器(其 IP 地址为 10.0.5.150/24)的路由。


# netstat -rn
Routing Table: IPv4
  Destination           Gateway           Flags  Ref   Use   Interface
-------------------- -------------------- ----- ----- ------ ---------
default              172.20.1.10          UG        1    249 ce0
224.0.0.0            172.20.1.10          U         1      0 ce0
10.0.5.0             10.0.5.20            U         1     78 bge0
10.0.5.0             10.0.5.150           U         1    375 bge0
127.0.0.1            127.0.0.1            UH        1     57 lo0

配置多宿主主机

在 Oracle Solaris : 中,有多个接口的系统被视为多宿主主机。多宿主主机不转发 IP 包。但是,您可以将多宿主主机配置为运行路由协议。通常,可以将以下类型的系统配置为多宿主主机:

Procedure如何创建多宿主主机

  1. 在预期的多宿主主机上,承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 配置并检测在 Oracle Solaris : 安装过程中没有配置的其他每个网络接口。

    请参阅如何在安装系统后配置物理接口

  3. 验证是否未在多宿主主机上启用 IP 转发。


    # routeadm
     
    

    不带选项的 routeadm 命令可报告路由选择守护进程的状态。routeadm 的以下输出说明已启用 IPv4 转发:


       Configuration   Current              Current
                         Option   Configuration        System State
    ---------------------------------------------------------------
                   IPv4 routing   disabled             disabled
                   IPv6 routing   disabled             disabled
                IPv4 forwarding   enabled              disabled
                IPv6 forwarding   disabled             disabled
    
                Routing services   "route:default ripng:default"
  4. 如果在系统上启用了包转发,请禁用它。

    使用以下命令之一:

    • 对于 routeadm 命令,请键入以下内容:


      # routeadm -d ipv4-forwarding -u
      
    • 要使用 SMF,请键入以下内容:


      # svcadm disable ipv4-forwarding
      
  5. (可选)为多宿主主机打开动态路由。

    使用以下命令之一打开 in.routed 守护进程:

    • 对于 routeadm 命令,请键入以下内容:


      # routeadm -e ipv4-routing -u
      
    • 要使用 SMF,请键入以下内容:


      # svcadm enable route:default
      

示例 5–6 配置多宿主主机

以下示例说明如何配置图 5–3 所示的多宿主主机。在该示例中,系统具有主机名 hostc。此主机具有两个接口,这两个接口都已连接到网络 192.168.5.0

要开始操作,请显示系统接口的状态。


# dladm show-link
hme0           type: legacy    mtu: 1500       device: hme0 
qfe0           type: legacy    mtu: 1500       device: qfe0 
qfe1           type: legacy    mtu: 1500       device: qfe1 
qfe2           type: legacy    mtu: 1500       device: qfe2 
qfe3           type: legacy    mtu: 1500       device: qfe3
# ifconfig -a
lo0: flags=1000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000 
hme0: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
      inet 192.168.5.82 netmask ff000000 broadcast 192.255.255.255
      ether 8:0:20:c1:1b:c6 
 

dladm show-link 命令报告,hostc 具有两个接口,共有五个可能的链路。但是,仅检测到 hme0。要将 hostc 配置为多宿主主机,必须在 qfe NIC 上添加 qfe0 或其他链路。首先,请将 qfe0 接口物理连接到 192.168.5.0 网络。然后,检测 qfe0 接口,并使其在重新引导后继续存在。


# ifconfig qf0 plumb up
# ifconfig qfe0 192.168.5.85
# ifconfig -a
lo0: flags=1000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000 
hme0: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 192.168.5.82 netmask ff0000 broadcast 192.255.255.255
        ether 8:0:20:c1:1b:c6 
qfe0: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 192.168.5.85 netmask ff000000 broadcast 192.255.255.255
        ether 8:0:20:e1:3b:c4
 # vi /etc/hostname.qfe0
192.168.5.85
255.0.0.0

使用重新配置命令,重新引导系统:


# reboot -- -r

接下来,将 qfe0 接口添加到 hosts 数据库:


# vi /etc/inet/hosts
127.0.0.1           localhost
192.168.5.82        host3    #primary network interface for host3
192.168.5.85        host3-2  #second interface

然后,在 host3 上检查包转发和路由的状态:


# routeadm
              Configuration   Current              Current
                     Option   Configuration        System State
---------------------------------------------------------------
               IPv4 routing   enabled              enabled
               IPv6 routing   disabled             disabled
            IPv4 forwarding   enabled              enabled
            IPv6 forwarding   disabled             disabled

           Routing services   "route:default ripng:default"

routeadm 命令报告,当前打开了通过 in.routed 守护进程的动态路由和包转发。但是,您将需要关闭包转发:


# svcadm disable ipv4-forwarding

也可以使用 routeadm 命令(如如何创建多宿主主机所示)关闭包转发。禁用包转发后,host3 将成为多宿主主机。


为单接口系统配置路由

单接口主机需要实现某种形式的路由。如果主机要从一个或多个本地缺省路由器获取其路由,则必须将该主机配置为使用静态路由。否则,建议对该主机使用动态路由。以下过程包含启用这两种路由类型的说明。

Procedure如何在单接口主机上启用静态路由

以下过程可在单接口主机上启用静态路由。使用静态路由的主机不运行动态路由协议(如 RIP)。相反,主机必须依赖于缺省路由器的服务来获取路由信息。IPv4 自治系统拓扑图显示了几个缺省路由器及其客户机主机。如果在安装特定主机时提供了缺省路由器的名称,则该主机已经配置为使用静态路由。


注 –

也可以使用以下过程在多宿主主机上配置静态路由。


有关 /etc/defaultrouter 文件的信息,请参见/etc/defaultrouter 文件。有关静态路由和路由表的信息,请参阅路由表和路由类型

  1. 在单接口主机上,承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 验证主机上是否存在 /etc/defaultrouter 文件。


    # cd /etc
    # ls | grep defaultrouter
    
  3. 打开文本编辑器以创建或修改 /etc/defaultrouter 文件。

  4. 添加缺省路由器的项。


    # vi  /etc/defaultrouter
    router-IP
           
    

    其中 router-IP 指示供主机使用的缺省路由器的 IP 地址。

  5. 验证路由和包转发没有在主机上运行。


    # routeadm
       Configuration   Current              Current
                         Option   Configuration        System State
    ---------------------------------------------------------------
                   IPv4 routing   disabled             disabled
                   IPv6 routing   disabled             disabled
                IPv4 forwarding   disabled            disabled
                IPv6 forwarding   disabled             disabled
    
               Routing services   "route:default ripng:default"
  6. 在本地 /etc/inet/hosts 文件中添加缺省路由器的项。

    有关配置 /etc/inet/hosts 的信息,请参阅如何更改 IPv4 地址和其他网络配置参数


示例 5–7 为单接口主机配置缺省路由器和静态路由

以下示例说明如何为Figure&;5–3 所示的网络 172.20.1.0 中的单接口主机 图 5–3 配置静态路由。hostb 需要将路由器 2 用作其缺省路由器。

首先,请以超级用户身份登录到 hostb 或承担等效角色。然后,确定主机上是否存在 /etc/defaultrouter 文件:


# cd /etc
# ls | grep defaultrouter

如果没有来自 grep 的响应,则表示您需要创建 /etc/defaultrouter 文件。


# vi /etc/defaultrouter
172.20.1.10

/etc/defaultrouter 文件中的项是连接到 172.20.1.0 网络的路由器 2 上接口的 IP 地址。接下来,验证主机当前启用包转发还是启用路由。


# routeadm
   Configuration   Current              Current
                     Option   Configuration        System State
---------------------------------------------------------------
               IPv4 routing   disabled             disabled
               IPv6 routing   disabled             disabled
            IPv4 forwarding   enabled              enabled
            IPv6 forwarding   disabled             disabled

           Routing services   "route:default ripng:default"

已对此特定主机启用包转发。可按如下所示将其禁用:


# svcadm disable ipv4-forwarding

最后,确保主机的 /etc/inet/hosts 文件包含新缺省路由器的项。


# vi /etc/inet/hosts
127.0.0.1           localhost
172.20.1.18         host2    #primary network interface for host2
172.20.1.10         router2  #default router for host2

Procedure如何在单接口主机上启用动态路由

动态路由是管理主机上路由的最简单的方法。使用动态路由的主机运行由 IPv4 的 in.routed 守护进程或 IPv6 的 in.ripngd 守护进程提供的路由协议。使用接下来的过程在单接口主机上启用 IPv4 动态路由。有关动态路由的更多信息,请参阅IPv4 网络上的包转发和路由

  1. 在主机上,承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 验证是否存在 /etc/defaultrouter 文件。


    # cd /etc
    # ls | grep defaultrouter
    
  3. 如果存在 /etc/defaultrouter,则删除在该文件中找到的所有项。

    /etc/defaultrouter 文件为空会强制主机使用动态路由。

  4. 验证是否在主机上启用了包转发和路由。


    # routeadm
       Configuration   Current              Current
                         Option   Configuration        System State
    ---------------------------------------------------------------
                   IPv4 routing   disabled             disabled
                   IPv6 routing   disabled             disabled
                IPv4 forwarding   enabled              enabled
                IPv6 forwarding   disabled             disabled
    
               Routing services   "route:default ripng:default"
  5. 如果启用了包转发,请将其关闭

    使用以下命令之一:

    • 对于 routeadm 命令,请键入以下内容:


      # routeadm -d ipv4-forwarding -u
      
    • 要使用 SMF,请键入以下内容:


      # svcadm disable ipv4-forwarding
      
  6. 在主机上启用路由协议。

    使用以下命令之一:

    • 对于 routeadm 命令,请键入以下内容:


      # routeadm -e ipv4-routing -u
      
    • 要使用 SMF,请键入以下内容:


      # svcadm enable route:default
      

    现在已启用 IPv4 动态路由。主机的路由表是由 in.routed 守护进程动态维护的。


示例 5–8 在单接口主机上运行动态路由

以下示例说明如何为图 5–3 所示的网络 192.168.5.0 中的单接口主机 hosta 配置动态路由。hosta 当前将路由器 1 用作其缺省路由器。但是,hosta 现在需要运行动态路由。

首先,请以超级用户身份登录到 hosta 或承担等效角色。然后,确定主机上是否存在 /etc/defaultrouter 文件:


# cd /etc
# ls | grep defaultrouter
defaultrouter

grep 的响应指示 hosta 存在相应的 /etc/defaultrouter 文件。


# vi /etc/defaultrouter
192.168.5.10

该文件具有项 192.168.5.10(这是路由器 1 的 IP 地址)。请删除此项以启用静态路由。接下来,需要验证是否已对该主机启用了包转发和路由。


# routeadm   Configuration   Current              Current
                     Option   Configuration        System State
---------------------------------------------------------------
               IPv4 routing   disabled             disabled
               IPv6 routing   disabled             disabled
            IPv4 forwarding   disabled             disabled
            IPv6 forwarding   disabled             disabled

           Routing services   "route:default ripng:default"

对于 hosta,路由和包转发均处于关闭状态。启用路由以完成 hosta 的动态路由配置,如下所示:


# svcadm enable route:default

监视和修改传输层服务

传输层协议 TCP、SCTP 和 UDP 是标准 Oracle Solaris : 软件包的一部分。这些协议通常无需进行干预即可正常运行。但是,站点上的具体情况可能要求您记录或修改通过传输层协议运行的服务。因而,您必须使用服务管理工具 (Service Management Facility, SMF) 修改这些服务的配置文件,《系统管理指南:基本管理》中的第 18  章 “管理服务(概述)”对此工具进行了介绍。

inetd 守护进程负责在系统引导时启动标准 Internet 服务。这些服务包括将 TCP、SCTP 或 UDP 用作其传输层协议的应用程序。可以使用 SMF 命令修改现有的 Internet 服务或添加新服务。有关 inetd 的更多信息,请参阅inetd Internet 服务守护进程

涉及传输层协议的操作包括:

有关 inetd 守护进程的详细信息,请参阅 inetd(1M) 手册页。

Procedure如何记录所有传入 TCP 连接的 IP 地址

  1. 在本地系统上,承担网络管理角色或成为超级用户。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 对于 inetd 管理的所有服务,将 TCP 跟踪设置为“启用”。


    # inetadm -M tcp_trace=TRUE
    

Procedure如何添加使用 SCTP 协议的服务

SCTP 传输协议以与 TCP 类似的方式为应用层协议提供服务。但是,SCTP 允许单方或双方为多宿主系统的两个系统进行通信。SCTP 连接称为关联。在关联中,应用程序将要传输的数据分为一个或多个消息流,即多流化。SCTP 连接可以转到有多个 IP 地址的端点,这对电话应用程序尤其重要。如果站点使用 IP 过滤器或 IPsec,则 SCTP 的多宿主功能是出于安全考虑。sctp(7P) 手册页介绍了其中一些安全方面的考虑。

缺省情况下,SCTP 包括在 Oracle Solaris : 中,且不需要其他配置。但是,可能需要显式配置某些应用层服务才能使用 SCTP。echodiscard 就是这样的应用程序。下一过程说明如何添加使用 SCTP 一对一样式套接字的回显服务。


注 –

也可以使用以下过程为 TCP 和 UDP 传输层协议添加服务。


以下任务说明如何将 inetd 守护进程管理的 SCTP inet 服务添加到 SMF 系统信息库。然后,该任务说明如何使用服务管理工具 (Service Management Facility, SMF) 命令添加该服务。

开始之前

执行以下过程之前,请为服务创建清单文件。该过程以 echo 服务的清单 echo.sctp.xml 为例。

  1. 使用拥有系统文件的写入权限的用户帐户,登录到本地系统。

  2. 编辑 /etc/services 文件并添加新服务的定义。

    对于服务定义,使用以下语法。


    service-name |port/protocol | aliases
    
  3. 添加新服务。

    转到存储服务清单的目录,然后键入以下内容:


    # cd dir-name
    # svccfg import service-manifest-name
    

    有关 svccfg 的完整语法,请参阅 svccfg(1M) 手册页。

    假定您希望使用当前位于 service.dir 目录中的清单 echo.sctp.xml 添加新的 SCTP echo 服务,应键入以下内容:


    # cd service.dir
    # svccfg import echo.sctp.xml
    
  4. 验证是否已添加服务清单:


    # svcs FMRI
    

    对于 FMRI 参数,使用服务清单的故障管理资源标识符 (Fault Managed Resource Identifier, FMRI)。例如,对于 SCTP echo 服务,应使用以下命令:


    # svcs svc:/network/echo:sctp_stream
    

    输出应该与如下所示类似:


    	STATE          STIME    FMRI
    disabled       16:17:00 svc:/network/echo:sctp_stream

    有关 svcs 命令的详细信息,请参阅 svcs(1) 手册页。

    该输出指明,新的服务清单当前处于禁用状态。

  5. 列出服务的属性以确定是否必须进行修改。


    # inetadm -l FMRI
    

    有关 inetadm 命令的详细信息,请参阅 inetadm(1M) 手册页。

    例如,对于 SCTP echo 服务,应键入以下内容:


    # inetadm -l svc:/network/echo:sctp_stream
    SCOPE    NAME=VALUE
    	         name="echo"
    	         endpoint_type="stream"
    	         proto="sctp"
    	         isrpc=FALSE
    	         wait=FALSE
    	         exec="/usr/lib/inet/in.echod -s"
             .
             .
             default  tcp_trace=FALSE
           	default  tcp_wrappers=FALSE
  6. 启用新服务:


    # inetadm -e FMRI
    
  7. 验证服务是否已启用:

    例如,对于新的 echo 服务,应键入以下内容:


    # inetadm | grep sctp_stream
    .
    .
    	enabled   online         svc:/network/echo:sctp_stream

示例 5–9 添加使用 SCTP 传输协议的服务

以下示例给出要使用的命令以及使回显服务使用 SCTP 传输层协议所需的文件项。


$ cat /etc/services
.
.
echo            7/tcp
echo            7/udp
echo            7/sctp

# cd service.dir

	# svccfg import echo.sctp.xml

# svcs network/echo*
	STATE          STIME    FMRI
	disabled       15:46:44 svc:/network/echo:dgram
	disabled       15:46:44 svc:/network/echo:stream
	disabled       16:17:00 svc:/network/echo:sctp_stream

# inetadm -l svc:/network/echo:sctp_stream
	SCOPE    NAME=VALUE
	         name="echo"
	         endpoint_type="stream"
	         proto="sctp"
	         isrpc=FALSE
	         wait=FALSE
	         exec="/usr/lib/inet/in.echod -s"
	         user="root"
	default  bind_addr=""
	default  bind_fail_max=-1
	default  bind_fail_interval=-1
	default  max_con_rate=-1
	default  max_copies=-1
	default  con_rate_offline=-1
	default  failrate_cnt=40
	default  failrate_interval=60
	default  inherit_env=TRUE
	default  tcp_trace=FALSE
	default  tcp_wrappers=FALSE

# inetadm -e svc:/network/echo:sctp_stream

# inetadm | grep echo
	disabled  disabled       svc:/network/echo:stream
	disabled  disabled       svc:/network/echo:dgram
	enabled   online         svc:/network/echo:sctp_stream

Procedure如何使用 TCP 包装控制对 TCP 服务的访问

tcpd 程序可实现 TCP 包装。TCP 包装介于守护进程和传入的服务请求之间,为诸如 ftpd 之类的服务守护进程提供了安全措施。TCP 包装记录成功的和不成功的连接尝试。此外,TCP 包装可以提供访问控制,根据发出请求的位置允许或拒绝连接。可以使用 TCP 包装保护诸如 SSH、Telnet 和 FTP 之类的守护进程。sendmail 应用程序也可以使用 TCP 包装,如《系统管理指南:网络服务》中的“sendmail 版本 8.12 支持 TCP 包装”所述。

  1. 在本地系统上,承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 将 TCP 包装设置为“启用”。


    # inetadm -M tcp_wrappers=TRUE
    
  3. 配置 TCP 包装访问控制策略,如 hosts_access(3) 手册页中所述。

    此手册页可以在 SFW CD-ROM(它与 Oracle Solaris : CD-ROM 一起打包)上的 /usr/sfw/man 目录中找到。

在 Solaris 10 3/05 中管理接口

本节介绍用于管理物理接口的以下任务:

本节新增内容

本节包含有关配置接口的信息,仅适用于 Solaris 10 3/05 OS 用户。如果使用的是对 Oracle Solaris 10 的更新,请参阅Chapter 6, 管理网络接口(任务)。有关 Oracle Solaris : 新增功能的完整列表以及 Oracle Solaris : 发行版的说明,请参见《Oracle Solaris 10 9/10 新增功能》

在 Solaris 10 3/05 中配置物理接口

基于 Oracle Solaris : 的系统通常有以下两种类型的接口:物理接口和逻辑接口。物理接口由驱动程序和其中插入网络介质(如以太网电缆)的连接器组成。逻辑接口是在现有物理接口上逻辑配置的接口,如为隧道配置的接口或使用 IPv6 地址配置的接口。本节介绍如何在安装后配置物理接口。对于需要逻辑接口的功能,相关任务附带有配置逻辑接口的说明,例如如何手动配置 IPv6 over IPv4 隧道

物理接口的类型包括内置到系统中的接口和另行购买的接口。每个接口都驻留在网络接口卡 (network interface card, NIC) 上。

内置 NIC 在购买系统时已经存在于系统上。内置 NIC 上的接口的一个示例是主网络接口,如 eri0hme0。必须在安装时配置系统的主网络接口。

诸如 erihme 之类的 NIC 只有一个接口。但是,许多品牌的 NIC 有多个接口。多接口 NIC(如 qfe 卡)有四个接口 (qfe0qfe3)。Oracle Solaris : 安装程序在安装时会检测存在的所有接口,并询问您是否要配置这些接口。可以在引导时或之后配置这些接口。


注 –

NIC 也称为网络适配器


除了内置 NIC 外,还可以向系统中添加另行购买的 NIC。按照制造商的说明物理安装另行购买的 NIC。然后,需要配置 NIC 上的接口,以便可以使用这些接口传递数据流。

以下是安装后在系统上配置其他接口的原因:

Procedure如何在安装后添加物理接口(仅适用于 Solaris 10 3/05)

开始之前

确定要用于附加接口的 IPv4 地址。

要配置的物理接口必须存在于系统上。有关安装另行购买的 NIC 硬件的信息,请参阅 NIC 附带的制造商说明。

下一过程假定在物理安装新接口后执行了重新配置引导。


注 –

下一过程仅适用于 Solaris 10 3/05 OS 用户。如果使用的是对 Oracle Solaris 10 的更新,请参阅如何在安装系统后配置物理接口


  1. 在要配置接口的系统上,承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 配置并检测每个接口。


    # ifconfig interface plumb up
    

    例如,对于 qfe0,请键入:


    # ifconfig qfe0 plumb up
    

    注 –

    使用 ifconfig 命令显式配置的接口在重新引导后不会继续存在。


  3. 将 IPv4 地址和网络掩码指定给接口。


    # ifconfig interface IPv4-address netmask+netmask
    

    例如,对于 qfe0,请键入:


    # ifconfig qfe0 10.0.0.32 netmask + 255.255.255.0
    
  4. 验证新配置的接口是否已检测并配置,或者是否带有 "UP" 标志。


    # ifconfig -a
    

    检查所显示的每个接口的状态行。确保状态行上的输出包含 UP 标志,例如:


    qfe0: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
  5. (可选)要使接口配置在重新引导后继续存在,请执行以下步骤:

    1. 为要配置的每个接口创建 /etc/hostname.interface 文件。

      例如,要添加 qfe0 接口,请创建以下文件:


      # vi /etc/hostname.qfe0
      
    2. 编辑 /etc/hostname.interface 文件。

      至少将接口的 IPv4 地址添加到该文件。还可以将网络掩码和其他配置信息添加到该文件。


      注 –

      有关如何将 IPv6 地址添加到接口,请参阅修改主机和服务器的 IPv6 接口配置


    3. 将新接口的项添加到 /etc/inet/hosts 文件中。

    4. 执行重新配置引导。


      # reboot -- -r
      
    5. 验证是否已配置在 /etc/hostname. interface 文件中创建的接口。


      # ifconfig -a
      

示例 5–10 在安装系统后配置接口

以下示例说明如何添加两个接口 qfe0qfe1。这些接口已连接到主网络接口 hme0 所在的同一网络。请注意,在重新引导系统之前,此接口配置一直存在。有关说明如何使接口配置在重新引导后继续存在的示例,请参见示例 6–2。但是,从 Solaris 10 1/06 OS 开始,在该示例中使用的 dladm 命令才可用。


# ifconfig qfe0 plumb up
# ifconfig qfe1 plumb up
# ifconfig qfe0 10.0.0.32 netmask 255.0.0.0
# ifconfig qfe1 10.0.0.33 netmask 255.0.0.0

# ifconfig -a
lo0: flags=1000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000 
hme0: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 10.0.0.14 netmask ff000000 broadcast 10.255.255.255
        ether 8:0:20:c1:8b:c3 
qfe0: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 3
        inet 10.0.0.32 netmask ff000000 broadcast 10.255.255.255
        ether 8:0:20:c8:f4:1d 
qfe1: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 4
        inet 10.0.0.33 netmask ff000000 broadcast 10.255.255.255
        ether 8:0:20:c8:f4:1e 

另请参见

Procedure如何删除物理接口(仅适用于 Solaris 10 3/05)


注 –

下一过程仅适用于 Solaris 10 3/05 OS 用户。如果使用的是对 Oracle Solaris 10 的更新,请参阅如何删除物理接口


  1. 在要删除接口的系统上,承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 删除物理接口。

    使用 ifconfig 命令的以下格式:


    # ifconfig interfacedown unplumb
    

    例如,以下命令将删除接口 eri1


    # ifconfig eri1 down unplumb
    

配置 VLAN(仅适用于 Solaris 10 3/05)


注 –

本节包含有关配置 VLAN 的信息,仅适用于 Solaris 10 3/05 OS 用户。如果使用的是对 Oracle Solaris 10 的更新,请参阅管理虚拟局域网


虚拟局域网 (Virtual local area network, VLAN) 通常用于将网络用户组划分到可管理的广播域中、创建工作组的逻辑段以及在每个逻辑段之间实施安全策略。通过适配器上的多个 VLAN,有单个适配器的服务器可以在逻辑上存在于多个 IP 子网中。缺省情况下,可以为服务器上每个可识别 VLAN 的适配器定义 512 个 VLAN。

如果网络不需要多个 VLAN,则可以使用缺省配置,在这种情况下不需要进行进一步的配置。

有关 VLAN 的概述,请参阅VLAN 拓扑概述

VLAN 可以按照各种条件进行创建,但是必须为每个 VLAN 指定 VLAN 标记或 VLAN ID (VID)。VID 是标识唯一 VLAN 的 12 位标识符,介于 1 和 4094 之间。对于每个网络接口(例如 ce0ce1ce2 等),可以创建 512 个可能的 VLAN。由于通常使用 IP 子网,因此在设置 VLAN 网络接口时应使用 IP 子网。这意味着为物理网络接口的 VLAN 接口指定的每个 VID 都属于不同的子网。

标记以太网帧要求将标记头添加到帧。该头紧邻目标 MAC 地址和源 MAC 地址之后插入。标记头由两字节的以太网标记协议标识符 (Ethernet Tag Protocol Identifier, TPID, 0x8100) 和两字节的标记控制信息 (Tag Control Information, TCI) 组成。下图显示以太网标记头的格式。

图 5–4 以太网标记头的格式

该图显示以太网标记头的布局,如上文所述。

Procedure如何配置静态 VLAN(仅适用于 Solaris 10 3/05)


注 –

此过程包含有关配置 VLAN 的信息,仅适用于 Solaris 10 3/05 OS 用户。如果使用的是对 Oracle Solaris 10 的更新,请参阅如何配置 VLAN


  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 确定正在系统上使用的接口的类型。

    系统上的网络适配器可能不是用字母 ce 来表示(这是 VLAN 所要求的)。


    # ifconfig -a
    lo0: flags=1000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4>
    mtu 8232 index 1
            inet 127.0.0.1 netmask ff000000 
    hme0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4>
    mtu 1500 index 2
            inet 129.156.200.77 netmask ffffff00 broadcast
    129.156.200.255
  3. 对于将为服务器上的每个适配器配置的每个 VLAN,创建一个 hostname.cenum 文件(对于 IPv6,为 hostname6.cenum 文件)。

    使用以下同时包括 VID 和物理连接点 (physical point of attachment, PPA) 的命名格式:

    VLAN 逻辑 PPA = 1000 * VID + Device PPA ce123000 = 1000*123 + 0

    例如: hostname.ce123000

    VLAN 逻辑 PPA = 1000 * VID + Device PPA ce11000 = 1000*11 + 0

    例如: hostname.ce11000

    此格式将可以在 /etc/path_to_inst 文件中配置的 PPA(实例)最大数限制为 1000。

    例如,在装有 Sun 千兆位以太网/P 3.0 适配器(它有实例 0,该实例属于 VID 分别为 123 和 224 的两个 VLAN)的服务器上,可以将 ce123000ce224000 分别用作两个 VLAN PPA。

  4. 配置 VLAN 虚拟设备:

    例如,可以使用 ifconfig 的以下示例:


    # ifconfig ce123000 plumb up
    # ifconfig ce224000 plumb up
    

    在有 VLAN 设备 ce123000ce224000 的系统上,ifconfig -a 的输出应该与如下所示类似:


    # ifconfig -a
    lo0: flags=1000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
            inet 127.0.0.1 netmask ff000000 
    hme0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
            inet 129.144.131.91 netmask ffffff00 broadcast 129.144.131.255
            ether 8:0:20:a4:4f:b8 
    ce123000: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 3
            inet 199.199.123.3 netmask ffffff00 broadcast 199.199.123.255
            ether 8:0:20:a4:4f:b8 
    ce224000: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 4
            inet 199.199.224.3 netmask ffffff00 broadcast 199.199.224.255
            ether 8:0:20:a4:4f:b8 
  5. 在交换机上,将 VLAN 标记和 VLAN 端口设置为与在服务器上设置的 VLAN 一致。

    使用步骤 4 中的示例,可以设置交换机上的 VLAN 端口 123 和 224 或者 VLAN 端口 10 和 11。

    有关设置 VLAN 标记和端口的特定说明,请参阅交换机附带的文档。

第 6 章 管理网络接口(任务)

本章包含有关网络接口的任务和信息:

网络接口管理方面的新增功能

本章中的信息介绍从 Solaris 10 1/06 发行版开始的接口配置。如果使用 Solaris 10 的最初发行版 3/05,请参阅在 Solaris 10 3/05 中管理接口。有关 Oracle Solaris : 新增功能的完整列表以及 Oracle Solaris : 发行版的说明,请参见《Oracle Solaris 10 9/10 新增功能》

在 Solaris 10 1/06 中,引入了以下新功能:

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

接口管理(任务列表)

下表列出了配置网络接口的各种任务,包括 VLAN 和链路聚合等特殊配置。此表中包含对各项任务要完成的工作的说明,以及当前文档中详细介绍用于执行任务的特定步骤的章节。

任务 

说明 

参考 

检查系统上接口的状态。 

列出系统上的所有接口,并检查已检测哪些接口。 

如何获取接口状态

在安装系统后添加单个接口。 

通过配置其他接口将系统更改为多宿主主机或路由器。 

如何在安装系统后配置物理接口

SPARC: 检查接口的 MAC 地址是否唯一。 

确保接口是使用其出厂安装的 MAC 地址而不是系统 MAC 地址(仅限 SPARC)配置的。 

SPARC: 如何确保接口的 MAC 地址是唯一的

规划虚拟局域网 (Virtual Local Area Network, VLAN)。 

在创建 VLAN 之前执行必要的规划任务。 

如何规划 VLAN 配置

配置 VLAN。 

在网络上创建和修改 VLAN。 

如何配置 VLAN

计划聚合。 

在配置聚合前先设计聚合并执行必要的规划任务。 

链路聚合概述

配置聚合。 

执行各种与链路聚合相关的任务。 

如何创建链路聚合

规划并配置 IPMP 组。 

为属于 IPMP 组的接口配置故障转移和故障恢复。 

如何规划 IPMP 组

如何配置具有多个接口的 IPMP 组

管理单个网络接口

安装 Oracle Solaris : 后,您可能会在系统上配置或管理接口以达到以下目的:

本节包含有关配置单个网络接口的信息(从 Solaris 10 1/06 发行版开始)。有关将接口配置到以下分组之一的信息,请参阅以下各节:

Procedure如何获取接口状态

从 Solaris 10 1/06 开始,此过程说明如何确定系统上当前可用的接口及其状态。此过程还显示当前已检测哪些接口。如果使用的是早期的 Solaris 10 3/05,请参阅如何获取有关特定接口的信息

  1. 在要配置接口的系统上,承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 确定当前在系统上安装了哪些接口。


    # dladm show-link
    

    此步骤使用 dladm 命令(该命令在 dladm(1M) 手册页中详述)。此命令报告它找到的所有接口驱动程序,而不管接口当前是否已配置。

  3. 确定当前在系统上已检测哪些接口。


    # ifconfig -a
    

    ifconfig 命令具有许多附加功能,其中包括检测接口。有关更多信息,请参阅 ifconfig(1M) 手册页。


示例 6–1 使用 dladm 命令获取接口的状态

以下示例说明 dladm 命令显示的状态。


# dladm show-link
ce0             type: legacy    mtu: 1500       device: ce0
ce1             type: legacy    mtu: 1500       device: ce1
bge0            type: non-vlan  mtu: 1500       device: bge0
bge1            type: non-vlan  mtu: 1500       device: bge1
bge2            type: non-vlan  mtu: 1500       device: bge2
 

dladm show-link 的输出指示本地主机可以使用四个接口驱动程序。可以针对 VLAN 配置 cebge 接口。但是,只有非 VLAN 类型的 GLDV3 接口才可以用于链路聚合。

以下示例说明 ifconfig -a 命令显示的状态。


# ifconfig -a
 lo0: flags=2001000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu
8232 index 1
         inet 127.0.0.1 netmask ff000000  
ce0: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4>mtu 1500 index 3
         inet 192.168.84.253 netmask ffffff00 broadcast 192.168.84.255
        ether 0:3:ba:7:84:5e  
bge0: flags=1004843 <UP,BROADCAST,RUNNING,MULTICAST,DHCP,IPv4>mtu 1500 index 2
         inet 10.8.57.39 netmask ffffff00 broadcast 10.8.57.255
        ether 0:3:ba:29:fc:cc 

ifconfig -a 命令的输出仅显示两个接口(ce0bge0)的统计信息。此输出说明仅检测了 ce0bge0,而且它们可以由网络通信流量使用。可以在 VLAN 中使用这些接口。由于已检测 bge0,无法在聚合中再使用此接口。


Procedure如何在安装系统后配置物理接口

使用下一过程来配置接口。如果使用的是 Solaris 10 3/05 发行版,则应使用如何在安装后添加物理接口(仅适用于 Solaris 10 3/05)中的过程。

开始之前
  1. 在要配置接口的系统上,承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 确定当前在系统上安装了哪些接口。


    # dladm show-link
    
  3. 配置并检测每个接口。


    # ifconfig interface plumb up
    

    例如,对于 qfe0,请键入:


    # ifconfig qfe0 plumb up
    

    注 –

    使用 ifconfig 命令显式配置的接口在重新引导后不会继续存在。


  4. 将 IPv4 地址和网络掩码指定给接口。


    # ifconfig interface IPv4-address netmask+netmask
    

    例如,对于 qfe0,请键入:


    # ifconfig
    qfe0 192.168.84.3 netmask + 255.255.255.0
    

    注 –

    可以使用传统的 IPv4 表示法或 CIDR 表示法指定 IPv4 地址。


  5. 验证新配置的接口是否已检测并配置,或者是否带有 "UP" 标志。


    # ifconfig
    -a
    

    检查所显示的每个接口的状态行。确保状态行上的输出包含 UP 标志,例如:


    qfe0: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4>
    mtu 1500 index 2
  6. (可选)要使接口配置在重新引导后继续存在,请执行以下步骤:

    1. 为要配置的每个接口创建 /etc/hostname.interface 文件。

      例如,要添加 qfe0 接口,请创建以下文件:


      # vi /etc/hostname.qfe0
      

      注 –

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

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


    2. 编辑 /etc/hostname.interface 文件。

      至少将接口的 IPv4 地址添加到该文件。可以使用传统的 IPv4 表示法或 CIDR 表示法指定接口的 IP 地址。还可以将网络掩码和其他配置信息添加到该文件。


      注 –

      有关如何将 IPv6 地址添加到接口,请参阅修改主机和服务器的 IPv6 接口配置


    3. 对于 Solaris 10 11/06 和 Oracle Solaris 10 的早期发行版,将新接口的项添加到 /etc/inet/ipnodes 文件中。

    4. 将新接口的项添加到 /etc/inet/hosts 文件中。

    5. 执行重新配置引导。


      # reboot -- -r
      
    6. 验证是否已配置在 /etc/hostname. interface 文件中创建的接口。


      # ifconfig -a
      

      有关示例,请参阅示例 6–2


示例 6–2 添加持久性接口配置

该示例说明如何将接口 qfe0qfe1 配置为主机。这些接口在重新引导后仍继续存在。


# dladm show-link
eri0    type: legacy    mtu: 1500       device: eri0 
qfe0    type: legacy    mtu: 1500       device: qfe0 
qfe1    type: legacy    mtu: 1500       device: qfe1 
qfe2    type: legacy    mtu: 1500       device: qfe2 
qfe3    type: legacy    mtu: 1500       device: qfe3 
bge0    type: non-vlan  mtu: 1500       device: bge0
# vi /etc/hostname.qfe0
192.168.84.3 netmask 255.255.255.0
# vi /etc/hostname.qfe1 
192.168.84.72 netmask 255.255.255.0
# vi /etc/inet/hosts
# Internet host table 
# 
127.0.0.1       localhost 
10.0.0.14       myhost
192.168.84.3       interface-2 
192.168.84.72       interface-3
For Solaris 10 11/06 and earlier releases:# vi /etc/inet/ipnodes
10.0.0.14 myhost
192.168.84.3       interface-2 
192.168.84.72       interface-3

此时,可以重新引导系统。


# reboot -- -r

引导系统后,验证接口配置。


ifconfig -a
# ifconfig -a lo0: flags=1000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu
8232 index 1
         inet 127.0.0.1 netmask ff000000  
eri0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
         inet 10.0.0.14netmask ff000000 broadcast 10.255.255.255
         ether 8:0:20:c1:8b:c3  
qfe0:flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 3  
      inet 192.168.84.3 netmask ffffff00 broadcast 192.255.255.255
      ether 8:0:20:c8:f4:1d  
qfe1: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4>mtu 1500 index 4
         inet 192.168.84.72 netmask ffffff00 broadcast 10.255.255.255
        ether 8:0:20:c8:f4:1e 

另请参见

Procedure如何删除物理接口

使用此过程可删除物理接口。如果使用的是早期的 Solaris 10 3/05,请参阅如何删除物理接口(仅适用于 Solaris 10 3/05)

  1. 在要删除接口的系统上,承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 删除物理接口。


    # ifconfig interface down unplumb 
    

    例如,要删除接口 qfe1,可键入:


    # ifconfig qfe1 down unplumb
    

ProcedureSPARC: 如何确保接口的 MAC 地址是唯一的

使用此过程配置 MAC 地址。

一些应用程序要求主机上的每个接口都具有唯一的 MAC 地址。但是,每个基于 SPARC 的系统都具有系统范围的 MAC 地址,缺省情况下所有接口都使用该地址。以下是在 SPARC 系统上可能希望为接口配置出厂安装的 MAC 地址的两种情况。

EEPROM 参数 local-mac-address? 确定 SPARC 系统上的所有接口使用系统范围的 MAC 地址还是其唯一 MAC 地址。以下过程说明如何使用 eeprom 命令检查 local-mac-address? 的当前值以及更改它的值(如有必要)。

  1. 在要配置接口的系统上,承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 确定系统上的所有接口当前是否都使用系统范围的 MAC 地址。


    # eeprom local-mac-address?
    local-mac-address?=false

    在此示例中,对 eeprom 命令的响应 local-mac-address?=false 表示所有接口确实使用了系统范围的 MAC 地址。local-mac-address?=false 的值必须先更改为 local-mac-address?=true,然后接口才能成为 IPMP 组的成员。对于聚合,也应该将 local-mac-address?=false 更改为 local-mac-address?=true

  3. 如有必要,请按如下所示更改 local-mac-address? 的值:


    # eeprom local-mac-address?=true
    

    重新引导系统时,具有出厂安装的 MAC 地址的接口现在使用这些出厂设置,而不是系统范围的 MAC 地址。没有出厂设置的 MAC 地址的接口继续使用系统范围的 MAC 地址。

  4. 检查系统上所有接口的 MAC 地址。

    查找多个接口具有相同 MAC 地址的情况。在此示例中,所有接口都使用系统范围的 MAC 地址 8:0:20:0:0:1


    ifconfig -a
    lo0: flags=1000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
          inet 127.0.0.1 netmask ff000000  
    hme0: flags=1004843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
          inet 10.0.0.112 netmask ffffff80 broadcast 10.0.0.127
          ether 8:0:20:0:0:1 
    ce0: flags=1004843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
          inet 10.0.0.114 netmask ffffff80 broadcast 10.0.0.127
          ether 8:0:20:0:0:1 
    ce1: flags=1004843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
          inet 10.0.0.118 netmask ffffff80 broadcast 10.0.0.127
          ether 8:0:20:0:0:1

    注 –

    仅当多个网络接口仍具有相同 MAC 地址时,才继续执行下一步。否则,转到最后一步。


  5. 如有必要,请手动配置其余的接口,以便所有接口都具有唯一的 MAC 地址。

    /etc/hostname.interface 文件中为特定接口指定唯一的 MAC 地址。

    在步骤 4 的示例中,需要用本地管理的 MAC 地址配置 ce0ce1。例如,要用本地管理的 MAC 地址 06:05:04:03:02 重新配置 ce1,可将以下行添加到 /etc/hostname.ce1 中:


    ether 06:05:04:03:02 
    

    注 –

    要防止手动配置的 MAC 地址与网络中的其他 MAC 地址冲突所带来的任何风险,必须始终配置本地管理的 MAC 地址,如 IEEE 802.3 标准定义的那样。


    也可以使用 ifconfig ether 命令为当前会话配置接口的 MAC 地址。但是,使用 ifconfig 直接进行的任何更改在重新引导后都不会保留。有关详细信息,请参阅 ifconfig(1M) 手册页。

  6. 重新引导系统。

管理物理接口的基础知识

网络接口提供系统和网络之间的连接。基于 Oracle Solaris : 的系统可以具有两种类型的接口:物理接口和逻辑接口。物理接口由软件驱动程序和连接网络介质(如以太网电缆)的连接器组成。可以对物理接口进行分组,以达到管理性或可用性目的。逻辑接口是在现有物理接口上配置的,通常用于在物理接口上添加地址和创建隧道端点。


注 –

逻辑网络接口在使用它们的任务 (如 IPv6 任务、IPMP 任务、DHCP 任务和其他任务)中说明。


大多数计算机系统至少有一个由制造商在主系统板上内置的物理接口。一些系统也可能具有多个内置接口。

除了内置接口外,您可以向系统添加另行购买的接口。另行购买的接口称为网络接口卡 (network interface card, NIC)。应按照制造商的说明安装 NIC。


注 –

NIC 也称为网络适配器


在系统安装过程中,Oracle Solaris : 安装程序检测物理安装的任何接口并显示每个接口的名称。至少必须配置接口列表中的一个接口。在安装过程中配置的第一个接口成为主网络接口。主网络接口的 IP 地址与系统的已配置主机名(存储在 /etc/nodename 文件中)关联。但是,可以在安装过程中或稍后配置任何其他接口。

网络接口名称

每个物理接口都由唯一的设备名称标识。设备名称的语法如下:


<driver-name><instance-number>

Oracle Solaris : 系统上的驱动程序名称可能包括 cehmebgee1000g 和许多其他驱动程序名称。变量 instance-number 可以具有从零到 n 的值,具体取决于在系统上安装了多少个该驱动程序类型的接口。

以 100BASE-TX 快速以太网接口为例,该接口通常用作主机系统和服务器系统上的主网络接口。此接口的一些典型驱动程序名称是 eriqfehme。在用作主网络接口时,快速以太网接口具有诸如 eri0qfe0 之类的设备名称。

诸如 erihme 之类的 NIC 只有一个接口。但是,许多品牌的 NIC 有多个接口。例如,Quad 快速以太网 (qfe) 卡具有四个接口:从 qfe0qfe3

检测接口

必须先对接口进行检测,之后它才能在系统和网络之间传递通信流量。检测过程涉及将接口与设备名称进行关联。然后,设置流以使 IP 协议可以使用该接口。物理接口和逻辑接口都必须进行检测。使用 ifconfig 命令的适当语法,作为引导序列的一部分或显式地检测接口。

在安装过程中配置接口时,将自动检测该接口。如果在安装过程中决定不在系统上配置其他接口,则不会检测这些接口。

Oracle Solaris : 接口类型

从 Solaris 10 1/06 发行版开始,Oracle Solaris : 支持以下两种类型的接口:

管理虚拟局域网


注 –

如果使用的是早期的 Solaris 10 3/05,请参阅配置 VLAN(仅适用于 Solaris 10 3/05)


虚拟局域网 (virtual local area network, VLAN) 是在 TCP/IP 协议栈的数据链路层上对局域网的细分。可以为采用交换机技术的局域网创建 VLAN。通过将用户组指定给 VLAN,可以加强整个本地网络的网络管理和安全性。还可以将同一系统上的接口指定给不同的 VLAN。

如果需要实现以下目的,请考虑将本地网络划分为多个 VLAN:

VLAN 拓扑概述

使用交换 LAN 技术,可以将本地网络中的系统组织到 VLAN 中。将本地网络划分为 VLAN 之前,必须先获取支持 VLAN 技术的交换机。可以对交换机上的所有端口进行配置,使其为单个 VLAN 或多个 VLAN 提供服务,具体取决于 VLAN 拓扑设计。配置交换机端口的过程因交换机制造商而异。

下图显示了子网地址为 192.168.84.0 的局域网。此 LAN 已细分为三个 VLAN:红 VLAN、黄 VLAN 和蓝 VLAN。

图 6–1 具有三个 VLAN 的局域网

周围的上下文介绍了该图的内容。

LAN 192.168.84.0 上的连通性由交换机 1 和交换机 2 处理。红 VLAN 包含会计工作组中的系统。人力资源工作组的系统位于黄 VLAN 中。信息技术工作组的系统被指定给蓝 VLAN。

VLAN 标记和物理连接点

局域网中的每个 VLAN 都由 VLAN 标记或 VLAN ID (VID) 标识。VID 是在 VLAN 配置过程中指定的。VID 是一个介于 1 和 4094 之间的 12 位标识符,为每个 VLAN 提供唯一标识。在图 6–1 中,红 VLAN 的 VID 是 789,黄 VLAN 的 VID 是 456,蓝 VLAN 的 VID 是 123。

配置交换机使其支持 VLAN 时,需要为每个端口指定 VID。端口上的 VID 必须与指定给该端口所连接的接口的 VID 相同,如下图所示。

图 6–2 具有 VLAN 的网络的交换机配置

周围的上下文介绍了该图的内容。

图 6–2 显示了连接到不同 VLAN 的多台主机。两台主机属于同一个 VLAN。在此图中,三台主机的主网络接口连接到交换机 1。主机 A 是蓝 VLAN 的成员。因此,主机 A 的接口配置为 VID 123。此接口连接到交换机 1 上的端口 1,该端口随后被配置为 VID 123。主机 B 是 VID 为 456 的黄 VLAN 的成员。主机 B 的接口连接到交换机 1 上的端口 5,该端口随后被配置为 VID 456。最后,主机 C 的接口连接到交换机 1 上的端口 9。蓝 VLAN 被配置为 VID 123。

该图还显示了一台主机也可以属于多个 VLAN。例如,主机 A 通过主机的接口配置了两个 VLAN。第二个 VLAN 被配置为 VID 456,并连接到端口 3,而端口 3 也被配置为 VID 456。因此,主机 A 同是蓝 VLAN 和黄 VLAN 的成员。

在 VLAN 配置过程中,必须指定 VLAN 的物理连接点(即 PPA)。使用以下公式可以获得 PPA 值:


driver-name + VID * 1000 + device-instance

请注意,device-instance 编号必须小于 1000。

例如,若要将 ce1 接口配置为 VLAN 456 的一部分,则创建以下 PPA:


ce + 456 * 1000 + 1= ce456001

规划网络中的 VLAN

使用以下过程可规划网络上的 VLAN。

Procedure如何规划 VLAN 配置

  1. 检查本地网络拓扑,并确定在何处划分 VLAN 比较合适。

    有关此类拓扑的基本示例,请参阅图 6–1

  2. 创建 VID 的编号方案,并将 VID 指定给每个 VLAN。


    注 –

    VLAN 编号方案可能已存在于网络中。如果是这样,则必须在现有的 VLAN 编号方案中创建 VID。


  3. 在每个系统上,确定哪些接口将是特定 VLAN 的成员。

    1. 确定系统上配置了哪些接口。


      # dladm show-link
      
    2. 确定哪个 VID 将与系统上的相应数据链路相关联。

    3. 为要配置为 VLAN 一部分的每个接口创建 PPA。

    并非系统上的所有接口都一定要在同一 VLAN 上进行配置。

  4. 检查接口与网络交换机的连接。

    记下每个接口的 VID 以及每个接口所连接到的交换机端口。

  5. 用与所连接到的接口相同的 VID 配置交换机的每个端口。

    有关配置说明,请参阅交换机制造商的文档。

配置 VLAN


注 –

如果使用的是早期的 Solaris 10 3/05,请参阅配置 VLAN(仅适用于 Solaris 10 3/05)


目前,Oracle Solaris : 在以下接口类型上支持 VLAN:

对于传统接口类型,只有 ce 接口可以成为 VLAN 的成员。可以在同一 VLAN 中配置不同类型的接口。


注 –

可以配置多个 VLAN 到 IPMP 组中。有关 IPMP 组的更多信息,请参阅IPMP 接口配置


Procedure如何配置 VLAN

如果使用的是 Solaris 10 3/05,则应使用如何配置静态 VLAN(仅适用于 Solaris 10 3/05)中的过程。

  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 确定正在系统上使用的接口的类型。


    # dladm show-link
    

    以下输出显示可用的接口类型:


    ce0             type: legacy    mtu: 1500       device: ce0
     ce1             type: legacy    mtu: 1500       device: ce1
     bge0            type: non-vlan  mtu: 1500       device: bge0
     bge1            type: non-vlan  mtu: 1500       device: bge1
     bge2            type: non-vlan  mtu: 1500       device: bge2
  3. 将接口配置为 VLAN 的一部分。


    # ifconfig interface-PPA plumb IP-address up
    

    例如,可以使用以下命令,将新 IP 地址为 10.0.0.2 的接口 ce1 配置到 VID 为 123 的 VLAN 中:


    # ifconfig ce123001 plumb 10.0.0.2
    up
    

    注 –

    您可以将 IPv4 和 IPv6 地址指定给 VLAN,就像您对其他接口所执行的那样。


  4. (可选)要使 VLAN 设置在重新引导后继续存在,请为配置为 VLAN 的一部分的每个接口创建 hostname.interface-PPA 文件。


    # cat hostname.interface-PPA
    IPv4-address
    
  5. 在交换机上,设置 VLAN 标记和 VLAN 端口,使之与在系统上设置的 VLAN 相对应。


示例 6–3 配置 VLAN

此示例说明如何将设备 bge1bge2 配置到 VID 为 123 的 VLAN 中。


# dladm show-link
ce0            type: legacy    mtu: 1500       device: ce0
ce1            type: legacy    mtu: 1500       device: ce1
bge0           type: non-vlan  mtu: 1500       device: bge0 
bge1           type: non-vlan  mtu: 1500       device: bge1 
bge2           type: non-vlan  mtu: 1500       device: bge2
# ifconfig bge123001 plumb 10.0.0.1 up
# ifconfig bge123002 plumb 10.0.0.2 up  
# cat hostname.bge123001   10.0.0.1
# cat hostname.bge123002   10.0.0.2
# ifconfig -a
 lo0: flags=2001000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
         inet 127.0.0.1 netmask ff000000  
 bge123001: flags=201000803<UP,BROADCAST,MULTICAST,IPv4,CoS> mtu 1500 index 2
         inet 10.0.0.1 netmask ff000000 broadcast 10.255.255.255
         ether 0:3:ba:7:84:5e  
bge123002:flags=201000803 <UP,BROADCAST,MULTICAST,IPv4,CoS> mtu 1500 index 3
         inet 10.0.0.2 netmask ff000000 broadcast 10.255.255.255
         ether 0:3:ba:7:84:5e  
ce0: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4>mtu 1500 index 4
         inet 192.168.84.253 netmask ffffff00 broadcast 192.168.84.255
         ether 0:3:ba:7:84:5e
# dladm show-link
ce0             type: legacy    mtu: 1500       device: ce0
ce1             type: legacy    mtu: 1500       device: ce1
bge0            type: non-vlan  mtu: 1500       device: bge0 
bge1            type: non-vlan  mtu: 1500       device: bge1 
bge2            type: non-vlan  mtu: 1500       device: bge2
bge123001       type: vlan 123  mtu: 1500       device: bge1 
bge123002       type: vlan 123  mtu: 1500       device: bge2

链路聚合概述


注 –

最初的 Oracle Solaris 10 发行版和更早的 Oracle Solaris : 版本不支持链路聚合。要为这些早期的 Oracle Solaris : 发行版创建链路聚合,请使用 Sun Trunking,如《Sun Trunking 1.3 Installation and Users Guide》所述。


Oracle Solaris : 支持将网络接口组织到链路聚合中。链路聚合由系统上配置在一起作为单个逻辑单元的若干接口组成。链路聚合也称为中继,它在 IEEE 802.3ad Link Aggregation Standard(IEEE 802.3ad 链路聚合标准) 中进行了定义。

IEEE 802.3ad 链路聚合标准提供了一种方法,可将多个全双工以太网链路的容量组合到单个逻辑链路中。然后此链路聚合组被视为单个链路,实际上也是这样。

以下是链路聚合的功能:

链路聚合基础

基本链路聚合拓扑涉及由一组物理接口组成的单个聚合。在以下情况下,可能使用基本链路聚合:

图 6–3 显示了承载常见 Web 站点的服务器的聚合。该站点需要增加带宽以满足 Internet 用户和站点数据库服务器之间的查询通信流量。出于安全目的,必须对外部应用程序隐藏服务器上各个接口的存在。解决方案是使用 IP 地址为 192.168.50.32 的聚合 aggr1。此聚合由三个接口(bge0bge2)组成。这些接口专用于发出通信流量以响应用户查询。来自所有接口的包流量上的传出地址是aggr1 的 IP 地址,即 192.168.50.32

图 6–3 基本链路聚合的拓扑

该图显示链路 aggr1 的块。三个物理接口 bge0–bge2 是从链路块派生而成的。

图 6–4 描述具有两个系统的本地网络,其中每个系统都配置了一个聚合。这两个系统由交换机连接在一起。如果需要通过交换机运行聚合,则该交换机必须支持聚合技术。对于高可用性和冗余系统,此类型的配置尤其有用。

在该图中,系统 A 具有的聚合由两个接口(即 bge0bge1)组成。这些接口通过聚合端口连接到交换机。系统 B 具有的聚合由四个接口(即 e1000g0e1000g3)组成。这些接口也连接到交换机上的聚合端口。

图 6–4 具有交换机的链路聚合拓扑

在上文中对该图进行了说明。

背对背链路聚合

背对背链路聚合拓扑涉及两个单独的系统,这两个系统通过电缆直接互连,如下图所示。这两个系统运行并行聚合。

图 6–5 基本的背对背聚合拓扑

在下文中对该图进行了说明。

在此图中,系统 A 上的设备 bge0 直接链接到系统 B 上的 bge0,依此类推。这样,系统 A 和 B 可以支持冗余和高可用性,以及这两个系统之间的高速通信。每个系统还将接口 ce0 配置为用于本地网络内的通信流。

背对背链路聚合最常见的应用是镜像数据库服务器。这两个服务器需要一起更新,因此需要很大的带宽、高速通信流和可靠性。最常使用背对背链路聚合的是数据中心。

策略和负载平衡

如果计划使用链路聚合,请考虑定义传出通信的策略。此策略可以指定希望如何在聚合的可用链路之间分配包,从而建立负载平衡。以下是可能用于聚合策略的层说明符及其意义:

这些策略的任意组合也是有效的。缺省策略是 L4。有关更多信息,请参阅 dladm(1M) 手册页。

聚合模式和交换机

如果聚合拓扑涉及通过交换机的连接,则必须注意此交换机是否支持链路聚合控制协议 (link aggregation control protocol, LACP)。如果交换机支持 LACP,则必须为交换机和聚合配置 LACP。但是,可以定义运行 LACP 的以下模式之一:

有关语法信息,请参见 dladm(1M) 手册页和交换机制造商文档。

链路聚合的要求

链路聚合配置必须符合以下要求:

Procedure如何创建链路聚合

开始之前

注 –

链路聚合仅对以相同速度运行的全双工点对点链路起作用。确保聚合中的接口符合此要求。


如果要在聚合拓扑中使用交换机,请确保在该交换机上执行了以下操作:

  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 确定当前在系统上安装了哪些接口。


    # dladm show-link
    
  3. 确定已检测哪些接口。


    # ifconfig -a
    
  4. 创建聚合。


    # dladm create-aggr -d interface -d interface [...]key
    
    interface

    表示要成为聚合一部分的接口的设备名称。

    key

    是标识聚合的编号。最小的密钥编号是 1。不允许将零用作密钥。

    例如:


    # dladm create-aggr -d bge0 -d bge1 1
    
  5. 配置并检测新创建的聚合。


    # ifconfig aggrkey plumb IP-address up
    

    例如:


    # ifconfig aggr1  plumb 192.168.84.14 up
    
  6. 检查刚创建的聚合的状态。


    # dladm show-aggr
    

    将看到以下输出:


    key: 1 (0x0001) policy: L4      address: 0:3:ba:7:84:5e (auto)
    device   address           speed         duplex  link    state
    bge0     0:3:ba:7:b5:a7    1000  Mbps    full    up      attached
    bge1     0:3:ba:8:22:3b    0     Mbps    unknown down    standby

    该输出显示已创建一个密钥为 1、策略为 L4 的聚合。

  7. (可选)使链路聚合的 IP 配置在重新引导后继续存在。

    1. 对于具有 IPv4 地址的链路聚合,创建一个 /etc/hostname.aggrkey 文件。对于基于 IPv6 的链路聚合,创建一个 /etc/hostname6.aggrkey 文件。

    2. 将链路聚合的 IPv4 或 IPv6 地址输入到该文件中。

      例如,您可以为在本过程中创建的聚合创建以下文件:


      # vi /etc/hostname.aggr1
      192.168.84.14
      
    3. 执行重新配置引导。


      # reboot -- -r
      
    4. 验证您在 /etc/hostname.aggrkey 文件中输入的链路聚合配置是否已配置。


      # ifconfig -a
      .
      .
      aggr1: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 3
              inet 192.168.84.14 netmask ff000000 broadcast 192.255.255.

示例 6–4 创建链路聚合

此示例说明用于创建具有两个设备(即 bge0bge1)的链路聚合的命令,以及命令的输出。


# dladm show-link
ce0             type: legacy    mtu: 1500       device: ce0
ce1             type: legacy    mtu: 1500       device: ce1
bge0            type: non-vlan  mtu: 1500       device: bge0
bge1            type: non-vlan  mtu: 1500       device: bge1
bge2            type: non-vlan  mtu: 1500       device: bge2
# ifconfig -a
lo0: flags=2001000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000 
ce0: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 192.168.84.253 netmask ffffff00 broadcast 192.168.84.255
        ether 0:3:ba:7:84:5e 
# dladm create-aggr -d bge0 -d bge1 1
# ifconfig aggr1 plumb 192.168.84.14 up
# dladm show-aggr
key: 1 (0x0001) policy: L4      address: 0:3:ba:7:84:5e (auto)
device   address           speed         duplex  link    state
bge0     0:3:ba:7:b5:a7    1000  Mbps    full    up      attached
bge1     0:3:ba:8:22:3b    0     Mbps    unknown down    standby

# ifconfig -a
lo0: flags=2001000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000 
ce0: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 192.168.84.253 netmask ffffff00 broadcast 192.168.84.255
        ether 0:3:ba:7:84:5e 
aggr1: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 3
        inet 192.168.84.14 netmask ff000000 broadcast 192.255.255.255
        ether 0:3:ba:7:84:5e 

请注意,用于聚合的两个接口以前没有经过 ifconfig 检测。


Procedure如何修改聚合

此过程说明如何对聚合定义进行以下更改:

  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 修改聚合以更改策略。


    # dladm modify-aggr -Ppolicy key   
    
    policy

    表示策略 L2、L3 和 L4 中的一个或多个,如策略和负载平衡中所述。

    key

    是标识聚合的编号。最小的密钥编号是 1。不允许将零用作密钥。

  3. 如果 LACP 正运行在聚合中的设备所连接到的交换机上,则修改该聚合使其支持 LACP。

    如果交换机在被动模式下运行 LACP,请务必为聚合配置主动模式。


    # dladm modify-aggr -l LACP mode -t timer-value key
    
    -l LACP mode

    指示运行聚合的 LACP 模式。值包括 activepassiveoff

    -t timer-value

    指示 LACP 计时器值(shortlong)。

    key

    是标识聚合的编号。最小的密钥编号是 1。不允许将零用作密钥。


示例 6–5 修改链路聚合

此示例说明如何将聚合 aggr1 的策略修改为 L2,并在随后打开活动 LACP 模式。


# dladm modify-aggr -P L2 1
# dladm modify-aggr -l active -t short 1
# dladm show-aggr
key: 1 (0x0001) policy: L2      address: 0:3:ba:7:84:5e (auto)
device   address           speed         duplex  link    state
bge0     0:3:ba:7:b5:a7    1000  Mbps    full    up      attached
bge1     0:3:ba:8:22:3b    0     Mbps    unknown down    standby

Procedure如何删除聚合中的接口

  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 删除聚合中的接口。


    # dladm remove-aggr -d interface
    

示例 6–6 删除聚合中的接口

此示例说明如何删除聚合 aggr1 的接口。


# dladm show-aggr
key: 1 (0x0001) policy: L2      address: 0:3:ba:7:84:5e (auto)
device   address           speed         duplex  link    state
bge0     0:3:ba:7:b5:a7    1000  Mbps    full    up      attached
bge1     0:3:ba:8:22:3b    0     Mbps    unknown down    standby
# dladm remove-aggr -d bge1 1
# dladm show-aggr
key: 1 (0x0001) policy: L2      address: 0:3:ba:7:84:5e (auto)
device   address           speed         duplex  link    state
bge0     0:3:ba:7:b5:a7    1000  Mbps    full    up      attached
          

Procedure如何删除聚合

  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 删除聚合。


    # dladm delete-aggr key
    
    key

    是标识聚合的编号。最小的密钥编号是 1。不允许将零用作密钥。


示例 6–7 如何删除聚合

此示例说明如何删除聚合 aggr1


# dladm show-aggr
key: 1 (0x0001) policy: L2      address: 0:3:ba:7:84:5e (auto)
     device   address           speed     duplex  link    state
# dladm delete-aggr -d 1

Procedure如何通过链路聚合配置 VLAN

与通过接口配置 VLAN 的方式一样,也可以基于链路聚合创建 VLAN。管理虚拟局域网中对 VLAN 进行了介绍。本节综合介绍了如何配置 VLAN 和链路聚合。

开始之前

首先使用有效的 IP 地址配置链路聚合。请记下聚合的 key 的值,在通过聚合创建 VLAN 时将需要该值。要创建链路聚合,请参阅如何创建链路聚合

  1. 如果先前已经创建链路聚合,请获取该聚合的密钥。


    # dladm show-aggr
    
  2. 通过链路聚合创建 VLAN。


    # ifconfig aggrVIDkey plumb
    

    其中

    VID

    VLAN 的 ID

    key

    要基于其创建 VLAN 的链路聚合的密钥。密钥必须采用 3 位格式。例如,如果聚合的密钥是 1,那么 VLAN 名称中所包含的密钥号为 001

  3. 重复步骤 2,通过聚合创建其他 VLAN。

  4. 使用有效的 IP 地址配置 VLAN。

  5. 要创建持久的 VLAN 配置,请将 IP 地址信息添加到相应的 /etc/hostname.VLAN 配置文件。


示例 6–8 通过链路聚合配置多个 VLAN

在此示例中,基于链路聚合配置了两个 VLAN。dladm show-aggr 命令的输出指示链路聚合的密钥是 1。为 VLAN 指定的 VID 分别为 193194


# dladm show-aggr
key: 1 (0x0001) policy: L4      address: 0:3:ba:7:84:5e (auto)
device   address           speed         duplex  link    state
bge0     0:3:ba:7:b5:a7    1000  Mbps    full    up      attached
bge1     0:3:ba:8:22:3b    0     Mbps    unknown down    standby

# ifconfig aggr193001 plumb
# ifconfig aggr193001 192.168.10.5/24 up

# ifconfig aggr194001 plumb
# ifconfig aggr194001 192.168.10.25/24 up

# vi /etc/hostname.aggr193001
192.168.10.5/24

# vi /etc/hostname.aggr194001
192.168.10.25/24

第 7 章 配置 IPv6 网络(任务)

本章包含在网络上配置 IPv6 需要执行的任务。本章主要包含以下主题:

有关 IPv6 概念的概述,请参阅第 3 章。有关 IPv6 规划任务的信息,请参阅第 4 章。要查找有关本章中的任务的参考信息,请参阅第 11 章

配置 IPv6 接口

配置 IPv6 的第一步就是在接口上启用 IPv6。可以在 Oracle Solaris 10 安装过程中启用 IPv6 支持,也可以通过在已安装的系统的接口上配置 IPv6 来启用 IPv6 支持。

在 Oracle Solaris 10 安装过程中,可以在一个或多个系统接口上启用 IPv6。安装之后,与 IPv6 相关的下列文件和表将准备就绪:

本节介绍如何在已安装的系统的接口上启用 IPv6。

在接口上启用 IPv6(任务列表)

下表列出了各种配置 IPv6 接口的任务。此表中包含对各项任务要完成的工作的说明,以及当前文档中详细介绍用于执行任务的特定步骤的章节。

任务 

说明 

参考 

在已经装有 Oracle Solaris 10 的系统的接口上启用 IPv6。 

使用此任务可以在安装 Oracle Solaris 10 之后在接口上启用 IPv6。 

如何启用当前会话的 IPv6 接口

使启用了 IPv6 的接口的配置在重新引导后仍然持保持不变。 

使用此任务可以使接口的 IPv6 地址成为永久地址。 

如何启用持久性 IPv6 接口

关闭 IPv6 地址自动配置。 

如果需要手动配置 IPv6 地址的接口 ID 部分,请使用此任务。 

如何关闭 IPv6 地址自动配置

Procedure如何启用当前会话的 IPv6 接口

开始配置 IPv6 时,请首先在将成为 IPv6 节点的所有系统的接口上启用 IPv6。最初,接口通过自动配置过程获取其 IPv6 地址,如IPv6 地址自动配置中所述。然后,可以根据节点在 IPv6 网络中的作用(作为主机、服务器或路由器)来调整节点的配置。


注 –

如果接口与当前正在通告某个 IPv6 前缀的路由器在同一链路上,则接口会获取该站点前缀,并将其作为自动配置的地址的一部分。有关更多信息,请参阅如何配置启用了 IPv6 的路由器


以下过程说明如何为安装 Oracle Solaris 10 之后添加的接口启用 IPv6。

开始之前

完成 IPv6 网络的规划任务,如升级硬件和软件以及准备寻址计划。有关更多信息,请参见IPv6 规划(任务列表)

  1. 以主管理员身份或超级用户身份登录预期的 IPv6 节点。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 在接口上启用 IPv6。


    # ifconfig inet6 interface plumb up
    
  3. 启动 IPv6 守护进程 in.ndpd


    # /usr/lib/inet/in.ndpd
    

    注 –

    可以使用 ifconfig-a6 命令来显示节点上启用了 IPv6 的接口的状态。



示例 7–1 在安装之后启用 IPv6 接口

此示例说明如何在 qfe0 接口上启用 IPv6。在开始之前,请检查系统上已配置的所有接口的状态。


# ifconfig -a
lo0: flags=1000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000 
qfe0: flags=1000863 <UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST,IPv4> mtu 1500 
           index 2
        inet 172.16.27.74 netmask ffffff00 broadcast 172.16.27.255
        ether 0:3:ba:13:14:e1 

目前仅为该系统配置了 qfe0 接口。请按如下所示在该接口上启用 IPv6:


# ifconfig inet6 qfe0 plumb up
# /usr/lib/inet/in.ndpd
# ifconfig -a6
lo0: flags=2000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv6> mtu 8252 index 1
        inet6 ::1/128 
qfe0: flags=2000841 <UP,RUNNING,MULTICAST,IPv6> mtu 1500 index 2
        ether 0:3:ba:13:14:e1 
        inet6 fe80::203:baff:fe13:14e1/10

此示例显示了系统接口在 qfe0 启用 IPv6 前后的状态。ifconfig-a6 选项仅显示 qfe0 的 IPv6 信息和回送接口。请注意,输出结果表明仅为 qfe0 配置了一个链路本地地址 fe80::203:baff:fe13:14e1/10。此地址指明到目前为止,该节点的本地链路上没有任何路由器通告站点前缀。

启用 IPv6 之后,可以使用 ifconfig -a 命令来显示系统上所有接口的 IPv4 和 IPv6 地址。


接下来的操作

Procedure如何启用持久性 IPv6 接口

此过程说明如何启用具有自动配置的 IPv6 地址的 IPv6 接口,这些地址在随后进行重新引导时将一直保持不变。


注 –

如果接口与当前正在通告某个 IPv6 前缀的路由器在同一链路上,则接口会获取该站点前缀,并将其作为自动配置的地址的一部分。有关更多信息,请参阅如何配置启用了 IPv6 的路由器


  1. 以主管理员身份或超级用户身份登录 IPv6 节点。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 为安装之后添加的接口创建 IPv6 地址。

    1. 创建配置文件。


      # touch /etc/hostname6.interface
      
    2. 向配置文件添加地址。


      inet6 ipv6-address up
      addif inet6 ipv6-address up
      ...
  3. 创建静态 IPv6 缺省路由。


    # /usr/sbin/route -p add -inet6 default ipv6-address
    
  4. (可选)创建一个 /etc/inet/ndpd.conf 文件,该文件定义了节点上接口变量的参数。

    如果需要为主机的接口创建临时地址,请参阅将临时地址用于接口。有关 /etc/inet/ndpd.conf 的详细信息,请参阅 ndpd.conf(4) 手册页和ndpd.conf 配置文件

  5. 重新引导该节点。


    # reboot -- -r
    

    在重新引导过程中将发送路由器搜索包。如果路由器以站点前缀进行响应,则节点可以使用对应的包含全局 IPv6 地址的 /etc/hostname6.interface 文件配置任何接口。否则,仅能使用链路本地地址配置启用了 IPv6 的接口。重新引导还将以 IPv6 模式重新启动 in.ndpd 和其他网络守护进程。


示例 7–2 使 IPv6 接口的配置在重新引导过程中持续保留

此示例说明如何使 qfe0 接口的 IPv6 配置在重新引导过程中持续保留。在此示例中,本地链路上的路由器会通告站点前缀和子网 ID 2001:db8:3c4d:15/64

首先,检查系统接口的状态。


# ifconfig -a
lo0: flags=1000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000 
qfe0: flags=1000863 <UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST,IPv4> mtu 1500 
           index 2
        inet 172.16.27.74 netmask ffffff00 broadcast 172.16.27.255
        ether 0:3:ba:13:14:e1 

# touch /etc/hostname6.qfe0
# vi /etc/hostname6.qfe0
inet6 fe80::203:baff:fe13:1431/10 up
addif inet6 2001:db8:3c4d:15:203:baff:fe13:14e1/64 up

# route -p add -inet6 default fe80::203:baff:fe13:1431
# reboot -- -r

验证已配置的 IPv6 地址是否仍适用于 qfe0 接口。


# ifconfig -a6
qfe0: flags=2000841 <UP,RUNNING,MULTICAST,IPv6> mtu 1500 index 2
       ether 0:3:ba:13:14:e1 
       inet6 fe80::203:baff:fe13:14e1/10 
 qfe0:1: flags=2180841 <UP,RUNNING,MULTICAST,ADDRCONF,IPv6> mtu 1500 
          index 2
        inet6 2001:db8:3c4d:15:203:baff:fe13:14e1/64

ifconfig -a6 的输出显示了 qfe0 的两项。标准 qfe0 项包括 MAC 地址和链路本地地址。第二项 qfe0:1 表示为 qfe0 接口上的其他 IPv6 地址创建了伪接口。新的全局 IPv6 地址 2001:db8:3c4d:15:203:baff:fe13:14e1/64 包括由本地路由器通告的站点前缀和子网 ID。


接下来的操作

Procedure如何关闭 IPv6 地址自动配置

通常应当使用地址自动配置来为主机和服务器的接口生成 IPv6 地址。但是,有时可能希望关闭地址自动配置,尤其是在希望手动配置标记时,如配置 IPv6 标记中所述。

  1. 以主管理员身份或超级用户身份登录 IPv6 节点。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 为节点创建 /etc/inet/ndpd.conf 文件。

    /etc/inet/ndpd.conf 文件定义了特定节点的接口变量。必须在该文件中包含以下内容,才能关闭所有服务器接口的地址自动配置:


    if-variable-name StatelessAddrConf false

    有关 /etc/inet/ndpd.conf 的详细信息,请参阅 ndpd.conf(4) 手册页和ndpd.conf 配置文件

  3. 使用所做更改更新 IPv6 守护进程。


    # pkill -HUP in.ndpd
    

配置 IPv6 路由器

在网络上配置 IPv6 的第一步是在路由器上配置 IPv6。路由器配置涉及到许多独立的任务,本节将介绍这些任务。您可以根据站点要求执行部分或全部任务。

IPv6 路由器配置(任务列表)

按下表中的顺序执行接下来的任务,以配置 IPv6 网络。此表中包含对各项任务要完成的工作的说明,以及当前文档中详细介绍用于执行任务的特定步骤的章节。

任务 

说明  

参考 

1. 在开始配置 IPv6 之前,确保已完成了必需的先决条件。 

必须先在启用了 IPv6 的接口上完成规划任务和 Oracle Solaris : 安装,然后再配置启用了 IPv6 的路由器。 

第 4 章配置 IPv6 接口

2. 配置路由器。 

定义网络的站点前缀。  

如何配置启用了 IPv6 的路由器

3. 在路由器上配置隧道接口。 

在路由器上设置手动隧道或 6to4 隧道接口。本地 IPv6 网络需要使用隧道来与其他隔离的 IPv6 网络通信。 

4. 在网络上配置交换机。 

如果网络配置中包括交换机,此时请在配置过程中针对 IPv6 配置交换机。 

请参阅交换机制造商文档。 

5. 在网络上配置任何集线器。 

如果网络配置中包括集线器,此时请在配置过程中针对 IPv6 配置集线器。 

请参阅集线器制造商文档。 

6. 针对 IPv6 配置网络名称服务。  

针对 IPv6 配置路由器之后,将主名称服务(DNS、NIS 或 LDAP)配置为识别 IPv6 地址。 

如何向 DNS 中添加 IPv6 地址

7. (可选)在主机和服务器上修改启用了 IPv6 的接口的地址。 

配置 IPv6 路由器之后,对启用了 IPv6 的主机和服务器进一步进行修改。 

修改主机和服务器的 IPv6 接口配置

8. 将应用程序配置为支持 IPv6。 

为了支持 IPv6,不同的应用程序可能需要不同的操作。 

请参阅应用程序文档。 

Procedure如何配置启用了 IPv6 的路由器

此过程假定在 Oracle Solaris : 的安装过程中已针对 IPv6 配置了路由器的所有接口。

  1. 在即将成为 IPv6 路由器的系统上,承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 检查在安装过程中针对 IPv6 配置了路由器上的哪些接口。


    # ifconfig -a
    

    检查输出,确保现在已经使用链路本地地址检测了要针对 IPv6 配置的接口。以下 ifconfig -a 的样例命令输出显示了已经为路由器的接口配置的 IPv4 和 IPv6 地址。


    lo0: flags=1000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
            inet 127.0.0.1 netmask ff000000 
    dmfe0: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
            inet 172.16.26.232 netmask ffffff00 broadcast 172.16.26.255
            ether 0:3:ba:11:b1:15 
    dmfe1: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4 mtu 1500 index 3
            inet 172.16.26.220 netmask ffffff00 broadcast 172.16.26.255
            ether 0:3:ba:11:b1:16 
    lo0: flags=2000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv6> mtu 8252 index 1
            inet6 ::1/128 
    dmfe0: flags=2000841 <UP,RUNNING,MULTICAST,IPv6> mtu 1500 index 2
            ether 0:3:ba:11:b1:15 
            inet6 fe80::203:baff:fe11:b115/10 
    dmfe1: flags=2000841 <UP,RUNNING,MULTICAST,IPv6> mtu 1500 index 3
            ether 0:3:ba:11:b1:16 
            inet6 fe80::203:baff:fe11:b116/10 

    该输出还显示在安装过程中已经使用 IPv6 链路本地地址 fe80::203:baff:fe11:b115/10fe80::203:baff:fe11:b116/10 配置了主网络接口 dmfe0 和附加接口 dmfe1

  3. 在路由器的所有接口上配置 IPv6 包转发功能。

    对于 Solaris 10 11/03 及更早的版本,请使用以下命令:


    # routeadm -e ipv6-forwarding -u
    

    使用以下任一命令启用包转发:

    • 使用 routeadm 命令,如下所示:


      # routeadm -e ipv6-forwarding -u
      
    • 使用以下服务管理工具 (Service Management Facility, SMF) 命令,如下所示:


      # svcadm enable ipv6-forwarding
  4. 启动路由选择守护进程。

    in.ripngd 守护进程可处理 IPv6 路由。

    对于 Solaris 10 11/06 及更早的版本,请键入以下命令启动 in.ripngd


    # routeadm -e ipv6-routing
    # routeadm -u
    

    通过以下任一方式启用 IPv6 路由:

    • 使用 routeadm 命令,如下所示:


      # routeadm -e ipv6-routing -u
      
    • 使用 SMF 启用 IPv6 路由:


      # svcadm enable ripng:default
      

    有关 routeadm 命令的语法信息,请参见 routeadm(1M) 手册页。

  5. 创建 /etc/inet/ndpd.conf 文件。

    /etc/inet/ndpd.conf 中指定要由路由器通告的站点前缀以及其他配置信息。此文件由 in.ndpd 守护进程读取,该守护进程实现了 IPv6 相邻节点搜索协议。

    有关变量和允许值的列表,请参阅ndpd.conf 配置文件ndpd.conf(4) 手册页。

  6. /etc/inet/ndpd.conf 文件中键入以下文本:


    ifdefault AdvSendAdvertisements true
    prefixdefault AdvOnLinkFlag on AdvAutonomousFlag on
    

    此文本通告 in.ndpd 守护进程通过路由器上针对 IPv6 配置的所有接口发出路由器通告。

  7. /etc/inet/ndpd.conf 文件中添加其他文本,以便在路由器的各接口上配置站点前缀。

    该文本应采用以下格式:


    prefix global-routing-prefix:subnet ID/64 interface
    

    以下样例 /etc/inet/ndpd.conf 文件将路由器配置为通过接口 dmfe0dmfe1 通告站点前缀 2001:0db8:3c4d::/48


    ifdefault AdvSendAdvertisements true
    prefixdefault AdvOnLinkFlag on AdvAutonomousFlag on
    
    if dmfe0 AdvSendAdvertisements 1
    prefix 2001:0db8:3c4d:15::0/64 dmfe0
    
    if dmfe1 AdvSendAdvertisements 1
    prefix 2001:0db8:3c4d:16::0/64 dmfe1
    
  8. 重新引导系统。

    IPv6 路由器随即开始在本地链路上通告 ndpd.conf 文件中的任何站点前缀。


示例 7–3 显示 IPv6 接口的 ifconfig 输出

以下示例显示了 ifconfig -a 命令的输出,在完成配置 IPv6 路由器过程之后将看到这类输出。


lo0: flags=1000849 <UP LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000 
dmfe0: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 172.16.15.232 netmask ffffff00 broadcast 172.16.26.255
        ether 0:3:ba:11:b1:15 
dmfe1: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4 mtu 1500 index 3
        inet 172.16.16.220 netmask ffffff00 broadcast 172.16.26.255
        ether 0:3:ba:11:b1:16 
lo0: flags=2000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv6> mtu 8252 index 1
        inet6 ::1/128 
dmfe0: flags=2100841 <UP,RUNNING,MULTICAST,ROUTER,IPv6> mtu 1500 index 2
        ether 0:3:ba:11:b1:15 
        inet6 fe80::203:baff:fe11:b115/10 
dmfe0:1: flags=2180841 <UP,RUNNING,MULTICAST,ADDRCONF,ROUTER,IPv6> mtu 1500
          index 2
        inet6 2001:db8:3c4d:15:203:baff:fe11:b115/64
dmfe1: flags=2100841 <UP,RUNNING,MULTICAST,ROUTER,IPv6> mtu 1500 index 3
        ether 0:3:ba:11:b1:16 
        inet6 fe80::203:baff:fe11:b116/10 
dmfe1:1: flags=2180841 <UP,RUNNING,MULTICAST,ADDRCONF,ROUTER,IPv6> mtu 1500
           index 3
        inet6 2001:db8:3c4d:16:203:baff:fe11:b116/64

在此示例中,已经针对 IPv6 配置的每个接口现在都有两个地址。包含接口名称的项(如 dmfe0)显示该接口的链路本地地址。形式为 interface:n 的项(如 dmfe0:1)显示全局 IPv6 地址。此地址除包括接口 ID 外,还包括已在 /etc/ndpd.conf 文件中配置的站点前缀。


另请参见

修改主机和服务器的 IPv6 接口配置

本节介绍如何修改作为主机或服务器的节点上启用了 IPv6 的接口的配置。大多数情况下,应当针对启用了 IPv6 的接口使用地址自动配置,如无状态自动配置概述中所述。但是,可以按照本节中的任务说明,根据需要修改接口的 IPv6 地址。

修改 IPv6 接口配置(任务列表)

下表列出了各种可修改现有 IPv6 网络的任务。此表中包含对各项任务要完成的工作的说明,以及当前文档中详细介绍用于执行任务的特定步骤的章节。

任务 

说明 

参考 

关闭 IPv6 地址自动配置。 

如果需要手动配置 IPv6 地址的接口 ID 部分,请使用此任务。 

如何关闭 IPv6 地址自动配置

为主机创建临时地址。 

通过对随机创建的临时地址(用作地址中较低的 64 位)进行配置,隐藏主机的接口 ID。 

如何配置临时地址

为系统的接口 ID 配置标记。 

在 IPv6 地址中创建要用作接口 ID 的 64 位标记。 

如何配置用户指定的 IPv6 标记

将临时地址用于接口

IPv6 临时地址包括一个随机生成的用作接口 ID 的 64 位数字,而不是包括接口的 MAC 地址。对于要保持匿名的 IPv6 节点上的任何接口都可以使用临时地址。例如,您可能希望对于需要访问公共 Web 服务器的主机的接口使用临时地址。临时地址可实现 IPv6 保密性增强功能。RFC 3041 中介绍了这些增强功能,可从 “Privacy Extensions for Stateless Address Autoconfiguration in IPv6” 中获取。

如果需要的话,可以在 /etc/inet/ndpd.conf 文件中为一个或多个接口启用临时地址。但是,与自动配置的标准 IPv6 地址不同,临时地址由 64 位子网前缀和一个随机生成的 64 位数字组成。这个随机数将成为 IPv6 地址的接口 ID 部分。临时地址作为接口 ID 时,不会生成链路本地地址。

请注意,临时地址的缺省首选生命周期为一天。启用临时地址生成功能时,还可以在 /etc/inet/ndpd.conf 文件中配置下列变量:

有效生命周期 TmpValidLifetime

临时地址存在的时间跨度,在此之后临时地址将从主机中删除。

首选生命周期 TmpPreferredLifetime

临时地址过时之前已经过的时间。此时间跨度应短于有效生命周期。

地址重新生成时间

在首选生命周期到期之前的持续时间,在这段时间内,主机应生成新的临时地址。

可以按如下所示表示临时地址的持续时间:

n

n 秒数(缺省值)

n h

n 小时数 (h)

n d

n 天数 (d)

Procedure如何配置临时地址

  1. 以主管理员或超级用户身份登录到 IPv6 主机。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 如有必要,请在主机的接口上启用 IPv6。

    请参阅如何启用当前会话的 IPv6 接口

  3. 编辑 /etc/inet/ndpd.conf 文件以打开临时地址生成功能。

    • 要在主机的所有接口上配置临时地址,请将以下行添加到 /etc/inet/ndpd.conf 中:


      ifdefault TmpAddrsEnabled true
      
    • 要配置特定接口的临时地址,请将以下一行添加到 /etc/inet/ndpd.conf 中:


      if interface TmpAddrsEnabled true 
      
  4. (可选)指定临时地址的有效生命周期。


    ifdefault TmpValidLifetime duration
    

    此语法为主机上的所有接口指定有效生命周期。duration 的值应当以秒、小时或天为单位。缺省的有效生命周期为 7 天。另外,还可以使用带有 if interface 关键字的 TmpValidLifetime 来为特定接口的临时地址指定有效生命周期。

  5. (可选)为临时地址指定首选生命周期,在此之后临时地址将过时。


    if interface TmpPreferredLifetime duration
    

    此语法为特定接口的临时地址指定首选生命周期。缺省的首选生命周期为一天。另外,还可以使用带有 ifdefault 关键字的 TmpPreferredLifetime 来为主机所有接口上的临时地址指定首选生命周期。


    注 –

    缺省地址选择可为已经过时的 IPv6 地址指定较低的优先级。如果某个 IPv6 临时地址已过时,则缺省地址选择会将未过时的地址选作包的源地址。未过时的地址可能是自动生成的 IPv6 地址,也可能是接口的 IPv4 地址。有关缺省地址选择的更多信息,请参见管理缺省地址选择


  6. (可选)指定地址过时之前的前导时间,在这段时间内,主机应生成新的临时地址。


    ifdefault TmpRegenAdvance duration
    

    此语法可为主机上所有接口的临时地址指定地址过时之前的前导时间。缺省值是 5 秒。

  7. 更改 in.ndpd 守护进程的配置。


    # pkill -HUP in.ndpd
    # /usr/lib/inet/in.ndpd
    
  8. 运行 ifconfig -a6 命令来验证临时地址是否已创建,如示例 7–5 中所示。

    ifconfig 的输出中,接口定义所在的行中应包含 TEMPORARY 一词。


示例 7–4 /etc/inet/ndpd.conf 文件中的临时地址变量

以下示例显示了针对主网络接口启用了临时地址的 /etc/inet/ndpd.conf 文件片段。


ifdefault TmpAddrsEnabled true

ifdefault TmpValidLifetime 14d

ifdefault TmpPreferredLifetime 7d

ifdefault TmpRegenAdvance 6s


示例 7–5 启用临时地址后的 ifconfig-a6 命令输出

此示例显示了创建临时地址之后 ifconfig 命令的输出。


# ifconfig -a6
lo0: flags=2000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv6> mtu 8252 index 1 
     inet6 ::1/128
hme0: flags=2000841 <UP,RUNNING,MULTICAST,IPv6> mtu 1500 index 2 
     ether 8:0:20:b9:4c:54
     inet6 fe80::a00:20ff:feb9:4c54/10
hme0:1: flags=2080841 <UP,RUNNING,MULTICAST,ADDRCONF,IPv6> mtu 1500 index 2 
     inet6 2001:db8:3c4d:15:a00:20ff:feb9:4c54/64
hme0:2: flags=802080841<UP,RUNNING,MULTICAST,ADDRCONF,IPv6,TEMPORARY> mtu 1500 index 2 
      inet6 2001:db8:3c4d:15:7c37:e7d1:fc9c:d2cb/64

请注意,hme0:2 接口后面的行中包括单词 TEMPORARY。此名称表示地址 2001:db8:3c4d:15:7c37:e7d1:fc9c:d2cb/64 具有临时接口 ID。


另请参见

配置 IPv6 标记

IPv6 Addressing Overview中所述,IPv6 地址的 64 位接口 ID 又称作IPv6 寻址概述。在地址自动配置过程中,该标记与接口的 MAC 地址相关联。大多数情况下,非路由节点(即 IPv6 主机和服务器)应当使用为其自动配置的标记。

但是,对于在系统维护过程中经常需要交换接口的服务器,使用自动配置的标记可能会产生问题。如果更换接口卡,则 MAC 地址也会随之更改。因此,依赖稳定 IP 地址的服务器将会遇到问题。网络基础结构的各个部分(如 DNS 或 NIS)可能已经存储了服务器接口的特定 IPv6 地址。

为了避免出现地址更改问题,可以手动配置要用作 IPv6 地址中接口 ID 的标记。要创建此标记,需要指定一个 64 位或更少的十六进制数字,使其占用 IPv6 地址的接口 ID 部分。在后续的地址自动配置过程中,相邻节点搜索协议不会基于接口的 MAC 地址创建接口 ID。相反,手动创建的标记将成为接口 ID。此标记始终被分配给该接口,即使更换了卡也是如此。


注 –

用户指定的标记和临时地址之间的区别在于,临时地址是随机生成的,而不是由用户显式创建的。


Procedure如何配置用户指定的 IPv6 标记

接下来的说明对于经常更换接口的服务器尤其有用。它们也可用于在任何 IPv6 节点上配置用户指定的标记。

  1. 验证要配置标记的接口是否已经过检测。

    必须先检测接口,然后才能为其 IPv6 地址配置标记。


    # ifconfig -a6
    

    qfe0: flags=2000841 <UP,RUNNING,MULTICAST,IPv6> mtu 1500 index 2
            ether 0:3:ba:13:14:e1 
            inet6 fe80::203:baff:fe13:14e1/10

    此输出显示网络接口 qfe0 已经过检测并且具有链路本地地址 fe80::203:baff:fe13:14e1/10。此地址是在安装过程中自动配置的。

  2. 创建一个或多个要用作节点接口标记的 64 位十六进制数字。有关标记的示例,请参阅链路本地单点传送地址

  3. 配置每个接口的标记。

    对于每个要具有用户指定接口 ID(标记)的接口,请使用以下形式的 ifconfig 命令:


    ifconfig interface inet6  token address/64
    

    例如,可使用以下命令配置 qfe0 的标记:


    # ifconfig qfe0 inet6 token ::1a:2b:3c:4d/64
    

    对于要具有用户指定标记的每个接口,重复该步骤。

  4. (可选)使新的 IPv6 地址在重新引导过程中持续保留。

    1. 对于每个配置了标记的接口,编辑或创建 /etc/hostname6.interface 文件。

    2. 在每个 /etc/hostname6.interface 文件的末尾添加以下文本:


      token ::token-name/64

      例如,可以在 /etc/hostname6.interface 文件的末尾添加以下文本:


      token ::1a:2b:3c:4d/64

    在系统重新引导之后,在 /etc/hostname6. interface 文件中配置的标记将应用于接口的 IPv6 地址。此 IPv6 地址在后续的重新引导过程中仍会持续保留。

  5. 使用所做更改更新 IPv6 守护进程。


    # pkill -HUP -in.ndpd
    

示例 7–6 在 IPv6 接口上配置用户指定的标记

在以下示例中,bge0:1 接口具有自动配置的 IPv6 地址。子网前缀 2001:db8:3c4d:152:/64 由节点本地链路上的路由器通告。接口 ID 2c0:9fff:fe56:8255 是用 bge0:1 的 MAC 地址生成的。


# ifconfig -a6
lo0: flags=2002000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv6,VIRTUAL> mtu 8252 index 1
        inet6 ::1/128
bge0: flags=2100801 <UP,MULTICAST,IPv6> mtu 1500 index 5
        inet6 fe80::2c0:9fff:fe56:8255/10
        ether 0:c0:9f:56:82:55
bge0:1: flags=2180801 <UP, MULTICAST,ADDRCONF,IPv6>mtu 1500 index 5
        inet6 2001:db8:3c4d:152:c0:9fff:fe56:8255/64
# ifconfig bge0 inet6 token ::1a:2b:3c:4d/64
# vi /etc/hostname6.bge0
token ::1a:2b:3c:4d/64
# pkill -HUP -in.ndpd
# ifconfig -a6
lo0: flags=2002000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv6,VIRTUAL> mtu 8252 index 1
        inet6 ::1/128
bge0: flags=2100801 <UP,MULTICAST,IPv6> mtu 1500 index 5
        inet6 fe80::2c0:9fff:fe56:8255/10
        ether 0:c0:9f:56:82:55
bge0:1: flags=2180801 <UP, MULTICAST,ADDRCONF,IPv6>mtu 1500 index 5
        inet6 2001:db8:3c4d:152:1a:2b:3c:4d/64

配置标记之后,bge0:1 的第二个状态行上的全局地址现在包含为其配置的接口 ID 1a:2b:3c:4d


另请参见

在服务器上管理启用了 IPv6 的接口

如果计划在服务器上配置 IPv6,则在服务器的接口上启用 IPv6 时,必须做出几个决定。所做的决定会影响用于配置接口 IPv6 地址的接口 ID(又称作标记)的策略。

Procedure如何在服务器接口上启用 IPv6

开始之前

下一过程假定以下情况成立:

如果适用,请升级应用程序软件以支持 IPv6。请注意,许多在 IPv4 协议栈上运行的应用程序也能在 IPv6 上成功运行。有关更多信息,请参阅如何准备网络服务以支持 IPv6

  1. 在服务器上,承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 确保与服务器在同一链路上的路由器上配置了 IPv6 子网前缀。

    有关更多信息,请参阅配置 IPv6 路由器

  3. 对服务器上启用了 IPv6 的接口,使用适当的接口 ID 策略。

    缺省情况下,在创建 IPv6 地址的接口 ID 部分时,IPv6 地址自动配置会使用接口的 MAC 地址。如果接口的 IPv6 地址是已知的,则使用一个接口交换另一个接口会导致问题。新接口的 MAC 地址将会不同。在地址自动配置过程中,会生成新的接口 ID。

    • 对于不打算替换的启用了 IPv6 的接口,请使用自动配置的 IPv6 地址,如IPv6 地址自动配置中所述。

    • 对于必须匿名显示在本地网络外部的启用了 IPv6 的接口,请考虑对接口 ID 使用随机生成的标记。有关说明和示例,请参阅如何配置临时地址

    • 对于计划定期交换的启用了 IPv6 的接口,请为接口 ID 创建标记。有关说明和示例,请参阅如何配置用户指定的 IPv6 标记

针对 IPv6 支持配置隧道所需的任务(任务列表)

下表列出了各种配置不同类型的 IPv6 隧道的任务。此表中包含对各项任务要完成的工作的说明,以及当前文档中详细介绍用于执行任务的特定步骤的章节。

任务 

说明 

参考 

手动配置 IPv6 over IPv4 隧道。 

手动创建经由 IPv4 网络的 IPv6 隧道,此解决方案可用于在大型企业网络(主要是 IPv4 企业网络)中访问远程 IPv6 网络。 

如何手动配置 IPv6 over IPv4 隧道

手动配置 IPv6 over IPv6 隧道。 

手动配置经由 IPv6 网络的 IPv6 隧道,此解决方案通常用在大型企业网络中。 

如何手动配置 IPv6 over IPv6 隧道

手动配置 IPv4 over IPv6 隧道。 

手动配置经由 IPv6 网络的 IPv4 隧道,此解决方案通常用在同时包含 IPv4 网络和 IPv6 网络的大型网络中。 

如何配置 IPv4 over IPv6 隧道

自动配置 IPv6 over IPv4 隧道(6to4 隧道)。 

创建 6to4 自动隧道,此解决方案用于通过 Internet 访问外部的 IPv6 站点。 

如何配置 6to4 隧道

在 6to4 路由器和 6to4 中继路由器之间配置隧道。 

使用 6to4relay 命令启用连接到 6to4 中继路由器的隧道。

如何配置通往 6to4 中继路由器的 6to4 隧道

针对 IPv6 支持配置隧道

在大型 IPv4 网络中,IPv6 网络通常是隔离的实体。IPv6 网络上的节点可能需要与隔离的 IPv6 网络上的节点通信(在企业内或以远程方式进行)。通常,尽管 IPv6 主机也可以充当隧道端点,但是仍需要在 IPv6 路由器之间配置一条隧道。有关隧道规划的信息,请参阅在网络拓扑中规划隧道

可以为 IPv6 网络设置自动或手动配置的隧道。Oracle Solaris : IPv6 实现支持下列类型的隧道封装:

有关隧道的概念性说明,请参见IPv6 隧道

Procedure如何手动配置 IPv6 over IPv4 隧道

本过程介绍如何设置从 IPv6 节点经由 IPv4 网络到达远程 IPv6 节点的隧道。

  1. 以主管理员或超级用户身份登录到本地隧道的端点。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 创建 /etc/hostname6.ip.tun n 文件。

    其中 n 表示隧道编号,第一个隧道的编号从零开始。然后,按照下列子步骤来添加项:

    1. 添加隧道的源地址和目标地址。


      tsrc IPv4-source-address tdst IPv4-destination-address up
    2. (可选)为源 IPv6 地址和目标 IPv6 地址各添加一个逻辑接口。


      addif IPv6-source-address  IPv6-destination-address 
      

      如果希望为该接口自动配置地址,请忽略该子步骤,无需为隧道配置链路本地地址。

  3. 重新引导系统。

  4. 对隧道的另一端重复该任务。


示例 7–7 IPv6 over IPv4 手动隧道的 /etc/hostname6.ip.tun 文件中的项

此样例 /etc/hostname6.ip.tun 文件显示了为其手动配置全局源地址和全局目标地址的隧道。


tsrc 192.168.8.20 tdst 192.168.7.19 up
addif 2001:db8:3c4d:8::fe12:528 2001:db8:3c4d:7:a00:20ff:fe12:1234 up

Procedure如何手动配置 IPv6 over IPv6 隧道

本过程介绍如何设置从 IPv6 节点经由 IPv6 网络到达远程 IPv6 节点的隧道。

  1. 以主管理员或超级用户身份登录到本地隧道的端点。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 创建 /etc/hostname6.ip6.tun n 文件。

    n 可使用值 0、1、2 等。然后,按照下列子步骤来添加项:

    1. 添加隧道的源地址和目标地址。


      tsrc IPv6-source-address tdst IPv6-destination-address
      IPv6-packet-source-address IPv6-packet-destination-address up
    2. (可选)为源 IPv6 地址和目标 IPv6 地址各添加一个逻辑接口。


      addif IPv6-source-address  IPv6-destination-address up

      如果希望为该接口自动配置地址,请忽略该步骤,无需为隧道配置链路本地地址。

  3. 重新引导系统。

  4. 对于隧道的另一端重复此过程。


示例 7–8 IPv6 over IPv6 隧道的 /etc/hostname6.ip6.tun 文件中的项

此示例显示了 IPv6 over IPv6 隧道的项。


tsrc 2001:db8:3c4d:22:20ff:0:fe72:668c tdst 2001:db8:3c4d:103:a00:20ff:fe9b:a1c3
fe80::4 fe80::61 up

Procedure如何配置 IPv4 over IPv6 隧道

本过程介绍如何配置从一台 IPv4 主机经由 IPv6 网络到达另一台 IPv4 主机的隧道。如果您的公司网络是异构网络,并且 IPv4 子网由 IPv6 子网分隔,则可以使用此过程。

  1. 以主管理员或超级用户身份登录到本地 IPv4 隧道的端点。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 创建 /etc/hostname.ip6.tunn 文件。

    n 可使用值 0、1、2 等。然后,按照下列步骤来添加项:

    1. 添加隧道的源地址和目标地址。


      tsrc IPv6-source-address tdst IPv6-destination-address
      
    2. (可选)为源 IPv6 地址和目标 IPv6 地址各添加一个逻辑接口。


      addif IPv6-source-address  IPv6-destination-address up
  3. 重新引导本地主机。

  4. 对于隧道的另一端重复此过程。


示例 7–9 IPv4 over IPv6 隧道的 /etc/hostname6.ip6.tun 中的项

此示例显示了 IPv4 over IPv6 隧道的项。


tsrc 2001:db8:3c4d:114:a00:20ff:fe72:668c tdst 2001:db8:3c4d:103:a00:20ff:fe9b:a1c3
10.0.0.4 10.0.0.61 up

Procedure如何配置 6to4 隧道

如果 IPv6 网络需要与远程 IPv6 网络通信,请考虑使用 6to4 自动隧道。6to4 隧道的配置过程包括将边界路由器配置为 6to4 路由器。6to4 路由器可充当您的网络与远程 IPv6 网络上的端点路由器之间的 6to4 隧道的端点。

开始之前

在 IPv6 网络上配置 6to4 路由之前,必须已经完成以下操作:

  1. 以主管理员或超级用户身份登录到将来的 6to4 路由器。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 通过创建 /etc/hostname6.ip.6to4tun0 文件在路由器上配置 6to4 伪接口。

    • 如果计划使用建议的约定(子网 ID=0,主机 ID=1),请针对 /etc/hostname6.ip.6to4tun0 使用短格式:


      tsrc IPv4-address up
    • 如果计划对子网 ID 和主机 ID 使用其他约定,请针对 /etc/hostname6.ip.6to4tun0 使用长格式:


      tsrc IPv4-address 2002:IPv4-address:subnet-ID:interface-ID:/64 up

    以下是 /etc/hostname6.ip.6to4tun0 的必需参数:

    tsrc

    表示此接口用作隧道源。

    IPv4-address

    以点分十进制格式指定在作为 6to4 伪接口的物理接口上配置的 IPv4 地址。

    其余参数是可选的。但是,如果指定了一个可选参数,则必须指定所有的可选参数。

    2002

    指定 6to4 前缀。

    IPv4–address

    以十六进制表示法指定伪接口的 IPv4 地址。

    subnet-ID

    以十六进制表示法指定除 0 以外的子网 ID。

    interface-ID

    指定除 1 以外的接口 ID。

    /64

    表示 6to4 前缀的长度为 64 位。

    up

    将 6to4 接口配置为 "up"。


    注 –

    网络上的两个 IPv6 隧道不能具有相同的源地址和目标地址。否则,包会被丢弃。如果 6to4 路由器还通过 atun 命令执行隧道连接,则可能会发生这种类型的事件。有关 atun 的信息,请参阅 tun(7M) 手册页。


  3. (可选)在路由器上创建其他 6to4 伪接口。

    每个将来的 6to4 伪接口都必须具有一个已配置的全局唯一的 IPv4 地址。

  4. 重新引导 6to4 路由器。

  5. 验证接口状态。


    # ifconfig ip.6to4tun0 inet6
            
    

    如果接口已正确配置,则将接收到以下类似输出:


    ip.6to4tun0: flags=2200041<UP,RUNNING,NONUD,IPv6>mtu 1480 index 11
            inet tunnel src 111.222.33.44 
            tunnel hop limit 60 
            inet6 2002:6fde:212c:10:/64 
  6. 编辑 /etc/inet/ndpd.conf 文件以通告 6to4 路由。

    有关详细信息,请参阅 ndpd.conf(4) 手册页。

    1. 在第一行中指定要接收通告的子网。

      创建具有以下格式的 if 项:


      if subnet-interface AdvSendAdvertisements 1

      例如,要向连接到 hme0 接口的子网通告 6to4 路由,请将 subnet-interface 替换为 hme0


      if hme0 AdvSendAdvertisements 1
    2. 在通告的第二行中添加 6to4 前缀。

      创建具有以下格式的 prefix 项:


      prefix 2002:IPv4-address:subnet-ID::/64 subnet-interface
      
  7. 重新引导路由器。

    或者,可以向 /etc/inet/in.ndpd 守护进程发出 sighup,以便开始发送路由器通告。要接收 6to4 前缀的每个子网上的 IPv6 节点现在可以使用 6to4 派生地址自动进行配置。

  8. 将节点的新 6to4 派生地址添加到在 6to4 站点上使用的名称服务中。

    有关说明,请转至针对 IPv6 配置名称服务支持


示例 7–10 6to4 路由器配置(短形式)

下面举例说明了/etc/hostname6.ip.6to4tun0 的短形式:


# cat /etc/hostname6.ip.6to4tun0
tsrc 111.222.33.44 up


示例 7–11 6to4 路由器配置(长形式)

下面举例说明了 /etc/hostname6.ip.6to4tun0 的长形式:


# cat /etc/hostname6.ip.6to4tun0
tsrc 111.222.33.44 2002:6fde:212c:20:1/64 up


示例 7–12 显示 6to4 伪接口的 ifconfig 输出

以下样例说明了针对 6to4 伪接口的 ifconfig 命令的输出:


# ifconfig ip.6to4tun0 inet6
ip.6to4tun0: flags=2200041<UP,RUNNING,NONUD,IPv6> mtu 1480 index 11
        inet tunnel src 192.168.87.188
        tunnel hop limit 60 
        inet6 2002:c0a8:57bc::1/64 


示例 7–13 /etc/inet/ndpd.conf 中的 6to4 通告

以下样例 /etc/inet/ndpd.conf 文件将在两个子网上通告 6to4 路由:


if qfe0 AdvSendAdvertisements 1
prefix  2002:c0a8:57bc:10::/64 qfe0 

if qfe1 AdvSendAdvertisements 1
prefix  2002:c0a8:57bc:2::/64 qfe1

在 6to4 站点上配置多个路由器

对于多路由器站点,可能需要进一步配置 6to4 路由器后面的路由器以支持 6to4。如果站点使用 RIP,则必须在每个非 6to4 路由器上配置通往 6to4 路由器的静态路由。如果使用商业路由协议,则无需创建通往 6to4 路由器的静态路由。

Procedure如何配置通往 6to4 中继路由器的 6to4 隧道


注意 – 注意 –

由于 6to4 中继路由器存在重要的安全问题,因此,在缺省情况下,Oracle Solaris : 中会禁用 6to4 中继路由器支持。请参见建立通往 6to4 中继路由器的隧道时的安全问题


开始之前

在启用通往 6to4 中继路由器的隧道之前,必须先完成下列任务:

  1. 以主管理员或超级用户身份登录到 6to4 路由器。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 使用以下格式之一启用通往 6to4 中继路由器的隧道:

    • 启用通往任意点传送 6to4 中继路由器的隧道。


      # /usr/sbin/6to4relay -e
      

      -e 选项可用于在 6to4 路由器和任意点传送 6to4 中继路由器之间设置隧道。任意点传送 6to4 中继路由器具有已知的 IPv4 地址 192.88.99.1。物理位置距离您的站点最近的任意点传送中继路由器将成为 6to4 隧道的端点。该中继路由器随后将在 6to4 站点和本机 IPv6 站点之间转发包。

      有关任意点传送 6to4 中继路由器的详细信息,请参阅 RFC 3068, "An Anycast Prefix for 6to4 Relay Routers"

    • 启用通往特定 6to4 中继路由器的隧道。


      # /usr/sbin/6to4relay -e -a relay-router-address
      

      -a 选项表示后面将跟有一个特定路由器地址。请将 relay-router-address 替换为用以启用隧道的特定 6to4 中继路由器的 IPv4 地址。

    除非删除 6to4 隧道的伪接口,否则通往 6to4 中继路由器的隧道将一直保持活动状态。

  3. 如果不再需要隧道,请删除通往 6to4 中继路由器的隧道:


    # /usr/sbin/6to4relay -d
    
  4. (可选)使通往 6to4 中继路由器的隧道在重新引导过程中持续保留。

    您的站点可能迫切要求通往 6to4 中继路由器的隧道在 6to4 路由器每次重新引导时都进行恢复。要支持此方案,必须执行下列操作:

    1. 编辑 /etc/default/inetinit 文件。

      需要修改的行位于该文件的末尾。

    2. ACCEPT6TO4RELAY=NO 行中的 "NO" 值更改为 "YES"。

    3. (可选)创建通往特定 6to4 中继路由器的隧道,该隧道在重新引导过程中持续保留。

      对于 RELAY6TO4ADDR 参数,请将 192.88.99.1 地址更改为要使用的 6to4 中继路由器的 IPv4 地址。


示例 7–14 获取有关 6to4 中继路由器支持的状态信息

可以使用 /usr/bin/6to4relay 命令来确定对 6to4 中继路由器是否启用了的支持。以下示例显示了禁用 6to4 中继路由器支持(此为 Oracle Solaris : 中的缺省设置)时的输出:


# /usr/sbin/6to4relay
6to4relay: 6to4 Relay Router communication support is disabled.

启用对 6to4 中继路由器的支持时,将接收到以下输出:


# /usr/sbin/6to4relay
6to4relay: 6to4 Relay Router communication support is enabled.
IPv4 remote address of Relay Router=192.88.99.1

针对 IPv6 配置名称服务支持

本节介绍如何将 DNS 和 NIS 名称服务配置为支持 IPv6 服务。


注 –

LDAP 无需执行特定于 IPv6 的配置任务即可支持 IPv6。


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

Procedure如何向 DNS 中添加 IPv6 地址

  1. 以主管理员或超级用户身份登录到主 DNS 服务器或辅助 DNS 服务器。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 通过为每个启用了 IPv6 的节点添加 AAAA 记录,来编辑相应的 DNS 区域文件:


    host-name  IN   AAAA 	host-address
    
  3. 编辑 DNS 反向区域文件并添加 PTR(指针)记录:


    host-address IN   PTR   hostname
    

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


示例 7–15 DNS 反向区域文件

此示例显示了反向区域文件中的 IPv6 地址。


$ORIGIN	ip6.int.	
8.2.5.0.2.1.e.f.f.f.9.2.0.0.a.0.6.5.2.9.0.0.0.0.0.0.0.0.2.0.0.0 \
	IN		PTR		vallejo.Eng.apex.COM.

向 NIS 中添加 IPv6 地址

在 Solaris 10 11/06 及更早的版本中,已为 NIS 添加了两个映射: ipnodes.bynameipnodes.byaddr。这些映射中既包含 IPv4 主机名和地址之间的关联,又包含 IPv6 主机名和地址之间的关联。可识别 IPv6 的工具使用的是 ipnodes NIS 映射。hosts.bynamehosts.byaddr 映射中仅包含 IPv4 主机名和地址之间的关联。为了便于现有的应用程序使用,这些映射仍保持原样。对 ipnodes 映射的管理与对 hosts.bynamehosts.byaddr 映射的管理类似。对于 Solaris 10 11/06 而言,有一点很重要,在用 IPv4 地址更新主机映射时,ipnode 映射也会使用相同信息进行更新。


注 –

Oracle Solaris 10 的后续版本不再使用 ipnodes 映射。现在,ipnodes 映射的 IPv6 功能保留在 hosts 映射中。


有关管理 NIS 映射的说明,请参阅《系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)》中的第 5  章 “设置和配置 NIS 服务”

Procedure如何显示 IPv6 名称服务信息

可以使用 nslookup 命令显示 IPv6 名称服务信息。

  1. 使用您的用户帐户运行 nslookup 命令。


    % /usr/sbin/nslookup
    

    此时会出现缺省的服务器名称和地址,后跟 nslookup 命令的尖括号提示符。

  2. 在尖括号提示符下键入以下命令,查看有关特定主机的信息:


    >set q=any
    >host-name
    
  3. 键入以下命令,以便仅查看 AAAA 记录:


    >set q=AAAA
    hostname
    
  4. 键入 exit,退出 nslookup 命令。


示例 7–16 使用 nslookup 显示 IPv6 信息

此示例显示了 nslookup 在 IPv6 网络环境中的输出结果。


%  /usr/sbin/nslookup
Default Server:  dnsserve.local.com
Address:  10.10.50.85
> set q=AAAA
> host85
Server:  dnsserve.local.com
Address:  10.10.50.85

host85.local.com      IPv6 address = 2::9256:a00:fe12:528
> exit

Procedure如何验证 DNS IPv6 PTR 记录是否已正确更新

在此过程中,可使用 nslookup 命令显示 DNS IPv6 的 PTR 记录。

  1. 使用您的用户帐户运行 nslookup 命令。


    % /usr/sbin/nslookup
    

    此时会出现缺省的服务器名称和地址,后跟 nslookup 命令的尖括号提示符。

  2. 在尖括号提示符下键入以下命令,查看 PTR 记录:


    >set q=PTR
    
  3. 键入 exit,退出该命令。


示例 7–17 使用 nslookup 显示 PTR 记录

以下示例显示了使用 nslookup 命令时所显示的 PTR 记录。


%  /usr/sbin/nslookup
Default Server:  space1999.Eng.apex.COM
Address:  192.168.15.78
> set q=PTR
> 8.2.5.0.2.1.e.f.f.f.0.2.0.0.a.0.6.5.2.9.0.0.0.0.0.0.0.0.2.0.0.0.ip6.int

8.2.5.0.2.1.e.f.f.f.0.2.0.0.a.0.6.5.2.9.0.0.0.0.0.0.0.0.2.0.0.0.ip6.int name = 
vallejo.ipv6.Eng.apex.COM
ip6.int nameserver = space1999.Eng.apex.COM
> exit

Procedure如何通过 NIS 显示 IPv6 信息

在此过程中,可使用 ypmatch 命令,通过 NIS 显示 IPv6 信息:

  1. 使用您的用户帐户键入以下命令,显示 NIS 中的 IPv6 地址:


    % ypmatch hostname hosts ipnodes.byname
    

    此时会显示有关指定 hostname 的信息。


    注 –

    Solaris 11/06 之后的 Oracle Solaris : 版本中不再包含 ipnodes 映射。现在,ipnodes 的 IPv6 功能保留在 hosts 映射中。



示例 7–18 ypmatch 命令输出的 IPv6 地址

对于 Solaris 10 11/06 及更早的版本,以下样例说明了针对 ipnodes.byname 数据库执行 ypmatch 操作的结果。


% ypmatch farhost hosts ipnodes.byname
2001:0db8:3c4d:15:a00:20ff:fe12:5286       farhost

Procedure如何显示与名称服务无关的 IPv6 信息

此过程仅适用于 Solaris 10 11/06 及更早的版本。对于后续版本,可以针对 hosts 数据库执行相同的操作。

  1. 使用您的用户帐户键入以下命令:


    % getent ipnodes hostname
    

    此时会显示有关指定 host-name 的信息。


示例 7–19 显示 ipnodes 数据库中的 IPv6 信息

以下样例说明了 getent 命令的输出:


% getent ipnodes vallejo

2001:0db8:8512:2:56:a00:fe87:9aba    myhost myhost
fe80::56:a00:fe87:9aba     myhost myhost

第 8 章 管理 TCP/IP 网络(任务)

本章介绍管理 TCP/IP 网络的任务。本章包含以下主题:

这些任务假设您的站点拥有正常运行的 TCP/IP 网络,该网络仅启用了 IPv4 或启用了双栈 IPv4/IPv6。如果希望在站点实施 IPv6 但尚未实现,请参阅以下各章以获取更多信息:

主要的 TCP/IP 管理任务(任务列表)

下表列出了进行初始配置后的其他网络管理任务,例如显示网络信息。此表中包含对各项任务要完成的工作的说明,以及当前文档中详细介绍用于执行任务的特定步骤的章节。

任务 

说明 

参考 

显示有关接口的配置信息。 

确定系统上每个接口的当前配置。 

如何获取有关特定接口的信息

显示指定的接口地址。 

确定为本地系统上所有接口指定的地址。 

如何显示指定的接口地址

按协议显示统计信息。 

监视特定系统上网络协议的性能。 

如何按协议显示统计信息

显示网络状态。 

通过显示所有套接字和路由表项来监视系统。输出包括 IPv4 的 inet 地址族和 IPv6 的 inet6 地址族。  

如何显示套接字的状态

显示网络接口的状态。 

监视网络接口的性能,这对于解决传输问题非常有用。 

如何显示网络接口状态

显示包传输状态。 

监视包在网络上传送时的状态。 

如何显示特定地址类型的包的传输状态

控制与 IPv6 相关的命令的显示输出。 

控制 pingnetstat ifconfigtraceroute 命令的输出。创建名为 inet_type 的文件。在此文件中设置 DEFAULT_IP 变量。

如何控制与 IP 相关的命令的显示输出

监视网络通信。 

使用 snoop 命令显示所有 IP 包。

如何监视 IPv6 网络通信

跟踪网络路由器已知的所有路由。 

使用 traceroute 命令显示所有路由。

如何跟踪所有路由

使用 ifconfig 命令监视接口配置

可以使用 ifconfig 命令为接口手动指定 IP 地址并手动配置接口参数。此外,Oracle Solaris : 启动脚本还运行 ifconfig 来配置伪接口,例如 6to4 隧道端点。

本书介绍多个使用通用 ifconfig 命令的各种选项的任务。有关此命令及其选项和变量的完整说明,请参阅 ifconfig(1M) 手册页。ifconfig 的基本语法如下所示:

ifconfig interface [protocol-family]

Procedure如何获取有关特定接口的信息

使用 ifconfig 命令可确定有关特定系统的接口的基本信息。例如,执行简单的 ifconfig 查询便可获取以下信息:

以下过程说明了如何使用 ifconfig 命令来获取有关系统接口的基本配置信息。

  1. 在本地主机上,承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 获取有关特定接口的信息。


    # ifconfig interface
    

    ifconfig 命令的输出格式如下:

    • 状态行

      ifconfig 命令输出中的第一行包括接口名称以及当前与接口关联的状态标志。此外,状态行还包括为特定接口配置的最大传输单元 (maximum transmission unit, MTU) 以及索引号。使用状态行可确定接口的当前状态。

    • IP 地址信息行

      ifconfig 输出的第二行包括为接口配置的 IPv4 地址或 IPv6 地址。对于 IPv4 地址,还显示已配置的网络掩码和广播地址。

    • MAC 地址行

      以超级用户或类似角色的身份运行 ifconfig 命令时,ifconfig 输出包含第三行。对于 IPv4 地址,第三行显示了为接口指定的 MAC 地址(以太网层地址)。对于 IPv6 地址,输出中的第三行显示了 IPv6 in.ndpd 守护进程根据 MAC 地址生成的链路本地地址。


示例 8–1 使用 ifconfig 命令生成的基本接口信息

以下示例说明了如何使用 ifconfig 命令来获取有关特定主机上的 eri 接口的信息。


# ifconfig eri
eri0: flags=863<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 1
      inet 10.0.0.112 netmask ffffff80 broadcast 10.8.48.127
      ether 8:0:20:b9:4c:54 
	

下表描述 ifconfig 查询中的变量信息,同时说明如何在屏幕上显示变量以及提供的信息类型。使用上述输出作为示例。

变量 

屏幕输出 

说明 

接口名称 

eri0

指示已在 ifconfig 命令中请求其状态的接口的设备名称。

接口状态 

flags=863<UP

显示接口的状态,包括当前与接口关联的所有标志。可以据此确定接口当前已初始化 (UP) 还是未初始化 (DOWN)。

广播状态 

BROADCAST

指示接口支持 IPv4 广播。 

传输状态 

RUNNING

指示系统正在通过接口传输包。 

多点传送状态 

MULTICAST, IPv4

显示接口支持多点传送传输。示例中的接口支持 IPv4 多点传送传输。 

最大传输单元 

mtu 1500

显示此接口的最大传输大小为 1500 个八位字节。 

IP 地址 

inet 10.0.0.112

显示为接口指定的 IPv4 或 IPv6 地址。示例接口 eri0 的 IPv4 地址为 10.0.0.112

网络掩码 

netmask ffffff80

显示特定接口的 IPv4 网络掩码。请注意,IPv6 地址不使用网络掩码。 

MAC 地址 

ether 8:0:20:b9:4c:54

显示接口的以太网层地址。 


Procedure如何显示指定的接口地址

路由器和多宿主主机具有多个接口,并且通常为每个接口指定多个 IP 地址。可以使用 ifconfig 命令来显示为系统接口指定的所有地址,还可以使用 ifconfig 命令仅显示指定的 IPv4 或 IPv6 地址。要另外显示接口的 MAC 地址,您必须首先以超级用户或相应角色的身份登录。

有关 ifconfig 命令的更多信息,请参见 ifconfig(1M) 手册页。

  1. 在本地系统上,承担网络管理角色或成为超级用户。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 获取有关所有接口的信息。

    您可以使用 ifconfig -a 命令的变体执行以下操作:

    • 查看系统上所有接口的所有地址。


      # ifconfig -a
      
    • 查看为系统接口指定的所有 IPv4 地址。


      # ifconfig -a4
      
    • 如果本地系统启用了 IPv6,则显示为系统接口指定的所有 IPv6 地址。


      ifconfig -a6
      

示例 8–2 显示所有接口的地址信息

此示例显示只具有一个主网络接口 (qfe0) 的主机的地址项。但是,ifconfig 输出显示当前为 qfe0 指定的三种形式的地址: 回送 (lo0)、IPv4 (inet) 和 IPv6 (inet6)。请注意,在输出的 IPv6 部分中,接口 qfe0 的行显示本地链路 IPv6 地址。qfe0 的第二个地址显示在 qfe0:1 行中。


% ifconfig -a
lo0: flags=1000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000 
qfe0: flags=1004843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2 
        inet 10.0.0.112 netmask ffffff80 broadcast 10.0.0.127
        ether 8:0:20:b9:4c:54 
lo0: flags=2000849 <UP,RUNNING,MULTICAST,IPv6> mtu 8252 index 1
        inet6 ::1/128 
qfe0: flags=2000841 <UP,RUNNING,MULTICAST,IPv6> mtu 1500 index 2
        ether 8:0:20:b9:4c:54 
        inet6 fe80::a00:20ff:feb9:4c54/10 
qfe0:1: flags=2080841 <UP,RUNNING,MULTICAST,ADDRCONF,IPv6> mtu 1500 index 2
        inet6 2001:db8:3c4d:48:a00:20ff:feb9:4c54/64 


示例 8–3 显示所有 IPv4 接口的地址信息

此示例显示了为多宿主主机配置的 IPv4 地址。不需要以超级用户的身份登录便可运行此形式的 ifconfig 命令。


% ifconfig -a4
lo0: flags=1000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000
qfe0: flags=1004843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 10.0.0.112 netmask ffffff80 broadcast 10.0.0.127
        ether 8:0:20:b9:4c:54 
qfe1: flags=1004843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 10.0.0.118 netmask ffffff80 broadcast 10.0.0.127
        ether 8:0:20:6f:5e:17


示例 8–4 显示所有 IPv6 接口的地址信息

此示例仅显示了为特定主机配置的 IPv6 地址。不需要以超级用户的身份登录,便可运行此形式的 ifconfig 命令。


% ifconfig -a6
lo0: flags=2000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv6> mtu 8252 index 1
        inet6 ::1/128 
qfe0: flags=2000841 <UP,RUNNING,MULTICAST,IPv6> mtu 1500 index 2
        ether 8:0:20:b9:4c:54 
        inet6 fe80::a00:20ff:feb9:4c54/10
qfe0:1: flags=2080841 <UP,RUNNING,MULTICAST,ADDRCONF,IPv6> mtu 1500 index 2
        inet6 2001:db8:3c4d:48:a00:20ff:feb9:4c54/64 

ifconfig 输出显示了为主机的单个接口指定的以下三种形式的 IPv6 地址:

lo0

IPv6 回送地址。

inet6 fe80::a00:20ff:feb9:4c54/10

为主网络接口指定的链路本地地址。

inet6 2001:db8:3c4d:48:a00:20ff:feb9:4c54/64

IPv6 地址,包括子网前缀。输出中的 ADDRCONF 一词指示此地址是由主机自动配置的。


使用 netstat 命令监视网络状态

netstat 命令生成包含网络状态和协议统计信息的显示内容。可以通过表格形式显示 TCP、SCTP(流控制传输协议)和 UDP(用户数据报协议)端点的状态,还可以显示路由表信息和接口信息。

netstat 可显示各种类型的网络数据,具体取决于所选择的命令行选项。这些显示信息对于系统管理非常有价值。netstat 的基本语法如下所示:

netstat [-m] [-n] [-s] [-i | -r] [-f address-family]

本节介绍最常用的 netstat 命令选项。有关所有 netstat 选项的详细说明,请参阅 netstat(1M) 手册页。

Procedure如何按协议显示统计信息

netstat -s 选项显示 UDP、TCP、SCTP、ICMP 和 IP 协议的统计信息。


注 –

可以使用 Oracle Solaris : 用户帐户获取 netstat 命令的输出。


  1. 显示协议状态。


    $ netstat -s
    

示例 8–5 网络协议统计信息

以下示例显示了 netstat -s 命令的输出。某些输出信息已被截断。输出可以指明存在协议问题的区域。例如,ICMPv4 和 ICMPv6 的统计信息可以指明 ICMP 协议发现错误的位置。


RAWIP
        rawipInDatagrams    =  4701     rawipInErrors       =     0
        rawipInCksumErrs    =     0     rawipOutDatagrams   =     4
        rawipOutErrors      =     0

UDP
        udpInDatagrams      = 10091     udpInErrors         =     0
        udpOutDatagrams     = 15772     udpOutErrors        =     0

TCP     tcpRtoAlgorithm     =     4     tcpRtoMin           =   400
        tcpRtoMax           = 60000     tcpMaxConn          =    -1
        .
        .
        tcpListenDrop       =     0     tcpListenDropQ0     =     0
        tcpHalfOpenDrop     =     0     tcpOutSackRetrans   =     0

IPv4    ipForwarding        =     2     ipDefaultTTL        =   255
        ipInReceives        =300182     ipInHdrErrors       =     0
        ipInAddrErrors      =     0     ipInCksumErrs       =     0
        .
        .
        ipsecInFailed       =     0     ipInIPv6            =     0
        ipOutIPv6           =     3     ipOutSwitchIPv6     =     0

IPv6    ipv6Forwarding      =     2     ipv6DefaultHopLimit =   255
        ipv6InReceives      = 13986     ipv6InHdrErrors     =     0
        ipv6InTooBigErrors  =     0     ipv6InNoRoutes      =     0
        .
        .
        rawipInOverflows    =     0     ipv6InIPv4          =     0
 
       ipv6OutIPv4         =     0     ipv6OutSwitchIPv4   =     0

ICMPv4  icmpInMsgs          = 43593     icmpInErrors        =     0
        icmpInCksumErrs     =     0     icmpInUnknowns      =     0
        .
        .
        icmpInOverflows     =     0

ICMPv6  icmp6InMsgs         = 13612     icmp6InErrors       =     0
        icmp6InDestUnreachs =     0     icmp6InAdminProhibs =     0
        .
        .
        icmp6OutGroupQueries=     0     icmp6OutGroupResps  =     2
        icmp6OutGroupReds   =     0

IGMP:
      12287 messages received
          0 messages received with too few bytes
          0 messages received with bad checksum
      12287 membership queries received
SCTP  sctpRtoAlgorithm     =  vanj    
      sctpRtoMin           =  1000 
      sctpRtoMax           = 60000
      sctpRtoInitial       =  3000
      sctpTimHearBeatProbe =     2
      sctpTimHearBeatDrop  =     0
      sctpListenDrop       =     0
      sctpInClosed         =     0 

Procedure如何显示传输协议的状态

可以通过 netstat 命令显示传输协议的状态。有关详细信息,请参阅 netstat(1M) 手册页。

  1. 显示系统上 TCP 和 SCTP 传输协议的状态。


    $ netstat
    
  2. 显示系统上特定传输协议的状态。


    $ netstat -P transport-protocol
    

    transport-protocol 变量的值为 tcpsctpudp


示例 8–6 显示 TCP 和 SCTP 传输协议的状态

此示例显示基本 netstat 命令的输出。请注意,仅显示与 IPv4 有关的信息。


$ netstat

TCP: IPv4
   Local Address     Remote Address    Swind Send-Q  Rwind Recv-Q      State
----------------- -------------------- ----- ------  ----- ------     -------
lhost-1.login      abc.def.local.Sun.COM.980 49640      0     49640    0 ESTABLISHED
lhost-1.login      ghi.jkl.local.Sun.COM.1020 49640     1     49640    0 ESTABLISHED
remhost-1.1014     mno.pqr.remote.Sun.COM.nfsd 49640    0     49640    0 TIME_WAIT
SCTP:                  
Local Address    Remote Address  Swind  Send-Q  Rwind  Recv-Q StrsI/O  State 
---------------- --------------  -----  ------ ------ ------  ------   -------
 *.echo            0.0.0.0            0       0 102400      0   128/1   LISTEN
 *.discard         0.0.0.0            0       0 102400      0   128/1   LISTEN
 *.9001            0.0.0.0            0       0 102400      0   128/1   LISTEN


示例 8–7 显示特定传输协议的状态

此示例显示指定了 netstat-P 选项时的结果。


$ netstat -P tcp
   
TCP: IPv4
   Local Address     Remote Address    Swind Send-Q  Rwind Recv-Q      State
----------------- -------------------- ----- ------  ----- ------     -------
lhost-1.login      abc.def.local.Sun.COM.980 49640      0     49640    0 ESTABLISHED
lhost.login        ghi.jkl.local.Sun.COM.1020 49640     1     49640    0 ESTABLISHED
remhost.1014       mno.pqr.remote.Sun.COM.nfsd 49640    0     49640    0 TIME_WAIT

TCP: IPv6
 Local Address    Remote Address        Swind Send-Q Rwind Recv-Q   State If 
---------------- ---------------------- ------ ----- ------ ----------- -----
localhost.38983   localhost.32777       49152      0 49152      0 ESTABLISHED      
localhost.32777   localhost.38983       49152      0 49152      0 ESTABLISHED      
localhost.38986   localhost.38980       49152      0 49152      0 ESTABLISHED      

Procedure如何显示网络接口状态

netstat 命令的 i 选项显示本地系统上配置的网络接口的状态。可以使用此选项确定系统在每个网络中传输和接收的包数。

  1. 显示网络中接口的状态。


    $ netstat -i
    

示例 8–8 网络接口状态显示

下面的示例显示通过主机接口的 IPv4 和 IPv6 包流的状态。

例如,每次客户机尝试引导时,显示的服务器输入包计数 (Ipkts) 都会增加,而输出包计数 (Opkts) 保持不变。这种情况表示服务器正在查看来自客户机的引导请求包。但是,服务器却不知道对它们做出响应。这种混乱可能是由 hostsipnodesethers 数据库中的错误地址引起的。

但是,如果输入包计数在一段时间内保持不变,则说明计算机根本未查看包。这种情况说明出现了其他类型的故障,如硬件问题。


Name  Mtu  Net/Dest      Address        Ipkts  Ierrs Opkts  Oerrs Collis Queue 
lo0   8232 loopback      localhost      142    0     142    0     0      0     
hme0  1500 host58        host58        1106302 0     52419  0     0      0     

Name  Mtu  Net/Dest      Address                    Ipkts  Ierrs Opkts  Oerrs Collis
lo0   8252 localhost     localhost                   142    0     142    0     0     
hme0  1500 fe80::a00:20ff:feb9:4c54/10 fe80::a00:20ff:feb9:4c54 1106305 0 52422 0  0

Procedure如何显示套接字的状态

使用 netstat 命令的 -a 选项,可以查看本地主机上套接字的状态。

  1. 键入以下内容显示套接字和路由表项的状态:

    使用用户帐户便可运行 netstat 的 -a 选项。


    % netstat -a  
    

示例 8–9 显示所有套接字和路由表项

netstat -a 命令的输出显示详细的统计信息。以下示例显示 netstat -a 典型输出的各部分信息。


UDP: IPv4
   Local Address         Remote Address     State
-------------------- -------------------- -------
      *.bootpc                              Idle
host85.bootpc                               Idle
      *.*                                   Unbound
      *.*                                   Unbound
      *.sunrpc                              Idle
      *.*                                   Unbound
      *.32771                               Idle
      *.sunrpc                              Idle
      *.*                                   Unbound
      *.32775                               Idle
      *.time                                Idle
       .
       .
      *.daytime                             Idle
      *.echo                                Idle
      *.discard                             Idle
      
UDP: IPv6
   Local Address                     Remote Address                   State      If  
--------------------------------- --------------------------------- ---------- -----
      *.*                                                           Unbound   
      *.*                                                           Unbound   
      *.sunrpc                                                      Idle      
      *.*                                                           Unbound   
      *.32771                                                       Idle      
      *.32778                                                       Idle      
      *.syslog                                                      Idle      
      .
      .
TCP: IPv4
   Local Address        Remote Address    Swind Send-Q Rwind Recv-Q  State
-------------------- -------------------- ----- ------ ----- ------ -------
      *.*                  *.*                0      0 49152      0 IDLE
localhost.4999             *.*                0      0 49152      0 LISTEN
      *.sunrpc             *.*                0      0 49152      0 LISTEN
      *.*                  *.*                0      0 49152      0 IDLE
      *.sunrpc             *.*                0      0 49152      0 LISTEN
      .
      .
      *.printer            *.*                0      0 49152      0 LISTEN
      *.time               *.*                0      0 49152      0 LISTEN
      *.daytime            *.*                0      0 49152      0 LISTEN
      *.echo               *.*                0      0 49152      0 LISTEN
      *.discard            *.*                0      0 49152      0 LISTEN
      *.chargen            *.*                0      0 49152      0 LISTEN
      *.shell              *.*                0      0 49152      0 LISTEN
      *.shell              *.*                0      0 49152      0 LISTEN
      *.kshell             *.*                0      0 49152      0 LISTEN
      *.login  
       .
       .
            *.*                0      0 49152      0 LISTEN
   *TCP: IPv6
 Local Address            Remote Address        Swind Send-Q Rwind Recv-Q   State If
----------------------- ----------------------- ----- ------ ----- ------    ----
   *.*                         *.*                0      0 49152      0      IDLE
   *.sunrpc                    *.*                0      0 49152      0      LISTEN
   *.*                         *.*                0      0 49152      0      IDLE
   *.32774                     *.*                0      0 49152

Procedure如何显示特定地址类型的包的传输状态

使用 netstat 命令的 -f 选项可查看与特定地址族的包传输相关的统计信息。

  1. 查看 IPv4 或 IPv6 包传输的统计信息。


    $ netstat -f inet  |  inet6
    

    要查看 IPv4 传输信息,请键入 inet 作为 netstat -f 的参数。使用 inet6 作为 netstat -f 的参数可查看 IPv6 信息。


示例 8–10 IPv4 包传输的状态

以下示例显示了 netstat -f inet 命令的输出。


TCP: IPv4
   Local Address        Remote Address    Swind Send-Q Rwind Recv-Q  State
-------------------- -------------------- ----- ------ ----- ------ -------
host58.734         host19.nfsd       49640      0 49640      0 ESTABLISHED
host58.38063       host19.32782      49640      0 49640      0 CLOSE_WAIT
host58.38146       host41.43601      49640      0 49640      0 ESTABLISHED
host58.996         remote-host.login 49640      0 49206      0 ESTABLISHED


示例 8–11 IPv6 包传输的状态

以下示例显示了 netstat - f inet6 命令的输出。


TCP: IPv6
 Local Address          Remote Address        Swind Send-Q Rwind Recv-Q   State    If
------------------ ------------------------- ----- ------ ----- ------ --------- -----
localhost.38065         localhost.32792       49152   0 49152      0    ESTABLISHED  
localhost.32792         localhost.38065       49152   0 49152      0    ESTABLISHED 
localhost.38089         localhost.38057       49152   0 49152      0    ESTABLISHED 

Procedure如何显示已知路由的状态

netstat 命令的 -r 选项显示本地主机的路由表。该表显示主机知晓的所有路由的状态。使用用户帐户便可运行 netstat 的 -r 选项。

  1. 显示 IP 路由表。


    $ netstat -r
    

示例 8–12 netstat 命令生成的路由表输出

以下示例显示了 netstat -r 命令的输出。


Routing Table: IPv4
  Destination           Gateway           Flags  Ref   Use   Interface
-------------------- -------------------- ----- ----- ------ ---------
host15               myhost               U         1  31059  hme0
10.0.0.14            myhost               U         1      0  hme0
default              distantrouter        UG        1      2  hme0
localhost            localhost            UH        42019361  lo0

Routing Table: IPv6
  Destination/Mask            Gateway                   Flags Ref   Use   If  
--------------------------- --------------------------- ----- --- ------ -----
2002:0a00:3010:2::/64    2002:0a00:3010:2:1b2b:3c4c:5e6e:abcd U  1      0 hme0:1
fe80::/10                fe80::1a2b:3c4d:5e6f:12a2    U       1     23 hme0 
ff00::/8                 fe80::1a2b:3c4d:5e6f:12a2    U       1      0 hme0 
default                  fe80::1a2b:3c4d:5e6f:12a2    UG      1      0 hme0 
localhost                localhost                   UH      9  21832 lo0 

下表解释了 netstat —r 命令的屏幕输出的各种参数。

参数 

说明 

目标

Destination/Mask

指定作为路由目标端点的主机。请注意,IPv6 路由表将 6to4 隧道端点 (2002:0a00:3010:2::/64) 的前缀显示为路由目标端点。

Gateway

指定用于转发包的网关。 

Flags

指示路由的当前状态。U 标志指示路由处于运行状态。G 标志指示路由指向网关。

Use

显示已发送的包数。 

Interface

指示作为传输源端点的本地主机上的特定接口。 


使用 ping 命令探测远程主机

可以使用 ping 命令确定远程主机的状态。运行 ping 时,ICMP 协议会将数据报发送到指定的主机,并请求响应。ICMP 是负责 TCP/IP 网络中错误处理的协议。使用 ping,可查明是否存在与指定的远程主机的 IP 连接。

以下是 ping 的基本语法:

/usr/sbin/ping host [timeout]

在此语法中,host 是远程主机的名称。timeout 参数(可选)指示 ping 命令继续尝试到达远程主机所用的时间(以秒为单位)。缺省值为 20 秒。有关其他语法和选项,请参阅 ping(1M) 手册页。

Procedure如何确定远程主机是否正在运行

  1. 键入以下形式的 ping 命令:


    $ ping hostname
    

    如果主机 hostname 正在接受 ICMP 传输,则会显示以下消息:


    hostname is alive

    此消息指示 hostname 对 ICMP 请求做出了响应。但是,如果 hostname 出现故障或者无法接收 ICMP 包,则会从 ping 命令接收到以下响应:


    no answer from hostname
    

Procedure如何确定主机是否正在丢弃包

使用 -ping 命令的 s 选项可确定远程主机是否虽在运行但丢失了包。

  1. 键入以下形式的 ping 命令:


    $ ping -s hostname
    

示例 8–13 用于检测包丢弃的 ping 输出

ping -s hostname 命令连续不断地将包发送到指定的主机,直到您发送中断字符或出现超时为止。屏幕上显示的响应信息与以下内容类似:


& ping -s host1.domain8
PING host1.domain8 : 56 data bytes
64 bytes from host1.domain8.COM (172.16.83.64): icmp_seq=0. time=1.67 ms
64 bytes from host1.domain8.COM (172.16.83.64): icmp_seq=1. time=1.02 ms
64 bytes from host1.domain8.COM (172.16.83.64): icmp_seq=2. time=0.986 ms
64 bytes from host1.domain8.COM (172.16.83.64): icmp_seq=3. time=0.921 ms
64 bytes from host1.domain8.COM (172.16.83.64): icmp_seq=4. time=1.16 ms
64 bytes from host1.domain8.COM (172.16.83.64): icmp_seq=5. time=1.00 ms
64 bytes from host1.domain8.COM (172.16.83.64): icmp_seq=5. time=1.980 ms

^C

----host1.domain8  PING Statistics----
7 packets transmitted, 7 packets received, 0% packet loss
round-trip (ms)  min/avg/max/stddev = 0.921/1.11/1.67/0.26

包丢失统计信息指示主机是否已丢弃包。如果 ping 失败,请检查由 ifconfignetstat 命令报告的网络状态。请参阅使用 ifconfig 命令监视接口配置使用 netstat 命令监视网络状态


管理和记录网络状态显示

以下任务说明如何使用已知的网络命令来检查网络状态。

Procedure如何控制与 IP 相关的命令的显示输出

可以将 netstatifconfig 命令的输出控制为仅显示 IPv4 信息或同时显示 IPv4 和 IPv6 信息。

  1. 创建 /etc/default/inet_type 文件。

  2. 根据您的网络需要,将以下某一项添加到 /etc/default/inet_type

    • 仅显示 IPv4 信息:


      DEFAULT_IP=IP_VERSION4
    • 同时显示 IPv4 和 IPv6 信息:


      DEFAULT_IP=BOTH


      DEFAULT_IP=IP_VERSION6

      有关 inet_type 文件的更多信息,请参见 inet_type(4) 手册页。


    注 –

    ifconfig 命令中的 -4-6 标志将覆盖 inet_type 文件中设置的值。netstat 命令中的 -f 标志也将覆盖 inet_type 文件中设置的值。



示例 8–14 将输出控制为有选择地显示 IPv4 和 IPv6 信息


Procedure如何记录 IPv4 路由选择守护进程的操作

如果怀疑 routed(IPv4 路由选择守护进程)不能正常运行,则可以启动跟踪此守护进程活动的日志。此日志包括启动 routed 守护进程时的所有包传送。

  1. 在本地主机上,承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 创建路由选择守护进程操作的日志文件:


    # /usr/sbin/in.routed /var/log-file-name
    

    注意 – 注意 –

    在繁忙的网络中,此命令生成的输出几乎是连续的。



示例 8–15 in.routed 守护进程的网络日志

以下示例显示由如何记录 IPv4 路由选择守护进程的操作过程创建的日志的开始部分。


-- 2003/11/18 16:47:00.000000 --
Tracing actions started
RCVBUF=61440
Add interface lo0  #1   127.0.0.1      -->127.0.0.1/32   
   <UP|LOOPBACK|RUNNING|MULTICAST|IPv4> <PASSIVE> 
Add interface hme0 #2   10.10.48.112    -->10.10.48.0/25   
    <UP|BROADCAST|RUNNING|MULTICAST|IPv4> 
turn on RIP
Add    10.0.0.0        -->10.10.48.112      metric=0  hme0  <NET_SYN>
Add    10.10.48.85/25  -->10.10.48.112      metric=0  hme0  <IF|NOPROP>

Procedure如何跟踪 IPv6 相邻节点搜索守护进程的活动

如果您怀疑 IPv6 in.ndpd 守护进程不能正常运行,则可以启动跟踪此守护进程的活动的日志。此跟踪显示在标准输出中,直到终止。此跟踪包括启动 in.ndpd 守护进程时的所有包传送。

  1. 在本地 IPv6 节点上承担主管理员角色或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 启动对 in.ndpd 守护进程的跟踪。


    # /usr/lib/inet/in.ndpd -t
    
  3. 根据需要按 Ctrl-C 组合键终止跟踪。


示例 8–16 对 in.ndpd 守护进程的跟踪

以下输出显示了对 in.ndpd 的跟踪的开始部分。


# /usr/lib/inet/in.ndpd -t
Nov 18 17:27:28 Sending solicitation to  ff02::2 (16 bytes) on hme0
Nov 18 17:27:28         Source LLA: len 6 <08:00:20:b9:4c:54>
Nov 18 17:27:28 Received valid advert from fe80::a00:20ff:fee9:2d27 (88 bytes) on hme0
Nov 18 17:27:28         Max hop limit: 0
Nov 18 17:27:28         Managed address configuration: Not set
Nov 18 17:27:28         Other configuration flag: Not set
Nov 18 17:27:28         Router lifetime: 1800
Nov 18 17:27:28         Reachable timer: 0
Nov 18 17:27:28         Reachable retrans timer: 0
Nov 18 17:27:28         Source LLA: len 6 <08:00:20:e9:2d:27>
Nov 18 17:27:28         Prefix: 2001:08db:3c4d:1::/64
Nov 18 17:27:28                 On link flag:Set
Nov 18 17:27:28                 Auto addrconf flag:Set
Nov 18 17:27:28                 Valid time: 2592000
Nov 18 17:27:28                 Preferred time: 604800
Nov 18 17:27:28         Prefix: 2002:0a00:3010:2::/64
Nov 18 17:27:28                 On link flag:Set
Nov 18 17:27:28                 Auto addrconf flag:Set
Nov 18 17:27:28                 Valid time: 2592000
Nov 18 17:27:28                 Preferred time: 604800

使用 traceroute 命令显示路由信息

traceroute 命令将跟踪发往远程系统的 IP 包所经过的路由。有关 traceroute 的详细技术信息,请参见 traceroute(1M) 手册页。

可以使用 traceroute 命令查找所有的路由配置错误以及路由路径错误。如果无法到达特定的主机,则可以使用 traceroute 来查看发往远程主机的包所经由的路径以及可能出现故障的位置。

traceroute 命令还显示在通向目标主机的路径上每个网关的往返时间。此信息对于分析两个主机之间何处出现通信缓慢非常有用。

Procedure如何查找通向远程主机的路由

  1. 键入以下命令查找通向远程系统的路由:


    % traceroute destination-hostname
    

    使用用户帐户便可运行此 traceroute 命令形式。


示例 8–17 使用 traceroute 命令显示通向远程主机的路由

以下 traceroute 命令输出显示了包从本地系统 nearhost 到达远程系统 farhost 所经由的具有七个跃点的路径。此输出还显示包遍历每个跃点所用的时间。


istanbul% traceroute farhost.faraway.com
	traceroute to farhost.faraway.com (172.16.64.39), 30 hops max, 40 byte packets
	 1  frbldg7c-86 (172.16.86.1)  1.516 ms  1.283 ms  1.362 ms
	 2  bldg1a-001 (172.16.1.211)  2.277 ms  1.773 ms  2.186 ms
	 3  bldg4-bldg1 (172.16.4.42)  1.978 ms  1.986 ms  13.996 ms
	 4  bldg6-bldg4 (172.16.4.49)  2.655 ms  3.042 ms  2.344 ms
	 5  ferbldg11a-001 (172.16.1.236)  2.636 ms  3.432 ms  3.830 ms
	 6  frbldg12b-153 (172.16.153.72)  3.452 ms  3.146 ms  2.962 ms
	 7  sanfrancisco (172.16.64.39)  3.430 ms  3.312 ms  3.451 ms

Procedure如何跟踪所有路由

此过程使用 traceroute 命令的 -a 选项来跟踪所有路由。

  1. 在本地系统上键入以下命令:


    % traceroute -ahost-name
    

    使用用户帐户便可运行此 traceroute 命令形式。


示例 8–18 跟踪所有通向双栈主机的路由

此示例显示通向双栈主机的所有可能路由。


% traceroute -a v6host.remote.com
traceroute: Warning: Multiple interfaces found; using 2::56:a0:a8 @ eri0:2
traceroute to v6host (2001:db8:4a3b::102:a00:fe79:19b0),30 hops max, 60 byte packets
 1  v6-rout86 (2001:db8:4a3b:56:a00:fe1f:59a1)  35.534 ms  56.998 ms * 
 2  2001:db8::255:0:c0a8:717  32.659 ms  39.444 ms *
 3  farhost.faraway.COM (2001:db8:4a3b::103:a00:fe9a:ce7b)  401.518 ms  7.143 ms *
 4  distant.remote.com (2001:db8:4a3b::100:a00:fe7c:cf35)  113.034 ms  7.949 ms *
 5  v6host (2001:db8:4a3b::102:a00:fe79:19b0)  66.111 ms *  36.965 ms

traceroute to v6host.remote.com  (192.168.10.75),30 hops max,40 byte packets
 1  v6-rout86 (172.16.86.1)  4.360 ms  3.452 ms  3.479 ms
 2  flrmpj17u.here.COM (172.16.17.131)  4.062 ms  3.848 ms  3.505 ms
 3  farhost.farway.com (10.0.0.23)  4.773 ms *  4.294 ms
 4  distant.remote.com (192.168.10.104)  5.128 ms  5.362 ms *
 5  v6host  (192.168.15.85)  7.298 ms  5.444 ms *
 

使用 snoop 命令监视包传送

可以使用 snoop 命令监视数据传送的状态。snoop 捕获网络包并以指定的格式显示其内容。系统收到包或将其保存到文件之后,便会立即显示这些包。当 snoop 向中间文件执行写入操作时,在密切跟踪的情况下不可能丢失包。然后,可以使用 snoop 本身来解释此文件。

要以混杂模式捕获进出缺省接口的包,您必须承担网络管理员角色或成为超级用户。在汇总表单中,snoop 仅显示与最高级协议有关的数据。例如,NFS 包仅显示 NFS 信息,而不会显示底层 RPC、UDP、IP 和以太网帧信息,但是如果选择了两个详细选项之一,则会显示这些信息。

坚持不懈地使用 snoop 可以使您熟悉常规系统行为。有关对包进行分析的帮助,请查找最新的白皮书和 RFC,并搜寻专家针对特定领域(如 NFS 或 NIS)提供的建议。有关使用 snoop 及其选项的详细信息,请参阅 snoop(1M) 手册页。

Procedure如何检查来自所有接口的包

  1. 在本地主机上,承担网络管理角色或成为超级用户。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 列显有关连接到系统的接口的信息。


    # ifconfig -a
    

    snoop 命令通常使用第一个非回送设备,通常为主网络接口。

  3. 键入不带参数的 snoop 开始捕获包,如示例 8–19 所示。

  4. 使用 Ctrl-C 组合键停止此进程。


示例 8–19 snoop 命令的输出

基本 snoop 命令针对双栈主机返回如下所示的输出。


% snoop
Using device /dev/hme (promiscuous mode)
farhost.remote.com -> myhost       RLOGIN C port=993 
    myhost -> farhost.remote.com   RLOGIN R port=993 Using device /dev/hme
router5.local.com -> router5.local.com ARP R 10.0.0.13, router5.local.com is
    0:10:7b:31:37:80
router5.local.com -> BROADCAST     TFTP Read "network-confg" (octet)
farhost.remote.com -> myhost       RLOGIN C port=993 
    myhost ->   nisserve2          NIS C MATCH 10.0.0.64 in ipnodes.byaddr
nisserve2 ->    myhost             NIS R MATCH No such key
    blue-112 -> slave-253-2        NIS C MATCH 10.0.0.112 in ipnodes.byaddr
myhost -> DNSserver.local.com      DNS C 192.168.10.10.in-addr.arpa. Internet PTR ?
DNSserver.local.com  myhost        DNS R 192.168.10.10.in-addr.arpa. Internet PTR 
   niserve2.
.
.
farhost.remote.com-> myhost        RLOGIN C port=993 
    myhost -> farhost.remote.com   RLOGIN R port=993 fe80::a00:20ff:febb:
.
fe80::a00:20ff:febb:e09 -> ff02::9 RIPng R (5 destinations)

在此输出中捕获的包显示了远程登录部分,包括查找 NIS 和 DNS 服务器以便进行地址解析。同时还包括来自本地路由器的定期 ARP 包以及向 in.ripngd 发出的 IPv6 链路本地地址的通告。


Procedure如何将 snoop 输出捕获到文件

  1. 在本地主机上,承担网络管理角色或成为超级用户。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. snoop 会话捕获到文件。


    # snoop -o filename
    

    例如:


    # snoop -o /tmp/cap
    Using device /dev/eri (promiscuous mode)
    30 snoop: 30 packets captured

    此示例中,在名为 /tmp/cap 的文件中捕获到了 30 个包。可以将此文件放在任何具有足够磁盘空间的目录中。捕获的包数显示在命令行中,您可以随时按 Ctrl-C 组合键中止捕获。

    snoop 将在主机上生成大量网络负载,这会使结果失真。要查看实际结果,请从第三方系统运行 snoop

  3. 检查 snoop 输出捕获文件。


    # snoop -i filename
    

示例 8–20 snoop 输出捕获文件的内容

以下内容显示了可能会作为 snoop -i 命令输出接收到的各种捕获。


# snoop -i /tmp/cap
1   0.00000 fe80::a00:20ff:fee9:2d27 -> fe80::a00:20ff:fecd:4375 
    ICMPv6 Neighbor advertisement
2   0.16198 farhost.com   -> myhost     RLOGIN C port=985 
3   0.00008 myhost -> farhost.com       RLOGIN R port=985 
10  0.91493    10.0.0.40 -> (broadcast)  ARP C Who is 10.0.0.40, 10.0.0.40 ?
34  0.43690 nearserver.here.com  -> 224.0.1.1  IP  D=224.0.1.1 S=10.0.0.40 LEN=28, 
      ID=47453, TO =0x0, TTL=1
35  0.00034  10.0.0.40 -> 224.0.1.1    IP  D=224.0.1.1 S=10.0.0.40 LEN=28, ID=57376, 
     TOS=0x0, TTL=47  

Procedure如何检查 IPv4 服务器和客户机之间的包

  1. 在远离与客户机或服务器相连的集线器的位置建立 snoop 系统。

    第三方系统(snoop 系统)将检查所有干预通信,因此 snoop 跟踪会反映网络上实际出现的情况。

  2. snoop 系统上,承担网络管理角色或成为超级用户。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  3. 键入带有选项的 snoop 并将输出保存到文件。

  4. 检查并解释输出。

    有关 snoop 捕获文件的详细信息,请参阅 RFC 1761, Snoop Version 2 Packet Capture File Format

Procedure如何监视 IPv6 网络通信

您可以使用 snoop 命令来仅显示 IPv6 包。

  1. 在本地节点上,承担网络管理角色或成为超级用户。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 捕获 IPv6 包。


    # snoop ip6
    

    有关 snoop 命令的更多信息,请参见 snoop(1M) 手册页。


示例 8–21 仅显示 IPv6 网络通信

以下示例显示了在节点上运行 snoop ip6 命令时可能显示的典型输出。


# snoop ip6
fe80::a00:20ff:fecd:4374 -> ff02::1:ffe9:2d27 ICMPv6 Neighbor solicitation
fe80::a00:20ff:fee9:2d27 -> fe80::a00:20ff:fecd:4375 ICMPv6 Neighbor 
      solicitation
fe80::a00:20ff:fee9:2d27 -> fe80::a00:20ff:fecd:4375 ICMPv6 Neighbor 
      solicitation
fe80::a00:20ff:febb:e09 -> ff02::9      RIPng R (11 destinations)
fe80::a00:20ff:fee9:2d27 -> ff02::1:ffcd:4375 ICMPv6 Neighbor solicitation

管理缺省地址选择

Oracle Solaris : 可以让单个接口拥有多个 IP 地址。例如,使用网络多路径 (network multipathing, IPMP) 之类的技术,可以将多个网络接口卡 (network interface card, NIC) 连接到同一 IP 链路层。此链路可以具有一个或多个 IP 地址。此外,启用了 IPv6 的系统上的接口具有一个链路本地 IPv6 地址,至少具有一个 IPv6 路由地址,并且至少一个接口具有 IPv4 地址。

当系统启动事务时,应用程序便会对 getaddrinfo 套接字发出调用。getaddrinfo 将搜索可能在目标系统上使用的地址。然后,内核将设置此列表的优先级,以便找到包的最佳目标。此过程称为目标地址排序。然后,如果确定了包的最佳目标地址,Oracle Solaris : 内核将选择相应的源地址格式。此过程称为地址选择。有关目标地址排序的更多信息,请参见 getaddrinfo(3SOCKET) 手册页。

仅启用了 IPv4 的系统和启用了双栈 IPv4/IPv6 的系统必须执行缺省地址选择。大多数情况下,不需要更改缺省地址选择机制。但是,您可能需要更改地址格式的优先级,以便支持 IPMP 或首选使用 6to4 地址格式等。

Procedure如何管理 IPv6 地址选择策略表

以下过程介绍如何修改地址选择策略表。有关 IPv6 缺省地址选择的概念性信息,请参阅ipaddrsel 命令


注意 – 注意 –

如果不是出于下一个任务中提到的某些原因,请不要更改 IPv6 地址选择策略表。策略表构造不正确可能会导致网络出现问题。请确保保存了策略表的副本(如下一过程所示)。


  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 查看当前的 IPv6 地址选择策略表。


    # ipaddrsel
    # Prefix                  Precedence Label
    ::1/128                           50 Loopback
    ::/0                              40 Default
    2002::/16                         30 6to4
    ::/96                             20 IPv4_Compatible
    ::ffff:0.0.0.0/96                 10 IPv4
  3. 备份缺省地址策略表的副本。


    # cp /etc/inet/ipaddrsel.conf /etc/inet/ipaddrsel.conf.orig
    
  4. 使用文本编辑器在 /etc/inet/ipaddrsel.conf 中添加自定义信息。

    针对 /etc/inet/ipaddrsel 中的各项使用以下语法:


    prefix/prefix-length precedence label [# comment ] 
    

    下面是一些常见的对策略表的修改:

    • 为 6to4 地址指定最高优先级。


      2002::/16                         50 6to4
      ::1/128                           45 Loopback

      6to4 地址格式现在具有最高优先级 50,而先前优先级为 50 的回送现在的优先级变为 45。其他地址格式保持不变。

    • 指定与特定目标地址进行通信的特定源地址。


      ::1/128                           50 Loopback
      2001:1111:1111::1/128             40 ClientNet
      2001:2222:2222::/48               40 ClientNet
      ::/0                              40 Default

      对于仅有一个物理接口的主机,此特定项非常有用。此处,2001:1111:1111::1/128 是发往网络 2001:2222:2222::/48 中目标的所有包的首选源地址。优先级 40 使得源地址 2001:1111:1111::1/128 的优先级高于为接口配置的其他地址格式。

    • IPv4 地址优先于 IPv6 地址。


      ::ffff:0.0.0.0/96                 60 IPv4
      ::1/128                           50 Loopback
      .
      .

      IPv4 格式 ::ffff:0.0.0.0/96 的优先级已从缺省的 10 更改为 60,这是表中的最高优先级。

  5. 将已修改的策略表加载到内核。


    ipaddrsel -f /etc/inet/ipaddrsel.conf
    
  6. 如果已修改的策略表存在问题,请恢复缺省 IPv6 地址选择策略表。


    # ipaddrsel -d
    

Procedure如何仅修改当前会话的 IPv6 地址选择表

编辑 /etc/inet/ipaddrsel.conf 文件时,所做的任何修改即使在重新引导系统之后也都会保留下来。如果希望已修改的策略表仅存在于当前会话中,请执行以下过程。

  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. /etc/inet/ipaddrsel 的内容复制到 filename,其中 filename 是您选择的文件名称。


    # cp /etc/inet/ipaddrsel filename
    
  3. 根据需要在 filename 中编辑策略表。

  4. 将已修改的策略表加载到内核。


    # ipaddrsel -f filename
    

    内核将使用新的策略表,直到重新引导系统。

第 9 章 对网络问题进行疑难解答(任务)

本章包含网络上可能出现的常见问题的解决方案。本章包含以下主题:

对网络问题进行疑难解答方面的新增功能

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

一般性网络问题解决技巧

网络出现问题的首要症状之一就是一个或多个主机失去通信。如果在首次将某个主机添加到网络中时,该主机根本就未出现,则问题可能出在某个配置文件上,或者网络接口卡出现故障。如果单个主机突然遇到问题,则问题可能出在网络接口上。如果网络上的主机能够互相通信,但是不能与其他网络通信,则问题可能出在路由器上,也可能是另一个网络出现问题。

可以使用 ifconfig 命令获取有关网络接口的信息。可以使用 netstat 命令显示路由表和协议统计信息。第三方网络诊断程序提供了许多疑难解答工具。有关信息,请参阅第三方文档。

导致网络性能下降的原因可能不是很显而易见。例如,可以使用诸如 ping 之类的工具来量化主机上包丢失等问题。

运行基本的诊断检查

如果网络存在问题,可以运行一系列软件检查来诊断和修复与软件相关的基本问题。

Procedure如何执行基本的网络软件检查

  1. 在本地系统上,承担网络管理角色或成为超级用户。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 使用 netstat 命令显示网络信息。

    有关 netstat 命令的语法和信息,请参阅使用 netstat 命令监视网络状态netstat(1M) 手册页。

  3. 检查 hosts 数据库(在 Solaris 10 11/06 及早期发行版中,如果您使用的是 IPv6,则需要检查 ipnodes 数据库)确保各项正确且为最新。

    有关 /etc/inet/hosts 数据库的信息,请参阅hosts 数据库hosts(4) 手册页。有关 /etc/inet/ipnodes 数据库的信息,请参阅ipnodes 数据库ipnodes(4) 手册页。

  4. 如果正在运行反向地址解析协议 (Reverse Address Resolution Protocol, RARP),请检查 ethers 数据库中的以太网地址,确保各项正确且为最新。

  5. 尝试使用 telnet 命令连接到本地主机。

    有关 telnet 的语法和信息,请参阅 telnet(1) 手册页。

  6. 确保网络守护进程 inetd 正在运行。

    # ps -ef | grep inetd

    下面的输出可证实 inetd 守护进程正在运行:


    root 57 1 0 Apr 04 ? 3:19 /usr/sbin/inetd -s
  7. 如果在网络上启用了 IPv6,请验证 IPv6 守护进程 in.ndpd 是否正在运行:


    # ps -ef | grep in.ndpd
    

    下面的输出可证实 in.ndpd 守护进程正在运行:


    root 123  1 0  Oct 27 ?  0:03 /usr/lib/inet/in.ndpd

部署 IPv6 时的常见问题

本节介绍在站点上规划和部署 IPv6 时可能遇到的疑问和问题。有关实际的规划任务,请参阅第 4 章

IPv4 路由器无法升级到 IPv6

如果现有设备无法升级,则可能必须购买支持 IPv6 的设备。有关为支持 IPv6 而必须执行的特定于设备的任何过程,请查阅制造商的文档。

某些 IPv4 路由器无法进行升级以支持 IPv6。如果您的拓扑属于这种情况,请紧邻该 IPv4 路由器物理连接一个 IPv6 路由器。然后,可以从 IPv6 路由器建立经由 IPv4 路由器的隧道。有关配置隧道的任务,请参阅针对 IPv6 支持配置隧道所需的任务(任务列表)

将服务升级到 IPv6 之后遇到的问题

在准备服务使其支持 IPv6 时,可能会遇到下列情况:

当前的 ISP 不支持 IPv6

如果想要部署 IPv6,但是当前的 ISP 不支持 IPv6 寻址,则可考虑通过以下备选方法改用其他 ISP:

建立通往 6to4 中继路由器的隧道时的安全问题

本质上,6to4 路由器与 6to4 中继路由器之间的隧道是不安全的。此类隧道存在以下固有安全问题:

Internet 草案《Security Considerations for 6to4》中对这些问题和 6to4 中继路由器固有的其他安全问题进行了说明。通常,仅出于以下几种原因才考虑启用 6to4 中继路由器支持:

6to4 路由器的已知问题

以下已知错误会影响 6to4 配置:

在 6to4 站点上实现静态路由(错误号 4709338)

以下问题发生在 6to4 边界路由器内部具有路由器的 6to4 站点上。配置 6to4 伪接口时,静态路由 2002::/16 会自动添加到 6to4 路由器的路由表中。错误 4709338 描述了 Oracle Solaris : RIPng 路由协议的一个限制,该限制禁止将此静态路由通告到 6to4 站点。

对于错误 4709338,可使用下面任一解决方法:

隧道配置了同一个源地址(错误号 4152864)

错误号 4152864 描述了两个隧道配置了同一个隧道源地址时出现的问题,这是 6to4 隧道的一个严重问题。


注意 – 注意 –

请不要为 6to4 隧道和自动隧道 (atun) 配置同一个隧道源地址。有关自动隧道和 atun 命令的信息,请参阅 tun(7M) 手册页。


第 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 是主机号。

第 11 章 IPv6 详解(参考)

本章包含以下有关 Oracle Solaris 10 IPv6 实现的参考信息。

有关 IPv6 的概述,请参阅第 3 章。有关配置启用 IPv6 的网络的任务,请参阅第 7 章

IPv6 中的新增功能详解

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

IPv6 寻址格式进阶

第 3 章介绍了最常见的 IPv6 寻址格式:单点传送站点地址和链路本地地址。本节深入说明了第 3 章中未详细介绍的寻址格式:

6to4 派生地址

如果计划从路由器或主机端点配置 6to4 隧道,则必须在端点系统上的 /etc/inet/ndpd.conf 文件中通告 6to4 站点前缀。有关配置 6to4 隧道的介绍和任务,请参阅如何配置 6to4 隧道

下图显示了 6to4 站点前缀的各个部分。

图 11–1 6to4 站点前缀的各个部分

该图显示了 6to4 站点前缀的格式及其示例。该图中的信息在所列举的表中进行了说明。

下图显示了 6to4 站点的子网前缀(如 ndpd.conf 文件中包含的子网前缀)的各个部分。

图 11–2 6to4 子网前缀的各个部分

该图显示了 6to4 前缀的格式及其示例。下面的内容介绍了该图中的信息。

本表解释了 6to4 子网前缀的各个部分、这些部分各自的长度及其定义。

部分 

长度 

定义 

前缀 

16 位 

6to4 前缀标签 2002 (0x2002)。 

IPv4 地址 

32 位 

已在 6to4 接口上配置的唯一的 IPv4 地址。对于通告,需要指定用十六进制形式表示的 IPv4 地址,而不要指定点分十进制形式的 IPv4 地址。 

子网 ID 

16 位 

子网 ID,对于 6to4 站点上的链路必须唯一。 

主机上的 6to4 派生地址

当 IPv6 主机以路由器通告的形式收到 6to4 派生前缀时,它会自动在接口上重新配置 6to4 派生地址。6to4 派生地址具有以下格式:


prefix:IPv4-address:subnet-ID:interface-ID/64

在具有 6to4 接口的主机上执行 ifconfig -a 命令所产生的输出类似于以下内容:


qfe1:3: flags=2180841<UP,RUNNING,MULTICAST,ADDRCONF,ROUTER,IPv6>
 mtu 1500 index 7
        inet6 2002:8192:56bb:9258:a00:20ff:fea9:4521/64 

在该输出中,inet6 后面是 6to4 派生地址。

本表解释了 6to4 派生地址的各个部分、这些部分的长度以及它们提供的信息。

地址中的各个部分 

长度 

定义 

prefix

16 位 

2002,6to4 前缀

IPv4-address

32 位 

8192:56bb,在 6to4 路由器上配置的 6to4 伪接口的 IPv4 地址(用十六进制形式表示)

subnet-ID

16 位 

9258,此主机所属的子网的地址

interface-ID

64 位 

a00:20ff:fea9:4521,为 6to4 配置的主机接口的接口 ID

IPv6 多点传送地址详解

IPv6 多点传送地址提供了一种将相同的信息或服务分发到一组已定义接口(称为多点传送组)的方法。通常,多点传送组的接口位于不同的节点上。一个接口可以属于任意数量的多点传送组。发送到多点传送地址的包将到达多点传送组的所有成员。例如,使用多点传送地址的一种情况就是广播信息,这与 IPv4 广播地址的功能相似。

下表显示了多点传送地址的格式。

表 11–1 IPv6 多点传送地址的格式

8 位 

4 位 

4 位 

8 位 

8 位 

64 位 

32 位 

11111111

FLGS

SCOP

Reserved

Plen

Network prefix

Group ID

下面是每个字段的内容摘要。

有关多点传送格式的完整详细信息,请参阅RFC 3306, "Unicast-Prefix-based IPv6 Multicast Addresses

某些 IPv6 多点传送地址是由 Internet 编号分配机构 (Internet Assigned Numbers Authority, IANA) 永久指定的。所有 IPv6 主机和 IPv6 路由器必需的“所有节点多点传送地址”和“所有路由器多点传送地址”就是这样的地址。IPv6 多点传送地址也可以由系统动态分配。有关正确使用多点传送地址和组的更多信息,请参见 RFC 3307, "Allocation Guidelines for IPv6 Multicast Addresses"

IPv6 数据包头的格式

IPv6 协议定义一组数据包头,包括基本 IPv6 数据包头和 IPv6 扩展头。下图显示了 IPv6 数据包头中的字段以及这些字段的顺序。

图 11–3 IPv6 基本数据包头的格式

该图显示 128 位 IPv6 数据包头由八个字段(包括源地址和目标地址)组成。

以下列表介绍了每个头字段的功能。

IPv6 扩展头

IPv6 选项位于包中的 IPv6 数据包头和传输层头之间的单独扩展头中。在包到达其最终目标之前,包传送路径中的任何路由器都不会检查或处理大多数 IPv6 扩展头。此功能显著改进了路由器对于包含选项的包的路由性能。在 IPv4 中,只要存在任何选项,就会要求路由器检查所有的选项。

与 IPv4 选项不同,IPv6 扩展头可以为任意长度。此外,一个包可承载的选项数量也不限于 40 字节。除了 IPv6 选项的处理方式,此功能还允许将 IPv6 选项用于那些在 IPv4 中不可行的功能。

为了在处理后续选项头以及随后的传输协议时提高性能,IPv6 选项始终设置为 8 个八位字节长度的整数倍。8 个八位字节长度的整数倍可以使后续的头保持对齐。

下面是目前已定义的 IPv6 扩展头:

双栈协议

双栈通常是指协议栈中的所有级别(从应用层到网络层)都是重复的。同时运行 OSI 协议和 TCP/IP 协议的系统就是完全重复的示例。

Oracle Solaris : 是双栈协议,即 Oracle Solaris : 同时实现了 IPv4 和 IPv6 协议。安装操作系统时,可以选择在 IP 层启用 IPv6 协议,或者只使用缺省的 IPv4 协议。TCP/IP 栈的其余部分是相同的。因此,相同的 TCP、UDP 和 SCTP 传输协议可同时在 IPv4 和 IPv6 上运行。此外,相同的应用程序也可同时在 IPv4 和 IPv6 上运行。图 11–4 显示了 IPv4 和 IPv6 协议如何作为双栈协议在 Internet 协议套件的各个层中工作。

图 11–4 双栈协议体系结构

说明 IPv4 和 IPv6 协议如何作为双栈协议在各个 OSI 层中工作。

在双栈方案中,除支持 IPv4 之外,部分主机和路由器还应升级为支持 IPv6。双栈方案可以确保已升级的节点始终能够使用 IPv4 与仅支持 IPv4 的节点进行交互。

Oracle Solaris 10 IPv6 实现

本节介绍在 Oracle Solaris : 中启用 IPv6 的文件、命令和守护进程。

IPv6 配置文件

本节介绍属于 IPv6 实现的配置文件:

ndpd.conf 配置文件

/etc/inet/ndpd.conf 文件用于配置由 in.ndpd 相邻节点搜索守护进程使用的选项。对于路由器,主要使用 ndpd.conf 来配置要通告到链路上的站点前缀。对于主机,可使用 ndpd.conf 禁用地址自动配置功能或配置临时地址。

下表显示了 ndpd.conf 文件中使用的关键字。

表 11–2 /etc/inet/ndpd.conf 关键字

变量 

说明 

ifdefault

指定所有接口的路由器行为。使用以下语法设置路由器参数和相应的值: 

ifdefault [variable-value]

prefixdefault

指定前缀通告的缺省行为。使用以下语法设置路由器参数和相应的值: 

prefixdefault [variable-value]

if

设置每个接口的参数。使用以下语法: 

if interface [variable-value ]

prefix

通告每个接口的前缀信息。使用以下语法: 

prefix prefix/length interface [variable-value]

ndpd.conf 文件中,可以将该表中的关键字与一组路由器配置变量结合使用。这些变量在 RFC 2461, Neighbor Discovery for IP Version 6 (IPv6) 中进行了详细定义。

下表显示了配置接口的变量及其简短定义。

表 11–3 /etc/inet/ndpd.conf 接口配置变量

变量 

缺省值 

定义 

AdvRetransTimer

指定路由器所发送的通告消息中“重新传输计时器”字段的值。 

AdvCurHopLimit

Internet 的当前直径 

指定路由器所发送的通告消息中当前跃点限制的值。 

AdvDefaultLifetime

3 + MaxRtrAdvInterval

指定路由器通告的缺省生命周期。 

AdvLinkMTU

指定路由器所发送的最大传输单元 (maximum transmission unit, MTU) 值。零表示没有为路由器指定 MTU 选项。 

AdvManaged Flag

False 

指示路由器通告中“管理地址配置”标志的值。 

AdvOtherConfigFlag

False 

指示路由器通告中“其他有状态配置”标志的值。 

AdvReachableTime

指定路由器所发送的通告消息中“可访问时间”字段的值。 

AdvSendAdvertisements

False 

指示节点是否应当发出通告并响应路由器请求。需要在 ndpd.conf 文件中将该变量明确设置为 "TRUE" 以启用路由器通告功能。有关更多信息,请参阅如何配置启用了 IPv6 的路由器

DupAddrDetect

Transmits

定义在对本地节点地址进行重复地址检测期间,相邻节点搜索协议应当发送的连续相邻节点请求消息的数量。 

MaxRtrAdvInterval

600 秒 

指定在两次发送未经请求的多点传送通告之间等待的最长时间。 

MinRtrAdvInterval

200 秒 

指定在两次发送未经请求的多点传送通告之间等待的最短时间。 

StatelessAddrConf

True 

控制节点是否通过无状态地址自动配置功能来配置节点的 IPv6 地址。如果在 ndpd.conf 中声明为 False,则必须手动配置地址。有关更多信息,请参阅如何配置用户指定的 IPv6 标记

TmpAddrsEnabled

False 

指示是否为一个节点的所有接口或某个特定接口创建临时地址。有关更多信息,请参阅如何配置临时地址

TmpMaxDesyncFactor

600 秒 

指定一个随机值,启动 in.ndpd 命令时会从首选的生命周期变量 TmpPreferredLifetime 中减去该值。TmpMaxDesyncFactor 变量旨在防止网络上的所有系统同时重新生成它们的临时地址。TmpMaxDesyncFactor 允许您更改这个随机值的上限。

TmpPreferredLifetime

False 

设置临时地址的首选生命周期。有关更多信息,请参阅如何配置临时地址

TmpRegenAdvance

False 

为临时地址指定地址过时之前的前导时间。有关更多信息,请参阅如何配置临时地址

TmpValidLifetime

False 

设置临时地址的有效生命周期。有关更多信息,请参阅如何配置临时地址

下表显示了用于配置 IPv6 前缀的变量。

表 11–4 /etc/inet/ndpd.conf 前缀配置变量

变量 

缺省值 

定义 

AdvAutonomousFlag

True 

指定“前缀信息”选项中“自治标志”字段的值。  

AdvOnLinkFlag

True 

 

指定“前缀信息”选项中“在链路 (on-link)”标记(“L 位”)的值。 

AdvPreferredExpiration

未设置 

指定首选的前缀失效日期。 

AdvPreferredLifetime

604800 秒 

指定“前缀信息”选项中首选生命周期的值。  

AdvValidExpiration

未设置 

指定有效的前缀失效日期。 

AdvValidLifetime

2592000 秒 

指定所配置的前缀的有效生命周期。 


示例 11–1 /etc/inet/ndpd.conf 文件

以下示例显示了如何在 ndpd.conf 文件中使用关键字和配置变量。删除注释符号 (#) 可激活相应的变量。


# ifdefault      [variable-value ]*
# prefixdefault [variable-value ]*
# if ifname   [variable-value ]*
# prefix prefix/length ifname
#
#  Per interface configuration variables
#
#DupAddrDetectTransmits
#AdvSendAdvertisements
#MaxRtrAdvInterval
#MinRtrAdvInterval
#AdvManagedFlag
#AdvOtherConfigFlag
#AdvLinkMTU
#AdvReachableTime
#AdvRetransTimer
#AdvCurHopLimit
#AdvDefaultLifetime
#
# Per Prefix:  AdvPrefixList configuration variables
#
#
#AdvValidLifetime
#AdvOnLinkFlag
#AdvPreferredLifetime
#AdvAutonomousFlag
#AdvValidExpiration
#AdvPreferredExpiration

ifdefault AdvReachableTime 30000 AdvRetransTimer 2000
prefixdefault AdvValidLifetime 240m AdvPreferredLifetime 120m

if qe0 AdvSendAdvertisements 1
prefix 2:0:0:56::/64 qe0
prefix fec0:0:0:56::/64 qe0

if qe1 AdvSendAdvertisements 1
prefix 2:0:0:55::/64 qe1
prefix fec0:0:0:56::/64 qe1

if hme1 AdvSendAdvertisements 1
prefix  2002:8192:56bb:1::/64 qfe0 

if hme1 AdvSendAdvertisements 1
prefix  2002:8192:56bb:2::/64 hme1

IPv6 接口配置文件

IPv6 在启动时使用 /etc/hostname6.interface 文件自动定义 IPv6 逻辑接口。如果在安装 Oracle Solaris : 的过程中选择“启用 IPv6”选项,除了 /etc/hostname.interface 文件之外,安装程序还会为主网络接口创建一个 /etc/hostname6.interface 文件。

如果在安装过程中检测到多个物理接口,系统将提示您是否要配置这些接口。安装程序会为指定的其他各个接口创建 IPv4 物理接口配置文件和 IPv6 逻辑接口配置文件。

与 IPv4 接口一样,您也可以在安装 Oracle Solaris : 之后手动配置 IPv6 接口。请为新接口创建 /etc/hostname6.interface 文件。有关手动配置接口的说明,请参阅在 Solaris 10 3/05 中管理接口第 6 章

网络接口配置文件名称的语法如下所示:


hostname.interface
hostname6.interface

interface 变量的语法如下所示:


dev[.module[.module ...]]PPA
dev

指示网络接口设备。可以是物理网络接口(如 eriqfe),也可以是逻辑接口(如隧道)。有关更多详细信息,请参见IPv6 接口配置文件

Module

列出一个或多个在检测设备时要推入设备的 STREAMS 模块。

PPA

指示物理连接点。

也可以使用语法 [.[.]]。


示例 11–2 IPv6 接口配置文件

以下是 IPv6 配置文件有效名称的示例:


hostname6.qfe0
hostname.ip.tun0
hostname.ip6.tun0
hostname6.ip6to4tun0
hostname6.ip.tun0
hostname6.ip6.tun0

/etc/inet/ipaddrsel.conf 配置文件

/etc/inet/ipaddrsel.conf 文件包含 IPv6 缺省地址选择策略表。如果在安装 Oracle Solaris : 时启用了 IPv6,则该文件包含表 11–5 中所示的内容。

可以编辑 /etc/inet/ipaddrsel.conf 的内容。但是,在大多数情况下,应当避免修改此文件。如果一定要进行修改,请参阅如何管理 IPv6 地址选择策略表过程。有关 ippaddrsel.conf 的更多信息,请参阅修改 IPv6 地址选择策略表的原因ipaddrsel.conf(4) 手册页。

与 IPv6 相关的命令

本节介绍实现 Oracle Solaris : IPv6 时添加的命令,还会介绍为支持 IPv6 而对现有命令进行的修改。

ipaddrsel 命令

使用 ipaddrsel 命令,可以修改 IPv6 缺省地址选择策略表。

Oracle Solaris : 内核使用 IPv6 缺省地址选择策略表为 IPv6 数据包头执行目标地址排序和源地址选择。/etc/inet/ipaddrsel.conf 文件包含该策略表。

下表列出了缺省地址的格式以及它们的策略表优先级。有关 IPv6 地址选择的技术详细信息,请参见 inet6(7P) 手册页。

表 11–5 IPv6 地址选择策略表

前缀 

优先级 

定义 

::1/128

50 

回送 

::/0

40 

缺省值 

2002::/16

30 

6to4 

::/96

20 

与 IPv4 兼容 

::ffff:0:0/96

10 

IPv4 

在该表中,IPv6 前缀(::1/128::/0)优先于 6to4 地址 (2002::/16)、IPv4 地址(::/96::ffff:0:0/96)。因此,在缺省情况下,内核将为转至另一个 IPv6 目标的包选择接口的全局 IPv6 地址。接口的 IPv4 地址具有较低的优先级,对于转至 IPv6 目标的包尤其如此。如果给出了选定的 IPv6 源地址,内核针对目标地址也使用 IPv6 格式。

修改 IPv6 地址选择策略表的原因

在许多情况下,您不必更改 IPv6 缺省地址选择策略表。如果确实需要管理策略表,请使用 ipaddrsel 命令。

在下列情况下,您可能希望修改策略表:

有关 ipaddrsel 命令的详细信息,请参阅 ipaddrsel(1M) 手册页。

6to4relay 命令

使用 6to4 隧道连接,可以在相互隔离的 6to4 站点之间进行通信。但是,要使用本地的非 6to4 IPv6 站点传输包,6to4 路由器必须使用 6to4 中继路由器建立一个隧道。然后,6to4 中继路由器将 6to4 包转发到 IPv6 网络,并最终将其传输到本地 IPv6 站点。如果启用了 6to4 的站点必须与本地 IPv6 站点交换数据,请使用 6to4relay 命令启用相应的隧道。

由于使用中继路由器不太安全,因此 Oracle Solaris : 在缺省情况下会禁用与中继路由器的隧道连接。在部署该方案之前,请认真考虑在建立通往 6to4 中继路由器的隧道时所涉及的问题。有关 6to4 中继路由器的详细信息,请参阅6to4 中继路由器隧道的注意事项。如果决定启用 6to4 中继路由器支持,可以参阅如何配置 6to4 隧道中的相关操作步骤。

6to4relay 的语法

6to4relay 命令的语法如下:


6to4relay -e [-a IPv4-address] -d -h
-e

在 6to4 路由器和某个任意点传送 6to4 中继路由器之间启用隧道支持。隧道端点地址随后将设置为 192.88.99.1(6to4 中继路由器任意点传送组的缺省地址)。

-a IPv4-address

在 6to4 路由器和具有指定 IPv4-address 的 6to4 中继路由器之间启用隧道支持。

-d

禁用对通往 6to4 中继路由器的隧道的支持,这是 Oracle Solaris : 的缺省设置。

-h

显示 6to4relay 的帮助。

有关更多信息,请参阅 6to4relay(1M) 手册页。


示例 11–3 6to4 中继路由器支持的缺省状态

不带参数的 6to4relay 命令显示 6to4 中继路由器支持的当前状态。以下示例显示了在 Oracle Solaris : 中实现的 IPv6 的缺省状态。


# /usr/sbin/6to4relay
6to4relay:6to4 Relay Router communication support is disabled


示例 11–4 在启用了 6to4 中继路由器支持的情况下所显示的状态

如果启用了中继路由器支持,6to4relay 将显示以下输出:


# /usr/sbin/6to4relay
6to4relay:6to4 Relay Router communication support is enabled
IPv4 destination address of Relay Router=192.88.99.1


示例 11–5 指定了 6to4 中继路由器时显示的状态

如果为 -6to4relay 命令指定了 a 选项和 IPv4 地址,将显示用 -a 提供的 IPv4 地址,而不显示 192.88.99.1

6to4relay 不报告 -d-e-a IPv4 address 选项是否成功执行。但是,6to4relay 会显示在运行这些选项时可能生成的任何错误消息。


为支持 IPv6 而对 ifconfig 命令进行的扩展

可以使用 ifconfig 命令对IPv6 接口和隧道连接模块进行检测。ifconfig 使用一组经过扩展的 ioctl 来配置 IPv4 和 IPv6 网络接口。下面描述了可支持 IPv6 操作的 ifconfig 选项。有关涉及 ifconfig 命令的一系列 IPv4 和 IPv6 任务,请参见使用 ifconfig 命令监视接口配置

index

设置接口索引。

tsrc/tdst

设置隧道源或目标。

addif

创建下一个可用的逻辑接口。

removeif

删除具有特定 IP 地址的逻辑接口。

destination

设置接口的点对点目标地址。

set

为接口设置地址和/或网络掩码。

subnet

设置接口的子网地址。

xmit/-xmit

启用或禁用在接口上传输包。

第 7 章介绍了 IPv6 配置过程。


示例 11–6 在 ifconfig 命令中使用 -addif 选项添加 IPv6 逻辑接口

以下形式的 ifconfig 命令可创建 hme0:3 逻辑接口:


# ifconfig hme0 inet6 addif up
Created new logical interface hme0:3

以下形式的 ifconfig 可验证是否创建了新接口:


# ifconfig hme0:3 inet6
hme0:3: flags=2000841<UP,RUNNING,MULTICAST,IPv6> mtu 1500 index 2
		inet6  inet6 fe80::203:baff:fe11:b321/10


示例 11–7 在 ifconfig 命令中使用 -removeif 选项删除 IPv6 逻辑接口

以下形式的 ifconfig 命令可删除 hme0:3 逻辑接口:


# ifconfig hme0:3 inet6 down

# ifconfig hme0 inet6 removeif 1234::5678


示例 11–8 使用 ifconfig 配置 IPv6 隧道源


# ifconfig ip.tun0 inet6 plumb index 13

打开要与物理接口名称相关联的隧道。


# ifconfig ip.tun0 inet6
ip.tun0: flags=2200850<POINTOPOINT,RUNNING,MULTICAST,NONUD,
#IPv6> mtu 1480 index 13
		inet tunnel src 0.0.0.0 
		inet6 fe80::/10 --> :: 

配置 TCP/IP 使用隧道设备并报告设备状态所需要的流。


# ifconfig ip.tun0 inet6 tsrc 120.46.86.158 tdst 120.46.86.122

配置隧道的源地址和目标地址。


# ifconfig ip.tun0 inet6
ip.tun0: flags=2200850<POINTOPOINT,RUNNING,MULTICAST,NONUD,
IPv6> mtu 1480 index 13
		inet tunnel src 120.46.86.158  tunnel dst 120.46.86.122
		inet6 fe80::8192:569e/10 --> fe80::8192:567a

在配置之后报告设备的新状态。



示例 11–9 通过 ifconfig 配置 6to4 隧道(长格式)

以下示例显示在 6to4 伪接口配置中子网 ID 为 1,并以十六进制形式指定主机 ID。


# ifconfig ip.6to4tun0 inet6 plumb
# ifconfig ip.6to4tun0 inet tsrc 129.146.86.187 \
2002:8192:56bb:1::8192:56bb/64 up

# ifconfig ip.6to4tun0 inet6
ip.6to4tun0: flags=2200041<UP,RUNNING,NONUD,IPv6>mtu 1480 index 11
        inet tunnel src 129.146.86.187 
        tunnel hop limit 60 
        inet6 2002:8192:56bb:1::8192:56bb/64 


示例 11–10 通过 ifconfig 配置 6to4 隧道(短格式)

以下示例显示了配置 6to4 隧道的短格式:


# ifconfig ip.6to4tun0 inet6 plumb
# ifconfig ip.6to4tun0 inet tsrc 129.146.86.187 up

# ifconfig ip.6to4tun0 inet6
ip.6to4tun0: flags=2200041<UP,RUNNING,NONUD,IPv6>mtu 1480 index 11
        inet tunnel src 129.146.86.187 
        tunnel hop limit 60 
        inet6 2002:8192:56bb::1/64 

为支持 IPv6 而对 netstat 命令进行的修改

netstat 命令显示 IPv4 和 IPv6 网络状态。可通过在 /etc/default/inet_type 文件中设置 DEFAULT_IP 值或者使用 -f 命令行选项来选择要显示的协议信息。如果永久设置 DEFAULT_IP,则可以确保 netstat 仅显示 IPv4 信息。可以使用 -f 选项来覆盖该设置。有关 inet_type 文件的更多信息,请参见 inet_type(4) 手册页。

netstat 命令的 -p 选项显示 net-to-media 表。对于 IPv4,该表是 ARP 表;对于 IPv6,该表是相邻节点高速缓存。有关详细信息,请参见 netstat(1M) 手册页。有关使用此命令的过程的说明,请参见如何显示套接字的状态

为支持 IPv6 而对 snoop 命令进行的修改

snoop 命令可以捕获 IPv4 和 IPv6 包。此命令可以显示 IPv6 数据包头、IPv6 扩展头、ICMPv6 数据包头和相邻节点搜索协议数据。缺省情况下,snoop 命令既可以显示 IPv4 包又可以显示 IPv6 包。如果您指定了 ipip6 协议关键字,snoop 命令将只显示 IPv4 包或 IPv6 包。使用 IPv6 的过滤选项,可以对所有的 IPv4 和 IPv6 包进行过滤,以便仅显示 IPv6 包。有关详细信息,请参见 snoop(1M) 手册页。有关使用 snoop 命令的过程,请参见如何监视 IPv6 网络通信

为支持 IPv6 而对 route 命令进行的修改

route 命令既作用于 IPv4 路由又作用于 IPv6 路由,IPv4 路由是缺省设置。如果在命令行中紧跟 route 命令之后使用 -inet6 选项,系统将针对 IPv6 路由执行操作。有关详细信息,请参见 route(1M) 手册页。

为支持 IPv6 而对 ping 命令进行的修改

ping 命令既可以使用 IPv4 协议又可以使用 IPv6 协议来探测目标主机。具体选择哪个协议取决于由特定目标主机的名称服务器所返回的地址。缺省情况下,如果名称服务器返回目标主机的 IPv6 地址,ping 命令将使用 IPv6 协议。如果名称服务器仅返回 IPv4 地址,ping 命令将使用 IPv4 协议。可以使用 -A 命令行选项指定要使用的协议以覆盖该操作。

有关详细信息,请参见 ping(1M) 手册页。有关使用 ping 的过程,请参阅使用 ping 命令探测远程主机

为支持 IPv6 而对 traceroute 命令进行的修改

可以使用 traceroute 命令跟踪到特定主机的 IPv4 和 IPv6 路由。从协议的角度看,tracerouteping 使用相同的算法。使用 -A 命令行选项可覆盖此选择。使用 -a 命令行选项,可以跟踪到多宿主主机的每个地址的各个单独路由。

有关详细信息,请参见 traceroute(1M) 手册页。有关使用 traceroute 的过程,请参阅使用 traceroute 命令显示路由信息

与 IPv6 相关的守护进程

本节讨论与 IPv6 相关的守护进程。

用于相邻节点搜索功能的 in.ndpd 守护进程

in.ndpd 守护进程可实现 IPv6 相邻节点搜索协议和路由器搜索。该守护进程还可实现 IPv6 的地址自动配置功能。下面显示了 in.ndpd 支持的选项。

-d

启用调试功能。

-D

针对特定事件启用调试功能。

-f

指定要从中读取配置数据的文件,而不是缺省的 /etc/inet/ndpd.conf 文件。

-I

列显与每个接口相关的信息。

-n

不回送路由器通告。

-r

忽略收到的包。

-v

指定详细模式,报告各种类型的诊断消息。

-t

启用包跟踪功能。

in.ndpd 守护进程由在 /etc/inet/ndpd.conf 配置文件中设置的参数以及 /var/inet/ndpd_state.interface 启动文件中适用的参数来控制。

如果 /etc/inet/ndpd.conf 文件存在,系统将解析该文件并使用它将节点配置为路由器。表 11–2 列出了此文件中可能出现的有效关键字。当主机引导之后,路由器可能无法立即使用。由路由器通告的包可能会被丢弃,当然,它们可能将无法送达到主机。

/var/inet/ndpd_state.interface 文件是一个状态文件。由每个节点定期更新。当该节点失败并重新启动之后,该节点可以在没有路由器的情况下配置其接口。此文件包含接口地址、上次更新文件的时间以及文件的有效期。此文件还包含从以前的路由器通告中“获知”的其他参数。


注 –

您不必修改状态文件的内容,in.ndpd 守护进程会自动维护状态文件。


有关配置变量和可允许值的列表,请参见 in.ndpd(1M) 手册页和 ndpd.conf(4) 手册页。

用于 IPv6 路由的 in.ripngd 守护进程

in.ripngd 守护进程可实现用于 IPv6 路由器的下一代路由信息协议 (Routing Information Protocol next-generation, RIPng)。RIPng 定义 IPv6 中与 RIP 等效的协议。在使用 routeadm 命令配置 IPv6 路由器并启用 IPv6 路由时,in.ripngd 守护进程可在路由器上实现 RIPng。

下面显示了 RIPng 支持的选项:

-p n

n 指定用于收发 RIPnG 包的备用端口号。

-q

禁止显示路由信息。

-s

强制显示路由信息,即使该守护进程充当路由器也是如此。

-P

禁止使用毒性逆转 (poison reverse)。

-S

如果 in.ripngd 不充当路由器,该守护进程将只输入每个路由器的缺省路由。

inetd 守护进程和 IPv6 服务

启用了 IPv6 的服务器应用程序可以既处理 IPv4 请求又处理 IPv6 请求,也可以仅处理 IPv6 请求。服务器始终通过 IPv6 套接字处理请求。另外,服务器还与相应的客户机使用相同的协议。要为 IPv6 添加或修改服务,请使用服务管理工具 (Service Management Facility, SMF) 中的命令。

要配置 IPv6 服务,必须确保该服务 inetadm 配置文件中的 proto 字段中列出了相应的值:

如果用其他实现来替代 Oracle Solaris : 命令,则必须验证所实现的服务是否支持 IPv6。如果该服务不支持 IPv6,则必须将 proto 值指定为 tcpudpsctp

下面是针对 echo 服务清单运行 inetadm 时生成的配置文件,该服务清单既支持 IPv4 又支持 IPv6,并且在 SCTP 上运行:


# inetadm -l svc:/network/echo:sctp_stream
	SCOPE    NAME=VALUE	  name="echo"
	         endpoint_type="stream"
	         proto="sctp6"
	         isrpc=FALSE
	         wait=FALSE
	         exec="/usr/lib/inet/in.echod -s"
	         user="root"
	default  bind_addr=""
	default  bind_fail_max=-1
	default  bind_fail_interval=-1
	default  max_con_rate=-1
	default  max_copies=-1
	default  con_rate_offline=-1
	default  failrate_cnt=40
	default  failrate_interval=60
	default  inherit_env=TRUE
	default  tcp_trace=FALSE
	default  tcp_wrappers=FALSE

要更改 proto 字段的值,请使用以下语法:


# inetadm -m FMRI proto="transport-protocols"

随 Oracle Solaris : 软件一起提供的所有服务器都只需要一个用来将 proto 指定为 tcp6udp6sctp6 的配置文件项。但是,远程 shell 服务器 (shell) 和远程执行服务器 (exec) 现在由单个服务实例组成,该服务实例要求 proto 值中同时包含 tcptcp6only 值。例如,要为 shell 设置 proto 值,可发出以下命令:


# inetadm -m network/shell:default proto="tcp,tcp6only"

有关写入使用套接字且启用了 IPv6 的服务器的更多详细信息,请参见《编程接口指南》中的“IPv6 extensions to the Socket API”。

在为 IPv6 配置服务时的注意事项

在为 IPv6 添加或修改服务时,请记住以下几点:

IPv6 相邻节点搜索协议

IPv6 引入了相邻节点搜索协议,如 RFC 2461, Neighbor Discovery for IP Version 6 (IPv6) 中所述。有关相邻节点搜索的主要功能的概述,请参阅IPv6 相邻节点搜索协议概述

本节讨论相邻节点搜索协议的以下功能:

相邻节点搜索功能中的 ICMP 消息

相邻节点搜索功能定义了五种新的 Internet 控制消息协议 (Internet Control Message Protocol, ICMP) 消息。这些消息具有以下用途:

自动配置过程

本节概述在自动配置过程中由接口执行的典型步骤。自动配置仅在能够进行多点传送的链路上执行。

  1. 启用能够进行多点传送的接口,例如,在启动某个节点上的系统时启用该接口。

  2. 节点在执行自动配置过程时首先为接口生成链路本地地址。

    链路本地地址是根据接口的介质访问控制 (Media Access Control, MAC) 地址构造的。

  3. 节点发送相邻节点请求消息,其中包含暂定为目标的链路本地地址。

    发送此消息的目的在于验证要使用的地址未由链路上的其他节点占用。在验证之后,可以将链路本地地址指定给接口。

    1. 如果建议的地址已被另一个节点使用,则该节点将返回一条相邻节点通告,声明该地址正在使用中。

    2. 如果另一个节点也正在尝试使用同一地址,则该节点也会针对该目标发送一条相邻节点请求。

      相邻节点请求传输或重新传输的数量以及连续请求之间的延迟与链路有关。如有必要,可以设置这些参数。

  4. 如果某个节点发现它要使用的链路本地地址不唯一,则自动配置过程会停止。此时,您必须手动配置该接口的链路本地地址。

    要简化恢复操作,可以提供一个备用接口 ID 来覆盖缺省标识符。这样,自动配置机制就可以使用这个可能唯一的新接口 ID 继续工作。

  5. 如果某个节点发现它要使用的链路本地地址唯一,该节点会将此地址指定给这个接口。

    此时,该节点与相邻节点具有 IP 级别的连通性。其余的自动配置步骤只能由主机执行。

获取路由器通告

自动配置的下一个阶段涉及到获取路由器通告或者确定是否没有路由器存在。如果存在路由器,路由器会发送路由器通告,以指定主机应当执行哪种类型的自动配置。

路由器定期发送路由器通告。但是,相邻通告之间的延迟通常比执行自动配置的主机可以等待的时间要长。为了快速获取通告,主机可以向所有路由器多点传送组发送一个或多个路由器请求。

前缀配置变量

路由器通告还包含前缀变量,其中包含无状态地址自动配置用于生成前缀的信息。路由器通告中“无状态地址自动配置”字段是单独处理的。“地址自动配置”标志是一个包含前缀信息的选项字段,它指示该选项是否可以应用于无状态自动配置过程。如果该选项字段确实适用,则其他选项字段中包含具有生命周期值的子网前缀。这些值指示根据前缀创建的地址保持优先和有效的时间长度。

因为路由器会定期生成路由器通告,所以主机会不断收到新通告。启用了 IPv6 的主机可处理包含在每个通告中的信息。主机会添加到这些信息中,还会刷新在以前的通告中收到的信息。

地址的唯一性

出于安全方面的考虑,在将每个地址指定给接口之前,必须测试它们是否唯一。对于通过无状态自动配置过程创建的地址,情况会有所不同。地址是否唯一主要由地址中基于接口 ID 创建的那一部分来确定。因此,如果经过验证,节点的链路本地地址唯一,则无需再逐一测试其他地址。这些地址必须是根据同一个接口 ID 创建的。与之相反,对于手动获取的所有地址,必须逐一测试它们是否唯一。某些站点的系统管理员认为执行重复地址检测得不偿失。对于这些站点,可通过设置每接口配置标志来禁用重复地址检测功能。

为了加速自动配置过程,主机可以生成其链路本地地址,并在等待路由器通告的同时验证该地址是否唯一。路由器可能会延迟几秒来响应路由器请求。因此,如果连续执行两个步骤,则完成自动配置所必需的总时间可能会非常长。

相邻节点请求和不可访问性

相邻节点搜索功能使用相邻节点请求消息来确定是否可以向同一个单点传送地址指定多个节点。相邻节点不可访问性检测功能检测相邻节点或到相邻节点的转发路径中是否有故障。该检测功能要求确认发送到某个相邻节点的包能够实际到达该相邻节点,还确定节点的 IP 层是否能够正确处理这些包。

相邻节点不可访问性检测功能使用来自以下两个来源的确认: 上层协议和相邻节点请求消息。如有可能,上层协议会确认某个连接正在执行转发。例如,当收到新的 TCP 确认时,上层协议会确认以前发送的数据已正确传送。

如果某个节点没有收到来自上层协议的肯定确认,该节点将发送单点传送相邻节点请求消息。这些消息会请求相邻节点通告,并根据此通告确认下一个跃点的可访问性。为了减少不必要的网络通信流量,探测消息只会发送到该节点将包实际发送到的相邻节点。

重复地址检测算法

为了确保所有已配置的地址在特定链路上的唯一性,节点需要针对这些地址运行重复地址检测算法。在将这些地址指定给接口之前,必须先针对节点运行该算法。重复地址检测算法是针对所有地址执行的。

本节中描述的自动配置过程仅适用于主机,而不适用于路由器。因为主机自动配置过程使用由路由器通告的信息,所以路由器需要通过其他方法进行配置。但是,路由器可使用本章中描述的机制来生成链路本地地址。另外,在将地址指定给接口之前,路由器应当能够通过针对所有地址的重复地址检测算法。

代理通告

代表目标地址接受包的路由器可以发出不可覆盖的相邻节点通告。路由器可以接受无法响应相邻节点请求的目标地址的包。目前未指定对于代理的使用。但是,代理通告有可能会用来处理诸如已移出链路的移动节点之类的情况。请注意,在处理未实现此协议的节点时,不应将使用代理作为一般机制。

传入负载平衡

具有复制接口的节点可能需要在同一个链路上的多个网络接口之间,对所收到的传入包进行负载平衡。这样的节点会将多个链路本地地址指定给同一个接口。例如,单个网络驱动程序可以将多个网络接口卡表示为具有多个链路本地地址的单个逻辑接口。

负载平衡的处理方式如下:允许路由器忽略来自路由器通告包的源链路本地地址。因此,相邻节点必须使用相邻节点请求消息来获知路由器的链路本地地址。于是,所返回的相邻节点通告消息可能包含链路本地地址,这些地址会因请求发出者而异。

链路本地地址更改

已知其链路本地地址发生更改的节点可以发出未经请求的多点传送相邻节点通告包。该节点可以向所有的节点发送多点传送包,从而更新所缓存的已无效的链路本地地址。发送未经请求的通告仅是为了提高性能。相邻节点不可访问性检测算法可确保所有的节点都能够可靠地搜索新地址,尽管延迟时间可能会稍长些。

相邻节点搜索协议与 ARP 和相关 IPv4 协议的比较

IPv6 相邻节点搜索协议的功能与下列 IPv4 协议的组合相对应: 地址解析协议 (Address Resolution Protocol, ARP)、Internet 控制消息协议 (Internet Control Message Protocol, ICMP)、路由器搜索和 ICMP 重定向。IPv4 对于相邻节点不可访问性检测没有公认的协议或机制。但是,主机要求确实为停用网关检测指定了一些可能的算法。停用网关检测所解决的问题是相邻节点不可访问性检测所能解决的问题的一部分。

以下是对相邻节点搜索协议和一组相关 IPv4 协议进行的比较。

IPv6 路由

在无类域间路由 (Classless Inter-Domain Routing, CIDR) 情况下,IPv6 中的路由与 IPv4 路由几乎完全相同。唯一的区别在于地址是 128 位 IPv6 地址,而非 32 位 IPv4 地址。通过非常简单的扩展,所有的 IPv4 路由算法,如 OSPF(开放式最短路径优先)、RIP(路由信息协议)、IDRP(域间路由协议)和 IS-IS(中间系统对中间系统),都可以用来路由 IPv6。

IPv6 还包括可支持功能强大的新路由功能的简单路由扩展。以下是对新路由功能的描述:

通过创建可使用 IPv6 路由选项的 IPv6 地址序列,可以获取新路由功能。IPv6 源使用路由选项列出在通往包目标的途中访问的中间节点(一个或多个)或拓扑组。此功能与 IPv4 的稀疏源路由选项和记录路由选项非常相似。

在大多数情况下,为了使地址序列成为一般功能,必须使用 IPv6 主机将主机所接收包中的路由反向。包必须使用 IPv6 验证头成功地进行验证。包中必须包含地址序列才能将包返回到其始发者。此方法会强制所实现的 IPv6 主机支持对源路由进行处理和反向。对源路由进行处理和反向非常重要,因为它使提供者能够使用实现了新 IPv6 功能(如提供器选择和扩展地址)的主机。

路由器通告

在能够进行多点传送的链路和点对点链路上,每个路由器都定期向多点传送组发送一个路由器通告包来公布其可用性。主机将从所有的路由器接收路由器通告,并创建缺省路由器的列表。路由器会频繁生成路由器通告,以便主机可以在几分钟内获知路由器是否存在。但是,路由器进行通告的频率不太高,因此不能依赖通告是否存在来检测路由器故障。可以通过用来确定相邻节点不可访问性的单独的检测算法来检测路由器故障。

路由器通告前缀

路由器通告中包含一系列子网前缀,这些前缀用来确定主机是否与路由器处在同一个链路上(在链路 (on-link)),还可用来配置自治地址。与前缀相关联的标志用来指定特定前缀的预定用法。主机使用通告的“在链路 (on-link)”前缀来创建和维护一个列表,该列表用于确定包的目标是在链路上还是在路由器外部。即使目标没有包含在所通告的任何“在链路 (on-link)”前缀中,目标也可以位于链路上。在这种情况下,路由器可以发送重定向消息。重定向功能通告发送者目标是相邻节点。

路由器通告和每前缀标志使路由器能够通告主机如何执行无状态地址自动配置。

路由器通告消息

路由器通告消息中还包含主机应当在外发包中使用的 Internet 参数(如跃点限制)。路由器通告消息中还可以包含链路参数,如链路 MTU。此功能允许对临界参数进行集中管理。这些参数可以针对路由器设置,它们可自动传播到所连接的全部主机。

节点可通过向多点传送组发送相邻节点请求以要求目标节点返回其链路层地址来完成地址解析。多点传送相邻节点请求消息会发送到目标地址中请求节点的多点传送地址。目标会在单点传送相邻节点通告消息中返回其链路层地址。对于启动器和目标来说,一个包请求/响应对就足以解析对方的链路层地址。启动器的相邻节点请求中包括其链路层地址。

IPv6 隧道

为了在双栈 IPv4/IPv6 站点中尽可能减少相关性,两个 IPv6 节点之间路径中的路由器不必都支持 IPv6。可支持类似网络配置的机制称作隧道。本质上,IPv6 包放在 IPv4 包中,IPv4 包随后通过 IPv4 路由器进行路由,下图说明通过 IPv4 路由器(在该图中用 "R" 指示)的隧道连接机制。

图 11–5 IPv6 隧道连接机制

说明如何将那些放在 IPv4 包中的 IPv6 包通过使用 IPv4 的路由器建立隧道连接。

Oracle Solaris : IPv6 实现中包括两种类型的隧道连接机制:

出于其他方面的考虑,目前在 Internet 上,例如,在 IPv4 MBONE(多点传送主干)上,使用已配置的隧道。从操作的角度看,隧道由两个路由器组成,这两个路由器配置为可通过 IPv4 网络建立虚拟的点对点链路。在可以预见的将来,这种隧道很有可能要用在 Internet 的某些部分上。

自动隧道要求使用与 IPv4 兼容的地址。当 IPv6 路由器不可用时,自动隧道可用来连接多个 IPv6 节点。这些隧道可以通过配置自动隧道连接网络接口来从双栈主机或双栈路由器发起。这些隧道总是在双栈主机终止。它们的工作方式如下:通过从与 IPv4 兼容的目标地址中提取目标 IPv4 地址(隧道的端点)来动态确定目标地址。

已配置的隧道

隧道连接接口具有以下格式:


ip.tun ppa

ppa 是物理连接点。

在系统启动时,隧道连接模块 (tun) 会由 ifconfig 命令推入 IP 的顶层,从而创建一个虚拟接口。推送操作可通过创建相应的 hostname6.* 文件来实现。

例如,要创建通过 IPv4 网络封装 IPv6 包的隧道(即 IPv6 over IPv4 隧道),可以创建以下文件名:


/etc/hostname6.ip.tun0

在对接口进行检测之后,此文件的内容将传递到 ifconfig。此文件内容将变成配置点对点隧道所必需的参数。


示例 11–11 IPv6 Over IPv4 隧道的 hostname6.ip.tun0 文件

下面举例说明 hostname6.ip.tun0 文件中的各项:


tsrc 10.10.10.23 tdst 172.16.7.19 up
addif 2001:db8:3b4c:1:5678:5678::2 up

在此示例中,源和目标 IPv4 地址用作自动配置 IPv6 链路本地地址的标记。这些地址分别是 ip.tun0 接口的源和目标。配置了两个接口。配置了 ip.tun0 接口。还配置了一个逻辑接口 ip.tun0:1。该逻辑接口的源和目标 IPv6 地址由 addif 命令指定。

当系统在多用户模式下启动后,这些配置文件的内容将会原封不动地传递到 ifconfig示例 11–11 中的项与以下各项等效:


# ifconfig ip.tun0 inet6 plumb
# ifconfig ip.tun0 inet6 tsrc 10.0.0.23 tdst 172.16.7.19 up
# ifconfig ip.tun0 inet6 addif 2001:db8:3b4c:1:5678:5678::2 up

下面显示了此隧道的 ifconfig -a 输出:


ip.tun0: flags=2200850<UP,POINTOPOINT,RUNNING,MULTICAST,
  NONUD,IPv6> mtu 1480 index 6
        inet tunnel src 10.0.0.23  tunnel dst 172.16.7.19
        inet6 fe80::c0a8:6417/10 --> fe80::c0a8:713
ip.tun0:1: flags=2200850<UP,POINTOPOINT,RUNNING,MULTICAST,NONUD,IPv6> mtu 1480 
  index 5
        inet6 2001:db8:3b4c:1:5678:5678::2 

可以使用以下语法,通过向配置文件中添加一些行来配置更多的逻辑接口:


addif IPv6-source IPv6-destination up

注 –

当隧道的任意一端是通过隧道通告一个或多个前缀的 IPv6 路由器时,不必在隧道配置文件中使用 addif 命令。可能只有 tsrctdst 才是必需的,因为所有其他地址都是自动配置的。


在某些情况下,需要为特定的隧道手动配置特定的源和目标链路本地地址。可通过更改配置文件的第一行来包括这些链路本地地址。下面是示例行:


tsrc 10.0.0.23 tdst 172.16.7.19 fe80::1/10 fe80::2 up

请注意,源链路本地地址的前缀长度为 10。在此示例中,ip.tun0 接口与以下内容类似:


ip.tun0: flags=2200850<UP,POINTOPOINT,RUNNING,MULTICAST,NONUD,IPv6> mtu 1480 
index 6
        inet tunnel src 10.0.0.23  tunnel dst 172.16.7.19
        inet6 fe80::1/10 --> fe80::2

要建立通过 IPv6 网络封装 IPv6 包的隧道(即 IPv6 over IPv6 隧道),可以创建以下文件名:


/etc/hostname6.ip6.tun0

示例 11–12 IPv6 over IPv6 隧道的 hostname6.ip6.tun0 文件

下面举例说明通过 IPv6 网络进行的 IPv6 封装的 hostname6.ip6.tun0 文件中的各项:


tsrc 2001:db8:3b4c:114:a00:20ff:fe72:668c 
        tdst 2001:db8:15fa:25:a00:20ff:fe9b:a1c3
fe80::4 fe80::61 up

要建立通过 IPv6 网络封装 IPv4 包的隧道(即 IPv4 over IPv6 隧道),可以创建以下文件名:


/etc/hostname.ip6.tun0

示例 11–13 IPv4 Over IPv6 隧道的 hostname.ip6.tun0 文件

下面举例说明通过 IPv6 网络进行的 IPv4 封装的 hostname.ip6.tun0 文件中的各项:


tsrc 2001:db8:3b4c:114:a00:20ff:fe72:668c 
         tdst 2001:db8:15fa:25:a00:20ff:fe9b:a1c3
10.0.0.4 10.0.0.61 up

要建立通过 IPv4 网络封装 IPv4 包的隧道(即 IPv4 over IPv4 隧道),可以创建以下文件名:


/etc/hostname.ip.tun0

示例 11–14 IPv4 Over IPv4 隧道的 hostname.ip.tun0 文件

下面举例说明通过 IPv4 网络进行的 IPv4 封装的 hostname.ip.tun0 文件中的各项:


tsrc 172.16.86.158 tdst 192.168.86.122
10.0.0.4 10.0.0.61 up

有关 tun 的具体信息,请参见 tun(7M) 手册页。有关在转换到 IPv6 的过程中隧道连接概念的一般说明,请参见IPv6 隧道概述。有关隧道配置过程的说明,请参见针对 IPv6 支持配置隧道所需的任务(任务列表)

6to4 自动隧道

Oracle Solaris : 中包括 6to4 隧道,这是用来从 IPv4 寻址过渡到 IPv6 寻址的临时首选方法。6to4 隧道允许 IPv6 隔离站点通过一个经由 IPv4 网络(不支持 IPv6)的自动隧道进行通信。要使用 6to4 隧道,必须将 IPv6 网络上的边界路由器配置为 6to4 自动隧道的一个端点。这样,6to4 路由器便可以参与通往另一个 6to4 站点的隧道,如果需要的话,还可以参与通往本地非 6to4 IPv6 站点的隧道。

本节提供有关下列 6to4 主题的参考资料:

下表介绍用来配置 6to4 隧道的额外任务,以及获得额外有用信息的资源。

任务或详细信息 

参考 

用来配置 6to4 隧道的任务 

如何配置 6to4 隧道

与 6to4 相关的 RFC(互联网信息文档和标准) 

RFC 3056, "Connection of IPv6 Domains via IPv4 Clouds"

有关 6to4relay 命令(该命令启用对通往 6to4 中继服务器的隧道的支持)的详细信息

6to4relay(1M)

6to4 安全问题 

Security Considerations for 6to4

6to4 隧道的拓扑

6to4 隧道提供到任何位置的所有 6to4 站点的 IPv6 连接。 如果 6to4 隧道配置为向中继路由器转发,该隧道也同样提供到所有 IPv6 站点的连接(包括本地 IPv6 Internet)。下图显示了 6to4 隧道如何提供两个 6to4 站点之间的连接。

图 11–6 两个 6to4 站点之间的隧道

下文将对该图中显示的 6to4 隧道进行说明。

此图描述了两个隔离的 6to4 网络:站点 A 和站点 B。每个站点都配置了能够连接到外部 IPv4 网络的路由器。跨 IPv4 网络的 6to4 隧道可以连接两个 6to4 站点。

必须至少配置一个路由器接口来支持 6to4,才能让 IPv6 站点成为 6to4 站点。此接口必须提供与 IPv4 网络的外部连接。在 qfe0 上配置的地址必须全局唯一。在上图中,边界路由器 A 的 qfe0 接口将站点 A 连接到 IPv4 网络。只有在用 IPv4 地址配置 qfe0 接口后,才能将 qfe0 配置为 6to4 伪接口。

在此图中,6to4 站点 A 由两个子网组成,这两个子网连接到路由器 A 上的接口 hme0hme1。站点 A 任一子网上的所有 IPv6 主机,在收到来自路由器 A 的通告时,都会自动使用 6to4 派生地址重新配置。

站点 B 是另一个隔离的 6to4 站点。为了正确地从站点 A 接收通信,必须在站点 B 上配置边界路由器以支持 6to4。否则,路由器从站点 A 接收的包将因无法识别而被丢弃。

通过 6to4 隧道的包流

本节介绍从一个 6to4 站点上的主机到远程 6to4 站点上的主机之间的包流。此方案使用图 11–6 中显示的拓扑。而且,它还假定已经配置了 6to4 路由器和 6to4 主机。

  1. 6to4 站点 A 的子网 1 上的主机发送传输请求,6to4 站点 B 上的主机作为目标。每个数据包头中均有 6to4 派生的源地址和 6to4 派生的目标地址。

  2. 站点 A 的路由器将每个 6to4 包封装到 IPv4 数据包头中。在该过程中,路由器将 IPv4 封装数据包头的目标地址设置为站点 B 的路由器地址。对于每个流经隧道接口的 IPv6 包,其 IPv6 目标地址同时也包含 IPv4 目标地址。因此,路由器将能够确定 IPv4 封装数据包头上设置的 IPv4 目标地址。路由器随后使用标准的 IPv4 路由过程,通过 IPv4 网络转发包。

  3. 包通过的任何 IPv4 路由器都使用包的 IPv4 目标地址进行转发。此地址是路由器 B 上某个接口的全局唯一 IPv4 地址,该接口还充当 6to4 伪接口。

  4. 来自站点 A 的包到达路由器 B,路由器 B 对 IPv4 数据包头中的 IPv6 包取消封装。

  5. 路由器 B 随后使用 IPv6 包中的目标地址将包转发到站点 B 上的接收主机。

6to4 中继路由器隧道的注意事项

6to4 中继路由器充当某些隧道的一个端点,这些隧道的另一个端点是需要与本地非 6to4 IPv6 网络通信的 6to4 路由器。本质上,中继路由器是 6to4 站点和本地 IPv6 站点之间的桥梁。因为此解决方案可能很不安全,所以,在缺省情况下,Oracle Solaris : 不启用对 6to4 中继路由器的支持。但是,如果站点需要这样的隧道,可以使用 6to4relay 命令来启用下面的隧道连接方案。

图 11–7 从 6to4 站点到 6to4 中继路由器的隧道

该图显示了 6to4 路由器和 6to4 中继路由器之间的隧道。下文将进一步描述该图。

图 11–7 中,6to4 站点 A 需要与本地 IPv6 站点 B 上的节点通信。该图显示了从站点 A 经由 IPv4 网络到达 6to4 隧道的通信路径。该隧道将 6to4 路由器 A 和 6to4 中继路由器作为其端点。IPv6 站点 B 所连接到的 IPv6 网络位于 6to4 中继路由器的外部。

6to4 站点和本地 IPv6 站点之间的包流

本节介绍从 6to4 站点到本地 IPv6 站点之间的包流。此方案使用图 11–7 中显示的拓扑。

  1. 6to4 站点 A 上的主机发送一个传输信号,将本地 IPv6 站点 B 上的主机指定为目标地址。每个数据包头都将 6to4 派生地址作为其源地址。目标地址是标准的 IPv6 地址。

  2. 站点 A 的 6to4 路由器将每个包封装到 IPv4 数据包头中,该 IPv4 数据包头将 6to4 中继路由器的 IPv4 地址作为其目标地址。6to4 路由器随后使用标准的 IPv4 路由过程,通过 IPv4 网络转发包。包遇到的任何 IPv4 路由器都会将包转发到 6to4 中继路由器。

  3. 物理位置距离站点 A 最近的任意点传送 6to4 中继路由器检索以 192.88.99.1 任意点传送组为目标的包。


    注 –

    6to4 中继路由器属于 6to4 中继路由器任意点传送组,它的 IP 地址为 192.88.99.1。此任意点传送地址是 6to4 中继路由器的缺省地址。如果您需要使用特定的 6to4 中继路由器,则可以覆盖缺省设置并指定该路由器的 IPv4 地址。


  4. 该中继路由器会对 6to4 包中的 IPv4 数据包头取消封装,并显示本地 IPv6 目标地址。

  5. 然后,该中继路由器将当前只包含 IPv6 的包发送到 IPv6 网络上,在该网络上,包最终将由站点 B 上的某个路由器检索到。检索到包的路由器随后会将包转发到目标 IPv6 节点。

Oracle Solaris : 名称服务的 IPv6 扩展

本节介绍在实现 IPv6 时引入的命名更改。可以将 IPv6 地址存储在任何 Oracle Solaris : 名称服务(如 NIS、LDAP、DNS 和 files)中。还可以使用 NIS over IPv6 RPC 传输机制来检索任何 NIS 数据。

DNS 的 IPv6 扩展

AAAA 资源记录是 IPv6 特定的资源记录,它已在 RFC 1886 "DNS Extensions to Support IP Version 6" 中指定。该 AAAA 记录将主机名映射到 128 位 IPv6 地址。IPv6 仍使用 PTR(指针)记录将 IP 地址映射为主机名。系统为 IPv6 地址保留了 128 位地址中的 32 个半字节(四位)。每个半字节都转换为与其相对应的十六进制 ASCII 值,然后再附加 ip6.int

nsswitch.conf 文件的更改

对于 Solaris 10 11/06 及早期发行版,除了通过 /etc/inet/ipnodes 查找 IPv6 地址的功能之外,还向 NIS、LDAP 和 DNS 名称服务中添加了 IPv6 支持。因此,已经对 nsswitch.conf 文件进行了修改以支持 IPv6 查找功能。


hosts:  files dns nisplus [NOTFOUND=return]
ipnodes: files dns nisplus [NOTFOUND=return]

注 –

在将 /etc/nsswitch.conf 文件更改为在多个名称服务中搜索 ipnodes 之前,请使用 IPv4 和 IPv6 地址填充这些 ipnodes 数据库。否则,不必要的延迟(包括可能的引导计时延迟)可能会导致解析主机地址。


下图显示了对于使用 gethostbynamegetipnodebyname 命令的应用程序,nsswitch.conf 文件和新名称服务数据库之间的新关系。斜体项为新项。gethostbyname 命令仅检查存储在 /etc/inet/hosts 中的 IPv4 地址。在 Solaris 10 11/06 及早期发行版中,getipnodebyname 命令会查阅在 nsswitch.conf 文件的 ipnodes 项中指定的数据库。如果查找失败,该命令会检查在 nsswitch.conf 文件中的 hosts 项中指定的数据库。

图 11–8 nsswitch.conf 和名称服务之间的关系

该图显示 NIS、NIS+、文件和 DNS 数据库与 nsswitch.conf 文件之间的关系。

有关名称服务的更多信息,请参见《系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)》

名称服务命令的更改

为了支持 IPv6,可以用现有的名称服务命令查找 IPv6 地址。例如,ypmatch 命令可用于新的 NIS 映射。nslookup 命令可以在 DNS 中查找新的 AAAA 记录。

NFS 和 RPC IPv6 支持

NFS 软件和远程过程调用 (Remote Procedure Call, RPC) 软件以无缝方式支持 IPv6。与 NFS 服务相关的现有命令没有任何改变。而且大多数 RPC 应用程序无需任何更改即可运行于 IPv6 上。某些涉及到传输的高级 RPC 应用程序可能需要进行更新。

IPv6 Over ATM(异步传输模式)支持

Oracle Solaris : 支持 IPv6 over ATM、永久虚拟电路 (permanent virtual circuit, PVC) 和静态交换式虚拟电路 (switched virtual circuit, SVC)。