本部分介绍配置、管理 TCP/IP 网络以及对其进行疑难解答的任务和概念性信息。
本章介绍了以有组织的成本效益方式创建网络时必须解决的问题。解决了这些问题之后,即可在将来配置和管理网络时制定一个网络计划。
本章包含以下信息:
有关配置网络任务的信息,请参阅第 5 章。
下表列出了各种配置网络的任务。此表中包含对各项任务要完成的工作的说明,以及当前文档中详细介绍用于执行任务的特定步骤的章节。
任务 |
说明 |
参考 |
---|---|---|
1. 规划您的硬件要求和网络拓扑 |
确定所需的设备类型以及此设备在站点上的布局。 |
|
2. 为网络获取一个已注册的 IP 地址 |
如果计划与本地网络之外的网络进行通信(例如通过 Internet),则您的网络必须具有一个唯一的 IP 地址。 |
请参阅获取网络的 IP 号。 |
3. 基于 IPv4 网络前缀或 IPv6 站点前缀为系统设计一个 IP 地址寻址方案。 |
确定如何在站点上部署地址。 | |
4. 创建一个包含网络中所有计算机 IP 地址和主机名的列表。 |
使用此列表可生成网络数据库 |
请参阅网络数据库 |
5. 确定要在网络中使用的名称服务。 |
决定是使用 NIS、LDAP、DNS,还是使用本地 /etc 目录中的网络数据库。 |
请参阅选择名称服务和目录服务 |
6. 在适用于网络的情况下建立管理细分 |
决定站点是否需要将网络划分为多次管理细分 |
请参阅管理细分 |
7. 在进行网络设计时确定路由器的放置位置。 |
如果网络足够大而需要路由器,请创建一个支持这些路由器的网络拓扑。 |
请参阅为网络规划路由器 |
8. 为子网制定策略(如果需要)。 |
您可能需要创建子网,以便管理 IP 地址空间或为用户提供更多 IP 地址。 |
有关 IPv4 子网规划的信息,请参阅什么是子网划分? 有关 IPv6 子网规划的信息,请参阅为子网制定编号方案 |
设计网络时,您必须确定最能满足组织需求的网络类型。必须制定的一些规划决策涉及以下网络硬件:
网络硬件的网络拓扑、布局以及连接
网络可支持的主机系统数量
网络支持的主机类型
可能需要的服务器类型
要使用的网络介质类型: 以太网、令牌环、FDDI(Fiber Distributed Data Interface,光纤分布式数据接口)等
是否需要网桥或路由器扩展此介质或将本地网络连接到外部网络
除了内置接口之外,某些系统是否还需要另行购买的接口
根据以上因素,即可确定局域网大小。
如何规划网络硬件不在本手册的介绍范围内。有关帮助信息,请参阅硬件附带的手册。
您希望支持的系统数量会影响网络的配置方式。您的组织可能需要由某一建筑的同一楼层中几十个独立系统所组成的一个小型网络。或者,您可能需要设置一个由分布在多个建筑中的 1,000 个以上系统所组成的网络。此设置要求您进一步将网络划分为多个称为子网的分支。
规划网络寻址方案时,请考虑以下因素:
要使用的 IP 地址类型:IPv4 或 IPv6
网络中可能需要的系统的数量
多宿主系统或路由器的数量,其中每个接口都需要一个 IP 地址
是否在网络中使用专用地址
是否需要管理 IPv4 地址池的 DHCP 服务器
自 1990 年以来,Internet 在全球范围内的增长已经导致可用的 IP 地址不足。为了改善这种状况,Internet 工程任务组 (Internet Engineering Task Force, IETF) 开发了许多备用 IP 地址寻址方案。现在使用的 IP 地址类型包括以下几种:
如果您的组织为网络指定了多个 IP 地址或者使用子网,请在组织内部指定一个中心权威机构来指定网络 IP 地址。此权威机构应该维持对已指定的网络 IP 地址池的控制,并且根据需要指定网络、子网和主机地址。为了避免出现问题,请确保在组织中不存在重复或随机的网络号。
这些 32 位地址是针对 TCP/IP 设计的原始 IP 地址寻址格式。最初,IP 网络具有 A、B 和 C 三类。指定给网络的网络号反映了这种类指定并加上 8 位或更多位来表示主机。基于类的 IPv4 地址要求为网络号配置网络掩码。此外,要为本地网络中的系统提供更多地址,通常还需要将这些地址划分为多个子网。
现在,IP 地址称为 IPv4 地址。虽然不能再从 ISP 获取基于类的 IPv4 网络号,但是很多现有网络仍拥有这些网络号。有关管理 IPv4 地址的更多信息,请参阅设计 IPv4 寻址方案。
IETF 开发了无类域间路由 (Classless Inter-Domain Routing, CIDR),作为在短期到中期内解决 IPv4 地址不足的情况的方法。此外,还设计了 CIDR 格式作为解决全局 Internet 路由表容量匮乏状况的修正方法。使用 CIDR 表示的 IPv4 地址长度为 32 位,并且具有相同的点分十进制格式。但是,CIDR 在最右边的位之后添加了一个前缀标识,用于定义 IPv4 地址的网络部分。有关更多信息,请参阅设计 CIDR IPv4 寻址方案。
通过动态主机配置协议 (Dynamic Host Configuration Protocol, DHCP),系统可从 DHCP 服务器接收配置信息,其中包括作为引导进程的一部分的 IP 地址。DHCP 服务器维护 IP 地址池,通过该地址池可为 DHCP 客户机指定地址。使用 DHCP 的站点所用的 IP 地址池小于为所有客户机指定永久性 IP 地址时所需的 IP 地址池。您可以设置 Oracle Solaris : DHCP 服务来管理站点的 IP 地址或部分地址。有关更多信息,请参阅第 12 章。
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 文档前缀。
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 地址中所述使用专用地址。
有关 IPv6 地址规划的信息,请参阅准备 IPv6 寻址计划。
本节提供了 IPv4 地址的概述,以帮助您制定一个 IPv4 寻址计划。有关 IPv6 地址的信息,请参见IPv6 寻址概述。有关 DHCP 地址的信息,请参见第 12 章。
由 ISP、IR 指定的唯一网络号;对于旧网络,则为通过 IANA 注册的唯一网络号。如果计划使用专用地址,则设计的网络号在组织中必须是唯一的。
网络中每个系统接口的唯一 IPv4 地址。
网络掩码。
IPv4 地址是在系统上唯一标识一个网络接口的 32 位数字,如IP 地址如何应用于网络接口中所述。IPv4 地址以十进制数字表示,分为四个用句点分隔的 8 位字段。每个 8 位字段表示 IPv4 地址的一个字节。这种表示 IPv4 地址字节的形式通常称为点分十进制格式。
下图显示了 IPv4 地址 172.16.50.56 的组成部分。
注册的 IPv4 网络号。在基于类的 IPv4 表示法中,此编号还定义了 IP 网络类,在本示例中为 B 类,应已通过 IANA 进行了注册。
IPv4 地址的主机部分。主机部分唯一标识网络系统上的一个接口。请注意,对于本地网络中的每个接口,地址的网络部分相同,但是主机部分一定不同。
如果计划将基于类的 IPv4 网络划分为多个子网,则需要定义子网掩码或网络掩码,如netmasks 数据库所述。
以下示例说明了 CIDR 格式的地址 192.168.3.56/22
网络部分,由从 ISP 或 IR 收到的 IPv4 网络号组成。
主机部分,此部分是为系统接口指定的部分。
网络前缀,定义包含网络号的地址的位数。网络前缀还为 IP 地址提供子网掩码。网络前缀也是由 ISP 或 IR 指定的。
基于 Oracle Solaris : 的网络可以将标准 IPv4 地址、CIDR 格式的 IPv4 地址、DHCP 地址、IPv6 地址和专用 IPv4 地址结合起来。
本节介绍了标准 IPv4 地址组织而成的类。虽然 IANA 不再分配基于类的网络号,但是这些网络号仍然在许多网络中使用。您也许需要使用基于类的网络号来管理站点的地址空间。有关 IPv4 网络类的完整介绍,请参阅网络类。
下表说明了标准 IPv4 地址如何划分为网络地址空间和主机地址空间。对于每个类,“范围”指定网络号第一个字节的十进制值的范围。“网络地址”指示专用于地址的网络部分的 IPv4 地址的字节数。每个字节都由 xxx 表示。“主机地址”指示专用于地址的主机部分的字节数。例如,在 A 类网络地址中,第一个字节专用于网络,最后三个字节专用于主机。对于 C 类网络,则应用相反的指定。
表 2–1 IPv4 类的划分
类 |
字节范围 |
网络号 |
主机地址 |
---|---|---|---|
0–127 |
xxx |
xxx.xxx. xxx |
|
128–191 |
xxx.xxx |
xxx.xxx |
|
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 的范围 |
---|---|---|---|---|
0–127 |
1–254 |
1–254 |
1–254 |
|
128–191 |
由 IANA 预先指定 |
1–254 |
1–254 |
|
192–223 |
由 IANA 预先指定 |
由 IANA 预先指定 |
1–254 |
有时会将包含大量主机的本地网络划分为多个子网。如果将 IPv4 网络号划分为子网,则需要为每个子网指定一个网络标识符。您可以通过将 IPv4 地址主机部分的某些位用作网络标识符,从而最大程度地提高 IPv4 地址空间的效率。用作网络标识符时,地址的指定部分会成为子网号。可以使用网络掩码来创建子网号,该网络掩码是选择 IPv4 地址的网络和子网部分的位掩码。有关详细信息,请参阅为 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 地址的更多信息,请参阅以下内容:
有关 CIDR 的技术详细信息,请参阅RFC 1519, Classless Inter-Domain Routing (CIDR): an Address Assignment and Aggregation Strategy。
有关 CIDR 的更多常规信息,请参阅 Pacific Bell Internet 的 Classless Inter-Domain Routing (CIDR) Overview。
有关 CIDR 的其他概述信息,请参阅 Wikipedia 文章,"Classless inter-domain routing"。
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 地址。安装 Oracle Solaris : 的过程中,必须为安装程序找到的第一个接口提供 IP 地址。通常,此接口的名称为 device-name0,例如 eri0 或 hme0。此接口会被视为主网络接口。
如果向主机添加第二个网络接口,则此接口也必须具有自己唯一的 IP 地址。添加第二个网络接口后,主机会成为多宿主主机。与此相反,向主机添加第二个网络接口并启用 IP 转发时,该主机会成为路由器。有关说明,请参见配置 IPv4 路由器。
每个网络接口都有设备名称、设备驱动程序以及位于 /devices 目录中的关联设备文件。网络接口的设备名称可能为 eri 或 smc0,这两个设备名称用于两个常用的以太网接口。
有关与接口相关的信息和任务,请参阅在 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 : 安装程序将该信息添加到 hosts 和 ipnodes 网络数据库(对于 Solaris 10 11/06 及早期 Solaris 10 发行版)。该数据库是包含 TCP/IP 在网络中运行所必需的信息的一组网络数据库的一部分。为网络选择的名称服务可读取这些数据库。
网络数据库的配置非常关键。因此,需要决定作为网络规划过程一部分要使用的名称服务。此外,决定是否使用名称服务还会影响是否将网络组织为管理域。网络数据库和 nsswitch.conf 文件提供了一组网络数据库的详细信息。
NIS 和 DNS 名称服务可维护网络上多台服务器中的网络数据库。《系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)》介绍了这些名称服务并说明如何配置数据库。此外,该指南还详细说明了“名称空间”和“管理域”的概念。
如果未实现 NIS、LDAP 或 DNS,网络会使用本地文件提供名称服务。“本地文件”一词是指 /etc 目录中由网络数据库使用的一系列文件。除非另行指明,否则,本书中的过程将假定您使用本地文件作为名称服务。
如果决定使用本地文件作为网络的名称服务,则以后可以设置其他名称服务。
许多网络会将其主机和路由器组织为管理域的分层结构。如果使用 NIS 或 DNS 名称服务,则必须为组织选择一个全球唯一的域名。要确保域名是唯一的,应向 InterNIC 注册此域名。如果计划使用 DNS,则也需要向 InterNIC 注册域名。
域名结构是分层的。新域通常位于现有的相关域的下方。例如,分公司的域名可位于父公司域名的下方。如果域名没有其他关系,则该组织可以直接将其域名放置在其中一个现有顶级域的下方。
.com-商业公司(国际范围)
.edu-教育机构(国际范围)
.gov-美国政府机构
.fr-法国
您可以选择标识自己组织的名称,并且规定该名称必须是唯一的。
管理细分的问题即是对大小和控制进行处理。网络中包含的主机和服务器越多,管理任务就会越复杂。您可能需要通过设置其他管理划分来处理此类情况。如添加特殊的网络类,将现有网络划分为多个子网。有关为网络设置管理细分的决策由以下因素确定:
网络的大小。
一次管理划分可以处理包含数百台主机的单一网络,这些主机位于同一物理位置并且需要相同的管理服务。但是,有时您应该建立多次管理细分。如果您有一个包含子网的小型网络,并且该网络分散在一个广泛的地理区域,则这种细分将非常有用。
网络中的用户是否有类似需求?
例如,您的网络可能局限于单个建筑,并且支持数量相对较少的计算机。这些计算机划分在多个子网中。每个子网都支持有不同需求的用户组。在本示例中,您可能需要针对每个子网使用一次管理细分。
回顾使用 TCP/IP 的情形,网络中有两种类型的实体: 主机和路由器。所有网络都必须包含主机,不过并非所有网络都需要路由器。网络的物理拓扑可确定是否需要路由器。本节介绍了网络拓扑和路由的概念。在决定将其他网络添加到现有网络环境中时,这些概念非常重要。
有关在 IPv4 网络上配置路由器的完整详细信息和任务,请参阅IPv4 网络上的包转发和路由。有关在 IPv6 网络上配置路由器的完整详细信息和任务,请参阅配置 IPv6 路由器。
网络拓扑描述了网络如何结合在一起。路由器是指将网络相互连接的实体。路由器是指任何一台具有两个或更多网络接口并实现 IP 转发的计算机。但是,只有正确配置,系统才能用作路由器,如配置 IPv4 路由器中所述。
路由器可连接两个或更多网络以形成更大的互联网络。必须配置路由器,使其能在两个相邻网络间传送包。路由器还应该可以将包传送到相邻网络以外的网络。
下图显示了网络拓扑的基本部分。第一个图例显示由单个路由器连接的两个网络的简单配置。第二个图例显示由两个路由器互连的三个网络的配置。在第一个示例中,路由器 R 将网络 1 和网络 2 连接成一个大型互联网络。在第二个示例中,路由器 R1 连接网络 1 和 2。路由器 R2 连接网络 2 和 3。这些连接形成了一个包括网络 1、2 和 3 的网络。
除了将网络连接成互联网络之外,路由器还会在基于目标网络地址的网络间路由包。随着互联网络的日益复杂,每个路由器制定的有关包目标地址的决策也越来越多。
下图显示了一种更为复杂的情况。路由器 R3 直接连接网络 1 和 3。冗余性提高了可靠性。如果网络 2 关闭,则路由器 R3 仍会在网络 1 和 3 之间提供路由。您可以互连许多网络。但是,这些网络必须使用相同的网络协议。
作为包头的一部分的接受者 IP 地址可确定包的路由方式。如果此地址包含本地网络的网络号,则包会直接传送到具有此 IP 地址的主机。如果网络号不是指本地网络,则包将传送到本地网络中的路由器。
路由器在路由表中维护路由信息。这些表包含路由器连接到的网络中的主机和路由器的 IP 地址。该表还包含指向这些网络的链接。路由器收到包后即会检查路由表,以确定该表是否在标题中列出了目标地址。如果该表不包含目标地址,则路由器会将此包转发到其路由表中列出的其他路由器。有关路由器的详细信息,请参阅配置 IPv4 路由器。
下图中显示了由两个路由器连接的三个网络的网络拓扑。
路由器 R1 连接网络 192.9.200 和 192.9.201。路由器 R2 连接网络 192.9.201 和 192.9.202。如果网络 192.9.200 中的主机 A 向网络 192.9.202 中的主机 B 发送消息,则会发生以下事件:
主机 A 通过网络 192.9.200 发送出一个包。包头中包含接收主机 B 的 IPv4 地址 192.9.202.10。
网络 192.9.200 中没有 IPv4 地址为 192.9.202.10 的计算机。因此,路由器 R1 会接受此包。
路由器 R1 检查其路由表。网络 192.9.201 中没有地址为 192.9.202.10 的计算机。但是,路由表确实列出了路由器 R2。
R1 随后会选择 R2 作为“下一个跃点”路由器。R1 会将包发送到 R2。
由于 R2 将网络 192.9.201 连接到 192.9.202,因此 R2 拥有主机 B 的路由信息。路由器 R2 随后会将包转发到网络 192.9.202,在此主机 B 接受包。
本章概述了 Oracle Solaris : Internet 协议版本 6 (Internet Protocol version 6, IPv6) 的实现。此实现包括支持 IPv6 地址空间的相关守护进程和实用程序。
IPv6 和 IPv4 地址可以在 Oracle Solaris : 联网环境中共存。配置了 IPv6 地址的系统将保留其原有的 IPv4 地址。涉及 IPv6 地址的操作不会对 IPv4 操作造成不良影响,反之亦然。
本章主要讨论以下主题:
有关 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 数据包头选项的编码方式,从而提高了转发效率。而且,对 IPv6 选项长度的限制也不那么严格。这种更改为以后引入新选项提供了更大的灵活性。
许多关键的 Oracle Solaris : 网络服务都能够识别和支持 IPv6 地址,例如:
DNS、LDAP 和 NIS 等名称服务。有关这些名称服务对 IPv6 的支持的更多信息,请参见《系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)》。
IP 安全体系结构 (IPsec) 和 Internet 密钥交换 (Internet Key Exchange, IKE) 等验证和保密性应用程序。有关更多信息,请参见第 4 部分, IP 安全性。
由 IP 服务质量 (IP Quality of Service, IPQoS) 提供的区别服务。有关更多信息,请参见第 7 部分, IP 服务质量 (IP Quality of Service, IPQoS)。
由 IP 网络多路径 (IP network multipathing, IPMP) 提供的故障转移检测。有关更多信息,请参见第 6 部分, IPMP。
除本部分外,您还可以从以下两节列出的资源中获取有关 IPv6 的信息。
有许多与 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 相邻节点搜索协议的特征和功能 | |
RFC 3306,Unicast—Prefix—Based IPv6 Multicast Addresses |
描述 IPv6 多点传送地址的格式和类型 | |
RFC 3484, Default Address Selection for Internet Protocol version 6 (IPv6) |
描述用于选择 IPv6 缺省地址的算法 | |
RFC 3513,Internet Protocol version 6 (IPv6) Addressing Architecture |
包含有关 IPv6 地址类型的完整详细信息,并提供了很多示例 | |
RFC 3587,IPv6 Global Unicast Address Format |
定义 IPv6 单点传送地址的标准格式 |
下面的 Web 站点提供有关 IPv6 的有用信息。
表 3–2 与 IPv6 相关的 Web 站点
Web 站点 |
说明 |
位置 |
---|---|---|
IPv6 论坛 |
该社区的 Web 站点提供世界各地与 IPv6 相关的演示文稿、活动、课程和实现的链接 | |
Internet 工程任务组 IPv6 工作组 |
此 IETF 工作组的主页提供所有相关 IPv6 RFC 和 Internet 草案的链接 |
本节介绍 IPv6 网络拓扑的基本术语。下图显示了 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 的接口。与 IPv4 主机一样,IPv6 主机也不转发包。
单一且连续的网络介质,其两端均连接有路由器。
与本地节点在同一个链路上的 IPv6 节点。
IPv6 网络的管理段。与 IPv4 子网的组件一样,IPv6 子网的组件也可以直接对应于链路上的所有节点。必要时,可以在单独的子网中对链路上的节点进行管理。另外,IPv6 还支持多链路子网,在多链路子网上,多个链路上的节点可以是同一个子网的组件。图 3–1 中的链路 2 和链路 3 是多链路子网 8a 的组件。
在一个 IPv6 节点和另一个 IPv6 节点端点之间提供虚拟的点对点路径的隧道。IPv6 支持可手动配置的隧道和 6to4 自动隧道。
位于网络边界的路由器,是通往本地网络外部端点的 IPv6 隧道的一个端点。此路由器必须至少有一个连接到内部网络的 IPv6 接口。对于外部网络,此路由器可以有一个 IPv6 接口或一个 IPv4 接口。
因为一个节点可以有多个接口,所以应将 IPv6 地址指定给接口,而非节点。此外,可以为一个接口指定多个 IPv6 地址。
有关 IPv6 地址格式的完整技术信息,请参阅 RFC 2374,IPv6 Global Unicast Address Format
IPv6 定义了以下三种地址类型:
标识单个节点的接口。
标识一组通常位于不同节点上的接口。发送到多点传送地址的包将传递到多点传送组的所有成员。
标识一组通常位于不同节点上的接口。发送到任意点传送地址的包将传递到任意点传送组中物理位置最接近发送者的成员节点。
IPv6 地址的长度为 128 位,由八个 16 位字段组成,相邻字段用冒号分隔。IPv6 地址中的每个字段都必须包含一个十六进制数字,而 IPv4 地址则以点分十进制表示法表示。在下图中,x 表示十六进制数字。
最左侧的三个字段(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 地址都不会占用全部 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 前缀具有以下格式:
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。
下列前缀已留作特殊用途:
指示后跟 6to4 路由前缀。
指示后跟链路本地地址。
指示后跟多点传送地址。
IPv6 包括两种不同的单点传送地址指定方式:
全局单点传送地址
链路本地地址
单点传送地址的类型由地址中最左边(高阶)的连续位(其中包含前缀)来确定。
单点传送地址的格式按以下分层结构进行组织:
公共拓扑
站点(专用)拓扑
接口 ID
全局单点传送地址在 Internet 中保持全局唯一。IPv6 中的前缀中的示例 IPv6 地址是全局单点传送地址。下图显示全局单点传送地址的范围,它们对应于 IPv6 地址的相应部分。
站点前缀定义从网络到路由器的公共拓扑。企业的站点前缀可以从 ISP 或区域 Internet 注册机构 (Regional Internet Registry, RIR) 获取。
在 IPv6 中,子网 ID 定义网络的管理子网,它的最大长度为 16 位。可以在配置 IPv6 网络的过程中指定子网 ID。子网前缀通过指定已分配了子网的特定链路来定义路由器的站点拓扑。
IPv6 子网在概念上与 IPv4 子网相同,因为每个子网通常都与一个硬件链路相关联。但是,IPv6 子网 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 自动隧道。
链路本地单点传送地址只能用在本地网络链路上。在企业外部,链路本地地址不但无效,而且无法识别。以下示例显示了链路本地地址的格式。
链路本地前缀具有以下格式:
fe80::interface-ID/10
下面是链路本地地址的示例:
fe80::23a1:b152
10 位二进制前缀 1111111010 的十六进制表示形式。此前缀用来将 IPv6 地址的类型标识为链路本地地址。
接口的十六进制地址,通常从 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 本地链路上的以下主要活动:
相邻节点搜索使用下列类型的 ICMP 消息在链路上的节点之间进行通信:
路由器请求
路由器通告
相邻节点请求
相邻节点通告
重定向
有关相邻节点搜索消息和其他相邻节点搜索协议主题的详细信息,请参阅IPv6 相邻节点搜索协议。有关相邻节点搜索的技术信息,请参见 RFC 2461, Neighbor Discovery for IP Version 6 (IPv6)。
IPv6 的一个主要特征就是允许主机自动配置接口。通过相邻节点搜索,主机可以在本地链路上查找 IPv6 路由器并请求站点前缀。在自动配置过程中,主机将执行以下操作:
为每个接口创建链路本地地址,该操作不要求链路上有路由器。
检验地址在链路上是否唯一,该操作不要求链路上有路由器。
确定全局地址是应通过无状态机制、有状态机制还是这两种机制来获取。(要求链路上有路由器。)
无状态自动配置不需要手动配置主机,只需对路由器进行很少的配置(如果需要的话),而且不需要其他服务器。无状态机制允许主机生成其本身的地址。无状态机制使用本地信息以及由路由器通告的非本地信息来生成地址。
可以为接口实现临时地址,临时地址也是自动配置的。可以为主机上的一个或多个接口启用临时地址标记。但是,与自动配置的标准 IPv6 地址不同,临时地址由站点前缀和一个随机生成的 64 位数字组成。这个随机数将成为 IPv6 地址的接口 ID 部分。临时地址作为接口 ID 时,不会生成链路本地地址。
路由器将通告链路上已指定的所有前缀。IPv6 主机使用相邻节点搜索从本地路由器获取子网前缀。主机通过合并子网前缀和从接口的 MAC 地址生成的接口 ID 来自动生成 IPv6 地址。如果没有路由器,主机可以只生成链路本地地址。链路本地地址只能用于和同一链路上的节点进行通信。
请不要使用无状态自动配置功能来创建服务器的 IPv6 地址。主机会在自动配置过程中基于特定于硬件的信息来自动生成接口 ID。如果用新接口替换现有的接口,当前的接口 ID 可能会变得无效。
对于大多数企业,必须以循序渐进的方式在现有的 IPv4 网络中分步引入 IPv6。Oracle Solaris : 双栈网络环境既支持 IPv4 功能又支持 IPv6 功能。因为大多数网络都使用 IPv4 协议,所以 IPv6 网络目前需要一种在其边界外部进行通信的方法。IPv6 网络可以使用隧道来实现这一目的。
在大多数 IPv6 隧道传送方案中,外发 IPv6 包封装在 IPv4 包内部。IPv6 网络的边界路由器可以设置经由各种 IPv4 网络到达目标 IPv6 网络的边界路由器的点对点隧道。包通过隧道到达目标网络的边界路由器,该边界路由器将对包取消封装,然后将单独的 IPv6 包转发到目标节点。
Oracle Solaris : IPv6 实现支持下列隧道传送方案:
从一个 IPv6 网络经由 IPv4 网络到达另一个 IPv6 网络的手动配置的隧道。IPv4 网络可以是 Internet,也可以是企业内部的本地网络。
从一个 IPv4 网络经由 IPv6 网络(通常位于企业内部)到达另一个 IPv4 网络的手动配置的隧道。
从一个 IPv6 网络经由企业内的 IPv4 网络或 Internet 到达另一个 IPv6 网络的动态配置的自动 6to4 隧道。
有关 IPv6 隧道的详细信息,请参阅IPv6 隧道。有关 IPv4 到 IPv4 隧道和 VPN 的信息,请参阅虚拟专用网络和 IPsec。
在新网络或现有网络上部署 IPv6 需要进行许多规划工作。本章包含在您的站点配置 IPv6 之前必须执行的规划任务。对于现有的网络,IPv6 部署应逐步分阶段进行。本章中的主题有助于您在原本仅使用 IPv4 的网络上分阶段采用 IPv6。
本章讨论以下主题:
有关 IPv6 概念的介绍,请参阅第 3 章。有关详细信息,请参阅第 11 章。
请依次完成以下任务列表中的任务,以完成 IPv6 部署所必须执行的规划任务。
下表列出了各种配置 IPv6 网络的任务。此表中包含对各项任务要完成的工作的说明,以及当前文档中详细介绍用于执行任务的特定步骤的章节。
任务 |
说明 |
参考 |
---|---|---|
1. 准备硬件以支持 IPv6。 |
确保硬件可以升级到 IPv6。 | |
2. 找到支持 IPv6 的 ISP。 |
确保当前的 ISP 支持 IPv6。否则,请寻找可以支持 IPv6 的 ISP。可以使用两个 ISP,一个 ISP 用于 IPv6 通信,另一个用于 ISP IPv4 通信。 |
|
3. 确保应用程序能够支持 IPv6。 |
验证应用程序是否可以在 IPv6 环境中运行。 | |
4. 获取站点前缀。 |
从 ISP 或最近的 RIR 获取您站点的 48 位站点前缀。 | |
5. 制定子网寻址计划。 |
必须先整体规划 IPv6 网络拓扑和寻址方案,然后才能在网络中的各个节点上配置 IPv6。 | |
6. 制定隧道使用计划。 |
确定应当使用哪些路由器来建立与其他子网或外部网络连接的隧道。 | |
7. 为网络上的实体制定寻址计划。 |
在配置 IPv6 之前,应当先制定好服务器、路由器和主机的寻址计划。 | |
8. 制定 IPv6 安全策略。 |
在制定 IPv6 安全策略时,需要弄清楚 IP 过滤器、IP 安全体系结构 (IP security architecture, IPsec)、Internet 密钥交换 (Internet Key Exchange, IKE) 和其他 Oracle Solaris : 安全功能。 | |
9. (可选)设置 DMZ。 |
出于安全方面的考虑,在配置 IPv6 之前,需要为 DMZ 及其实体制定寻址计划。 | |
10. 使节点能够支持 IPv6。 |
在所有的路由器和主机上配置 IPv6。 | |
11. 打开网络服务。 |
确保现有的服务器能够支持 IPv6。 | |
12. 更新名称服务器以支持 IPv6。 |
确保使用新 IPv6 地址更新 DNS、NIS 和 LDAP 服务器。 |
本章中的任务旨在说明如何在典型企业网络上规划 IPv6 服务。下图显示本章中所谈及的网络。建议的 IPv6 网络可能包括该图中显示的部分或全部网络链路。
企业网络方案由五个具有现有 IPv4 地址的子网组成。网络的链路直接对应于管理子网。四个内部网络以 RFC 1918 样式的专用 IPv4 地址表示,这是在缺少 IPv4 地址时的常见解决方案。下面是这些内部网络的寻址方案:
子网 1 是内部网络主干 192.168.1。
子网 2 是具有 LDAP、sendmail 和 DNS 服务器的内部网络 192.168.2。
子网 3 是具有企业 NFS 服务器的内部网络 192.168.3。
子网 4 是包含企业员工主机的内部网络 192.168.4。
外部的公共网络 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 地址同时用于专用网络和公共网络。
Oracle Solaris : 双协议栈支持同时执行 IPv4 操作和 IPv6 操作。在网络上部署 IPv6 期间或在部署之后,可以成功运行与 IPv4 相关的操作。
IPv6 在现有的网络中引入了其他功能。因此,在首次部署 IPv6 时,必须确保不会中断正在使用 IPv4 的任何操作。本节中的主题介绍如何在现有的网络中分步引入 IPv6。
IPv6 部署中的第一步就是评估网络上现有的哪些实体能够支持 IPv6。大多数情况下,在实现 IPv6 时,网络拓扑(电缆、路由器和主机)可以保持不变。但是,在实际为网络接口配置 IPv6 地址之前,可能必须针对 IPv6 准备现有的硬件和应用程序。
检验网络上的哪个硬件可以升级到 IPv6。例如,可以就下列类别的硬件,查阅制造商的文档,确定是否已经针对 IPv6 做好准备:
路由器
防火墙
服务器
交换机
本部分中的所有过程都假定您的设备(尤其是路由器)可以升级到 IPv6。
某些型号的路由器无法升级到 IPv6。有关更多信息和解决方法,请参阅IPv4 路由器无法升级到 IPv6。
在当前的 Oracle Solaris : 发行版中,下列典型的 IPv4 网络服务可以支持 IPv6:
sendmail
NFS
HTTP(Apache 2.x 或 Orion)
DNS
LDAP
IMAP(Internet 消息访问协议)邮件服务仅适用于 IPv4。
针对 IPv6 配置的节点可以运行 IPv4 服务。在打开 IPv6 时,并非所有的服务都能够接受 IPv6 连接。已经移植到 IPv6 的服务将能够接受连接。尚未移植到 IPv6 的服务将使用 IPv4 协议栈。
在将服务升级到 IPv6 之后,可能会出现一些问题。有关详细信息,请参见将服务升级到 IPv6 之后遇到的问题。
因为服务器被视为 IPv6 主机,所以,在缺省情况下,服务器的 IPv6 地址会由相邻节点搜索协议自动配置。但是,许多服务器会有多个网络接口卡 (network interface card, NIC),您可能希望将它们换出以进行维修或更换。更换 NIC 后,相邻节点搜索会自动为新 NIC 生成一个新的接口 ID。对于特定的服务器,可能不支持此行为。
因此,请考虑为服务器的每个接口手动配置 IPv6 地址的接口 ID 部分。有关说明,请参阅如何配置用户指定的 IPv6 标记。以后需要更换现有的 NIC 时,已经配置的 IPv6 地址可应用于更换后的 NIC。
更新以下网络服务以支持 IPv6:
邮件服务器
NIS 服务器
NFS
LDAP 无需执行特定于 IPv6 的配置任务即可支持 IPv6。
检验防火墙硬件是否能够支持 IPv6。
有关说明,请参阅与防火墙有关的文档。
检验网络上的其他服务是否已移植到 IPv6。
有关更多信息,请参阅软件的营销宣传材料和相关文档。
如果您的站点部署了下列服务,请确保已经针对这些服务采取了相应的措施:
防火墙
考虑增强面向 IPv4 的策略以支持 IPv6。有关更多的安全注意事项,请参见IPv6 实现的安全注意事项。
邮件
在 DNS 的 MX(邮件交换)记录中,考虑添加邮件服务器的 IPv6 地址。
DNS
有关特定于 DNS 的注意事项,请参见如何准备 DNS 以支持 IPv6。
IPQoS
在主机上使用先前用于 IPv4 的同一 Diffserv 策略。有关更多信息,请参见分类器模块。
在将某个节点转换为支持 IPv6 以前,审计由该节点提供的任何网络服务。
当前的 Oracle Solaris : 发行版在客户端和服务器端均支持 DNS 解析。要使 DNS 服务支持 IPv6,请执行以下准备工作。
有关与准备 DNS 以支持 IPv6 相关的更多信息,请参阅《系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)》。
确保执行递归名称解析的 DNS 服务器是双栈(IPv4 和 IPv6)服务器或者仅包含 IPv4。
在 DNS 服务器上,使用转发区域中相关的 IPv6 数据库 AAAA 记录填充 DNS 数据库。
需要特别注意那些运行多个关键服务的服务器。确保网络正常工作,还要确保所有的关键服务都已经移植到 IPv6。然后,将服务器的 IPv6 地址添加到 DNS 数据库中。
向反向区域中添加与 AAAA 记录相关联的 PTR 记录。
向描述区域的 NS 记录中仅添加 IPv4 数据或者同时添加 IPv6 和 IPv4 数据。
在将网络迁移到 IPv4 和 IPv6 的混合网络时,IPv6 实现支持将许多隧道配置作为转换机制。隧道可以使隔离的 IPv6 网络能够进行通信。因为大多数 Internet 都运行 IPv4,所以,来自您的站点的 IPv6 包需要借助于通往目标 IPv6 网络的隧道在 Internet 上传播。
下面是在 IPv6 网络拓扑中使用隧道的一些主要方案:
从其购买 IPv6 服务的 ISP 允许您建立一个从您的站点的边界路由器到 ISP 网络的隧道。图 4–1 显示了这样的隧道。在这种情况下,需要建立 IPv6 over IPv4 手动隧道。
管理具有 IPv4 连通性的大型分布式网络。要连接使用 IPv6 的分布式站点,可以从每个子网的边界路由器建立 6to4 自动隧道。
有时,基础结构中的某个路由器无法升级到 IPv6。在这种情况下,可以建立将两个 IPv6 路由器作为端点且经由 IPv4 路由器的手动隧道。
有关配置隧道的过程,请参阅针对 IPv6 支持配置隧道所需的任务(任务列表)。有关隧道的相关概念信息,请参阅IPv6 隧道。
在现有网络中引入 IPv6 时,必须注意不要危及站点的安全性。在分阶段实现 IPv6 时,需要注意以下安全问题:
对于 IPv6 包和 IPv4 包,需要相同的过滤量。
通常,IPv6 包通过防火墙进行隧道传送。因此,您应当实现下列任一方案:
让防火墙在隧道内部执行内容检查。
在隧道的另一个端点设置一个具有相似规则的 IPv6 防火墙。
在 IPv4 隧道上存在某些使用 IPv6 over UDP 的转换机制。这些机制能够绕过防火墙,因此被认为存在危险。
IPv6 节点可从企业网络外部进行全局访问。如果安全策略禁止公共访问,则必须为防火墙制定更严格的规则。例如,考虑配置有状态的防火墙。
本书包括可用在 IPv6 实现中的安全功能。
IP 安全体系结构 (IPsec) 功能允许您为 IPv6 包提供加密保护。有关更多信息,请参阅第 19 章。
Internet 密钥交换 (Internet Key Exchange, IKE) 功能允许您针对 IPv6 包使用公钥验证。有关更多信息,请参阅第 22 章。
从 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 网络是全新的网络,否则请将现有的 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 地址,那么,更换服务器上的 NIC 卡时,系统会自动配置一个新的 IPv6 地址。在为服务器创建地址时,请记住以下提示:
为服务器提供有意义的稳定接口 ID。一个策略就是针对接口 ID 使用连续编号方案。例如,图 4–1 中 LDAP 服务器的内部接口可能会变成 2001:db8:3c4d:2::2。
或者,如果您不定期为 IPv4 网络重新编号,请考虑使用路由器和服务器现有的 IPv4 地址作为其接口 ID。在图 4–1 中,假定路由器 1 的 DMZ 接口具有 IPv4 地址 123.456.789.111。可以将 IPv4 地址转换为十六进制地址,并将结果用作接口 ID。新的接口 ID 将为 ::7bc8:156F。
只有当您拥有已注册的 IPv4 地址(而不是从 ISP 获取的地址)时,才使用此方法。如果使用由 ISP 提供给您的 IPv4 地址,则会产生依赖性,而这在更换 ISP 时会造成问题。
由于 IPv4 地址的数量有限,因此,在过去,网络设计者必须考虑在何处使用全局已注册地址和专用 RFC 1918 地址。但是,全局和专用 IPv4 地址的概念并不适用于 IPv6 地址。可以在网络的所有链路(包括公共 DMZ)上使用全局单点传送地址(包括站点前缀)。
TCP/IP 网络管理包括两个阶段。第一个阶段是装配硬件。第二个阶段是配置实现 TCP/IP 协议的守护进程、文件和服务。
本章介绍如何在实现 IPv4 寻址和服务的网络上配置 TCP/IP。
本章中的许多任务同时适用于仅启用了 IPv4 的网络和启用了 IPv6 的网络。如果这两种寻址格式的配置任务是不同的,则 IPv4 配置步骤在本章中介绍。本章中的任务交叉引用第 7 章中的等效 IPv6 任务。
本章包含以下信息:
在 Solaris 10 8/07 中,进行了以下更改:
作为使用 routeadm 命令的替代方法,可以通过服务管理工具 (Service Management Facility, SMF) 配置和管理路由。有关说明,请参阅IPv4 网络上的包转发和路由中的过程和示例以及 routeadm(1M) 手册页。
/etc/inet/ipnodes 文件已过时。只能对早期 Oracle Solaris 10 发行版使用 /etc/inet/ipnodes,如以下各个过程中所述。
在配置 TCP/IP 之前,请完成下表中列出的任务。此表中包含对各项任务要完成的工作的说明,以及当前文档中详细介绍用于执行任务的特定步骤的章节。
任务 |
说明 |
参考 |
---|---|---|
1. 设计网络拓扑。 |
确定网络的物理布局。 | |
2. 从 ISP 或区域 Internet 注册机构 (Regional Internet Registry, RIR) 获取网络号。 |
获取已注册的网络号,站点上的系统可以使用它与外部进行通信。 | |
3. 为网络规划 IPv4 寻址方案。如果适用,则包括子网寻址。 |
将网络号用作寻址计划的基础。 | |
4. 根据网络拓扑来装配网络硬件。保证硬件正常工作。 |
设置在网络拓扑设计中概述的系统、网络介质、路由器、交换机、集线器和网桥。 |
硬件手册和网络拓扑概述。 |
5. 将 IPv4 地址和主机名指定给网络中的所有系统。 |
在 Oracle Solaris : 安装过程中或安装后,在适当的文件中指定 IPv4 地址。 | |
6. 运行网络接口和路由器所需的配置软件(如果适用)。 |
配置路由器和多宿主主机。 |
为网络规划路由器和配置 IPv4 路由器(以了解有关路由器的信息)。 |
7. 确定网络使用的名称服务或目录服务: NIS、LDAP、DNS 或本地文件。 |
配置选定的名称服务和/或目录服务。 | |
8. 选择网络的域名(如果适用)。 |
选择网络的域名,并向 InterNIC 注册。 |
作为网络管理员,您可以将 TCP/IP 配置为在主机和路由器上运行(如果适用)。可以将这些系统配置为从本地系统上的文件或者从网络中其他系统上的文件获取配置信息。需要以下配置信息:
每个系统的主机名
每个系统的 IP 地址
每个系统所属的域名
缺省路由器
在每个系统的网络中使用的 IPv4 网络掩码
从本地文件获取 TCP/IP 配置信息的系统在本地文件模式下运行。从远程网络服务器获取 TCP/IP 配置信息的系统在网络客户机模式下运行。
要以本地文件模式运行,系统必须有 TCP/IP 配置文件的本地副本。TCP/IP 配置文件中介绍了这些文件。系统应有自己的磁盘,尽管严格说来此建议并非必需。
大多数服务器应该以本地文件模式运行。此要求涉及以下服务器:
网络配置服务器
NFS 服务器
提供 NIS、LDAP 或 DNS 服务的名称服务器
邮件服务器
此外,路由器应该以本地文件模式运行。
专门用作打印服务器的系统无需以本地文件模式运行。单台主机是否应该以本地文件模式运行,取决于网络的规模。
如果运行的网络规模很小,则在单台主机上维护这些文件所涉及的工作量是易于管理的。如果网络为数百台主机服务,则该任务将变得很困难,即使将网络划分为许多管理子域也是如此。因此,对于大型网络,使用本地文件模式通常效率较低。但是,由于路由器和服务器必须是独立的,因此应该以本地文件模式配置它们。
网络配置服务器是为以网络客户机模式配置的主机提供 TCP/IP 配置信息的服务器。这些服务器支持以下三种引导协议:
RARP-反向地址解析协议 (Reverse Address Resolution Protocol, RARP) 将以太网地址(48 位)映射到 IPv4 地址(32 位),它与 ARP 相反。当您在网络配置服务器上运行 RARP 时,以网络客户机模式运行的主机将从服务器获取其 IP 地址和 TCP/IP 配置文件。in.rarpd 守护进程启用 RARP 服务。有关详细信息,请参阅 in.rarpd(1M) 手册页。
TFTP-简单文件传输协议 (Trivial File Transfer Protocol, TFTP) 是在远程系统之间传输文件的应用程序。in.tftpd 守护进程执行 TFTP 服务,从而允许在网络配置服务器及其网络客户机之间传输文件。有关详细信息,请参阅 in.tftpd(1M) 手册页。
Bootparams-Bootparams 协议提供关闭网络引导的客户机所需的引导参数。rpc.bootparamd 守护进程执行这些服务。有关详细信息,请参阅 bootparamd(1M) 手册页。
网络配置服务器还可以用作 NFS 文件服务器。
如果要将任何主机配置为网络客户机,还必须将网络上的至少一个系统配置为网络配置服务器。如果网络划分为多个子网,则包含网络客户机的每个子网必须配有至少一个网络配置服务器。
从网络配置服务器获取其配置信息的任何主机都以网络客户机模式运行。已配置为网络客户机的系统不需要 TCP/IP 配置文件的本地副本。
网络客户机模式简化了大型网络的管理。网络客户机模式最大限度地减小了在单台主机上执行的配置任务的数目。网络客户机模式保证网络中的所有系统都遵循相同的配置标准。
可以在所有类型的计算机上配置网络客户机模式。例如,可以在独立系统上配置网络客户机模式。
配置并不仅限于纯本地文件模式或纯网络客户机模式。路由器和服务器应该始终以本地文件模式进行配置。对于主机,可以使用本地文件模式和网络客户机模式的任何组合。
图 5–1 显示了网络号为 192.9.200 的虚构网络上的主机。该网络有一个网络配置服务器,称为 sahara。主机 tenere 和 nubian 有自己的磁盘并以本地文件模式运行。主机 faiyum 也有磁盘,但是此系统以网络客户机模式运行。
最后,系统 timbuktu 被配置为路由器。该系统包括两个网络接口。第一个接口名为 timbuktu。此接口属于网络 192.9.200。第二个接口名为 timbuktu-201。此接口属于网络 192.9.201。这两个网络都位于组织域 deserts.worldwide.com 中。该域将本地文件用作其名称服务。
如果要将不使用子网的网络更改为使用子网的网络,请执行以下任务列表中的任务。
本节中的信息仅适用于 IPv4 子网。有关规划 IPv6 子网的信息,请参阅准备网络拓扑以支持 IPv6和为子网制定编号方案。
下表列出了各种用于在当前网络中添加子网的任务。此表中包含对各项任务要完成的工作的说明,以及当前文档中详细介绍用于执行任务的特定步骤的章节。
任务 |
说明 |
参考 |
---|---|---|
1. 确定网络拓扑是否需要子网。 |
确定新子网的拓扑,其中包括路由器和主机在子网中的位置。 | |
2. 将含有新子网号的 IP 地址指定给要成为子网成员的系统。 |
在 Oracle Solaris : 安装过程中或稍后,在 /etc/hostname.interface 文件中配置使用新子网号的 IP 地址。 | |
3. 在子网中的所有预期系统上配置子网的网络掩码。 |
如果要手动配置网络客户机,请修改 /etc/inet/netmasks 文件。或者,将网络掩码提供给 Oracle Solaris : 安装程序。 | |
4. 用子网中所有系统的新 IP 地址编辑网络数据库。 |
在所有主机上修改 /etc/inet/hosts(对于 Solaris 10 11/06 和早期发行版,则修改 /etc/inet/ipnodes),以反映新主机地址。 | |
5. 重新引导所有系统。 |
下表列出了从无子网的网络配置转变到使用子网的网络后还需要执行的额外任务。此表中包含对各项任务要完成的工作的说明,以及当前文档中详细介绍用于执行任务的特定步骤的章节。
任务 |
说明 |
参考 |
---|---|---|
以本地文件模式配置主机 |
涉及到编辑 nodename、hostname、hosts、defaultdomain、defaultrouter 和 netmasks 文件 | |
设置网络配置服务器 |
涉及到打开 in.tftp 守护进程以及编辑 hosts、ethers 和 bootparams 文件 | |
以网络客户机模式配置主机 |
涉及到创建 hostname 文件、编辑 hosts 文件以及删除 nodename 和 defaultdomain 文件(如果它们存在) | |
为网络客户机指定路由策略 |
涉及到确定在主机上使用静态路由还是动态路由。 | |
修改现有网络配置 |
涉及到更改主机名、IP 地址以及在安装时设置的或稍后配置的其他参数。 |
网络软件与操作系统软件一起安装。此时,必须将某些 IP 配置参数存储在适当文件中,以便可以在引导时读取它们。
网络配置过程涉及到创建或编辑网络配置文件。如何使配置信息可用于系统内核是有条件的。是否可用取决于这些文件是在本地存储(本地文件模式)还是从网络配置服务器获取(网络客户机模式)。
每个系统上每个网络接口的 IP 地址。
网络中每个系统的主机名。可以在本地文件或名称服务数据库中键入主机名。
系统所驻留的 NIS、LDAP 或 DNS 域名(如果适用)。
缺省路由器地址。如果在一个简单的网络拓扑中,每个网络仅连接有一个路由器,则可以提供此信息。如果路由器不运行路由协议,如路由器搜索 (Router Discovery, RDISC) 服务器协议或路由器信息协议 (Router Information Protocol, RIP),则也可以提供此信息。有关缺省路由器的更多信息,请参阅IPv4 网络上的包转发和路由。有关 Oracle Solaris : 支持的路由协议的列表,请参见表 5–1。
子网掩码(只有包含子网的网络需要)。
如果 Oracle Solaris : 安装程序检测到系统上有多个接口,则可以选择在安装过程中配置其他接口。有关完整说明,请参见《Oracle Solaris 10 9/10 安装指南:基本安装》。
本章包含有关创建和编辑本地配置文件的信息。有关使用名称服务数据库的信息,请参见《系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)》。
使用此过程可以在以本地文件模式运行的主机上配置 TCP/IP。
承担主管理员角色或者成为超级用户
主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
转到 /etc 目录。
验证在 /etc/nodename 文件中设置的主机名是否正确。
在 Oracle Solaris : 安装过程中指定系统的主机名时,该主机名将输入到 /etc/nodename 文件中。确保节点名称项是系统的正确主机名。
检验系统上的每个网络接口是否存在对应的 /etc/hostname.interface 文件。
有关 /etc/hostname. interface 文件的文件语法和基本信息,请参阅管理物理接口的基础知识。
Oracle Solaris : 安装程序要求您在安装过程中至少配置一个接口。自动配置的第一个接口将成为主网络接口。安装程序为主网络接口和在安装时选择配置的任何其他接口创建 /etc/hostname.interface 文件。
如果在安装过程中配置了其他接口,请验证每个接口是否有对应的 /etc/hostname.interface 文件。在 Oracle Solaris : 安装过程中,无需配置多个接口。但是,如果稍后要将更多接口添加到系统中,则必须手动配置它们。
有关手动配置接口的步骤,请参阅在 Solaris 10 3/05 中管理接口或如何在安装系统后配置物理接口(适用于从 Solaris 10 1/06 开始的发行版)。
对于 Solaris 10 11/06 和更早的发行版,验证 /etc/inet/ipnodes 文件中的项是否最新。
Oracle Solaris 10 安装程序会创建 /etc/inet/ipnodes 文件。此文件包含在安装过程中配置的每个接口的节点名称和 IPv4 地址以及 IPv6 地址(如果适用)。
对 /etc/inet/ipnodes 文件中的项使用以下格式:
IP-address node-name nicknames... |
nicknames 是接口的其他名称。
Oracle Solaris : 安装程序为主网络接口、回送地址和在安装过程中配置的任何其他接口(如果适用)创建项。
在 /etc/defaultdomain 文件中键入主机的全限定域名。
例如,假定主机 tenere 是域 deserts.worldwide.com 的一部分。此时应在 /etc/defaultdomain 中键入 deserts.worldwide.com。有关更多信息,请参见/etc/defaultdomain 文件。
在 /etc/defaultrouter 文件中键入路由器的名称。
有关此文件的信息,请参见/etc/defaultrouter 文件。
在 /etc/inet/hosts 文件中键入缺省路由器的名称及其 IP 地址。
还可以使用其他路由选项,如如何以网络客户机模式配置主机中所述。可以将这些选项应用于本地文件模式配置。
如果主机从 DHCP 服务器获取其 IP 地址,则不必指定网络掩码。
如果已经在此客户机所在的网络上设置 NIS 服务器,则可以将 netmask 信息添加到该服务器上的相应数据库中。
对于所有其他情况,请执行以下操作:
在 /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 |
在 /etc/nsswitch.conf 中更改网络掩码的查找顺序,以便首先搜索本地文件:
netmasks: files nis |
有关如何设置安装服务器和引导服务器的信息,请参见《Oracle Solaris 10 9/10 安装指南:基本安装》。
承担主管理员角色,或成为超级用户。
主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
转到预期的网络配置服务器的根 (/) 目录。
通过创建目录 /tftpboot 打开 in.tftpd 守护进程:
# mkdir /tftpboot |
此命令将系统配置为 TFTP、bootparams 和 RARP 服务器。
创建指向目录的符号链接。
# ln -s /tftpboot/. /tftpboot/tftpboot |
在 /etc/inetd.conf 文件中启用 tftp 行。
检查该项是否如下所示:
tftp dgram udp6 wait root /usr/sbin/in.tftpd in.tftpd -s /tftpboot |
此行可防止 in.tftpd 检索除位于 /tftpboot 中的文件之外的任何文件。
编辑 hosts 数据库。
添加网络中每个客户机的主机名和 IP 地址。
编辑 ethers 数据库。
为网络中以网络客户机模式运行的每台主机创建项。
编辑 bootparams 数据库。
请参见bootparams 数据库。使用通配符项,或者为以网络客户机模式运行的每台主机创建项。
将 /etc/inetd.conf 项转换为服务管理工具 (Service Management Facility, SMF) 服务清单,并启用生成的服务:
# /usr/sbin/inetconv |
验证 in.tftpd 是否正常工作。
# svcs network/tftp/udp6 |
应该看到与如下所示类似的输出:
STATE STIME FMRI online 18:22:21 svc:/network/tftp/udp6:default |
in.tftpd 守护进程由服务管理工具管理。可以使用 svcadm 命令对 in.tftpd 执行管理操作(如启用、禁用或重新启动)。启动和重新启动此服务的职责已委托给 inetd。使用 inetadm 命令可以进行配置更改以及查看 in.tftpd 的配置信息。使用 svcs 命令可以查询服务的状态。有关服务管理工具的概述,请参阅《系统管理指南:基本管理》中的第 18 章 “管理服务(概述)”。
网络客户机从网络配置服务器接收其配置信息。因此,在将主机配置为网络客户机之前,必须确保至少为网络设置了一个网络配置服务器。
在要以网络客户机模式配置的每台主机上,执行以下过程。
承担主管理员角色,或成为超级用户。
主管理员角色拥有主管理员配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
如果存在这样的文件,则删除它。
删除 /etc/nodename 会导致系统使用 hostconfig 程序从网络配置服务器获取主机名、域名和路由器地址。请参见配置本地网络中的系统。
如果 /etc/hostname.interface 文件不存在,则创建它。
确保该文件为空。/etc/hostname.interface 文件为空会导致系统从网络配置服务器获取 IPv4 地址。
确保 /etc/inet/hosts 文件仅包含回送网络接口的 localhost 名称和 IP 地址。
# cat /etc/inet/hosts # Internet host table # 127.0.0.1 localhost |
有关更多信息,请参见回送地址。该文件不应包含本地主机(主网络接口)的 IP 地址和主机名。
如果存在这样的文件,则删除它。
hostconfig 程序自动设置域名。要覆盖由 hostconfig 设置的域名,请在 /etc/defaultdomain 文件中键入替代域名。
此过程说明如何在以前安装的系统上修改 IPv4 地址、主机名和其他网络参数。使用此过程可以修改服务器或联网独立系统的 IP 地址。此过程不适用于网络客户机或设备。这些步骤创建一个在重新引导后继续存在的配置。
此操作说明仅适用于更改主网络接口的 IPv4 地址。要为系统添加其他接口,请参阅如何在安装系统后配置物理接口。
在几乎所有情况下,以下步骤都使用传统的 IPv4 点分十进制表示法指定 IPv4 地址和子网掩码。另外,在此过程中也可以使用 CIDR 表示法在所有适用文件中指定 IPv4 地址。有关 CIDR 表示法的简介,请参见CIDR 格式的 IPv4 地址。
承担主管理员角色,或成为超级用户。
主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
(仅适用于 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 地址和关联名称创建项。
如果必须更改系统的主机名,请在 /etc/nodename 文件中修改主机名项。
在 /etc/inet/hosts 文件或等效 hosts 数据库中修改 IP 地址和主机名(如果适用)。
在 /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 数据库中。
如果已更改子网掩码,请在以下文件中修改子网项:
/etc/netmasks
(可选)/etc/hostname.interface
如果已更改子网地址,请在 /etc/defaultrouter 中将缺省路由器的 IP 地址更改为新子网缺省路由器的 IP 地址。
重新引导系统。
# reboot -- -r |
此示例说明如何更改已移动到其他子网的系统的以下网络参数:
主网络接口 eri0 的 IP 地址从 10.0.0.14 更改为 192.168.55.14。
主机名从 myhost 更改为 mynewhostname。
网络掩码从 255.0.0.0 更改为 255.255.255.0。
缺省路由器地址更改为 192.168.55.200。
查看系统的当前状态:
# 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 |
此示例说明如何仅为当前会话更改主机名、主网络接口的 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 |
此示例说明如何使用 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 网络上为路由器和主机配置转发和路由的过程和示例。
包转发是在网络上的系统之间共享信息的基本方法。包在源接口和目标接口(通常位于两个不同的系统上)之间进行传送。当您发出命令或将消息发送到非本地接口时,系统将那些包转发到本地网络上。然后,具有包头中所指定目标 IP 地址的接口将从本地网络检索包。如果目标地址不在本地网络上,则将包转发到下一个相邻网络或跃点。缺省情况下,在安装 Oracle Solaris : 时自动配置包转发。
路由是系统确定要向何处发送包的过程。系统上的路由协议“搜索”本地网络中的其他系统。当源系统和目标系统位于同一本地网络中时,包在它们之间传送的路径称为直接路由。如果包必须至少传送到源系统之外的一个跃点,则源系统和目标系统之间的路径称为间接路由。路由协议获知目标接口的路径,并将有关已知路由的数据保留在系统的路由表中。
路由器是特别配置的系统,具有用于将路由器连接到多个本地网络的多个物理接口。因此,路由器可以将包转发到主 LAN 之外,而不管路由器是否运行路由协议。有关路由器如何转发包的更多信息,请参阅为网络规划路由器。
路由协议处理系统上的路由活动,并通过与其他主机交换路由信息,维护到远程网络的已知路由。路由器和主机都可以运行路由协议。主机上的路由协议与其他路由器和主机上的路由选择守护进程进行通信。这些协议有助于主机确定向何处转发包。启用网络接口后,系统自动与路由选择守护进程进行通信。这些守护进程监视网络中的路由器,并将路由器的地址通告本地网络中的所有主机。某些路由协议(虽然不是全部)还维护可以用于衡量路由性能的统计信息。与包转发不同,必须在 Oracle Solaris : 系统上显式配置路由。
本节介绍在 IPv4 路由器和主机上管理包转发和路由的任务。有关在启用了 IPv6 的网络中路由的信息,请参阅配置 IPv6 路由器。
路由协议分为内部网关协议 (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 | |
Internet 控制消息协议 (Internet Control Message Protocol, ICMP) 路由器搜索 |
in.routed |
由主机用来搜索网络上存在的路由器 | |
下一代路由信息协议 (Routing Information Protocol next generation, RIPng) |
in.ripngd |
用于路由 IPv6 包和维护路由表的 IGP | |
相邻节点搜索 (Neighbor Discovery, ND) 协议 |
in.ndpd |
通告存在 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 路由协议的自治系统:
该图显示了一个公司网络自治系统,该系统已划分为两个路由域: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 文档。
具有多个路由器和网络的站点通常将其网络拓扑作为单个路由域或自治系统 (autonomous system, AS) 进行管理。下图显示了一个将被视为小型 AS 的典型网络拓扑。在贯穿本节的示例中引用的就是此拓扑。
该图显示了一个已划分为三个本地网络(即 10.0.5.0、172.20.1.0 和 192.168.5)的 AS。四个路由器分担包转发和路由职责。AS 包括以下类型的系统:
边界路由器将 AS 连接到外部网络,如 Internet。边界路由器与在本地 AS 上运行的 IGP 的外部网络互连。边界路由器可以运行 EGP,如边界网关协议 (Border Gateway Protocol, BGP),以与外部路由器(例如 ISP 上的路由器)交换信息。在图 5–3 中,边界路由器的接口连接到内部网络 10.0.5.0 以及服务提供商的高速路由器。
有关配置边界路由器的信息,请参阅适用于 BGP 的 开放源代码 Quagga 文档。
如果计划使用 BGP 将 AS 连接到 Internet,则应该从适用于您语言环境的 Internet 注册机构获取自治系统编号 (autonomous system number, ASN)。区域注册机构,如美国 Internet 编号注册机构 (American Registry for Internet Numbers, ARIN),提供了有关如何获取 ASN 的指导。例如,《ARIN Number Resource Policy Manual》包含有关在美国和加拿大获取自治系统的 ASN 的说明。或者,您的 ISP 也许能够为您获取 ASN。
缺省路由器维护有关本地网络中所有系统的路由信息。这些路由器通常运行 IGP,如 RIP。在图 5–3 中,路由器 1 的接口连接到内部网络 10.0.5.0 和内部网络 192.168.5。路由器 1 还充当 192.168.5 的缺省路由器。路由器 1 维护 192.168.5 中所有系统的路由信息并路由到其他路由器(如边界路由器)。路由器 2 的接口连接到内部网络 10.0.5.0 和内部网络 172.20.1。
有关配置缺省路由器的示例,请参阅示例 5–4。
包转发路由器转发包但不运行路由协议。此类型的路由器从其连接到单个网络的接口之一接收包。然后,这些包通过路由器上的其他接口转发到其他本地网络。在图 5–3 中,路由器 3 是连接到网络 172.20.1 和 192.168.5 的包转发路由器。
多宿主主机具有连接到同一网络段的两个或更多个接口。多宿主主机可以转发包,这是运行 Oracle Solaris : 的所有系统的缺省行为。图 5–3 显示了一个多宿主主机,它的两个接口都连接到网络 192.168.5。有关配置多宿主主机的示例,请参阅示例 5–6。
单接口主机不仅在包转发方面而且在接收重要配置信息方面依赖于本地路由器。图 5–3 包含 192.168.5 网络中实现动态路由的主机 A 和 172.20.1 网络中实现静态路由的主机 B。要将主机配置为运行动态路由,请参阅如何在单接口主机上启用动态路由。要将主机配置为运行静态路由,请参阅如何在单接口主机上启用静态路由。
本节包含配置 IPv4 路由器的过程和示例。要配置启用了 IPv6 的路由器,请参阅如何配置启用了 IPv6 的路由器。
由于路由器提供两个或多个网络之间的接口,因此必须为路由器的每个物理网络接口指定唯一名称和 IP 地址。这样,每个路由器都有与其主网络接口关联的主机名和 IP 地址,以及其他每个网络接口的至少一个唯一名称和 IP 地址。
也可以使用以下过程将只有一个物理接口的系统(缺省情况下为主机)配置为路由器。如果单接口系统将要用作 PPP 链路上的一个端点,则可以将它配置为路由器,如《系统管理指南:网络服务》中的“规划拨号 PPP 链路”所述。
可以在 Oracle Solaris : 系统安装过程中配置路由器的所有接口。有关说明,请参见《Oracle Solaris 10 9/10 安装指南:基本安装》。
以下说明假定要在安装后配置路由器的接口。
在网络中物理安装路由器后,将路由器配置为以本地文件模式运行,如如何以本地文件模式配置主机中所述。此配置可确保即使网络配置服务器关闭路由器也会引导。
在要配置为路由器的系统上,承担主管理员角色或成为超级用户。
主管理员角色拥有主管理员配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
从 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 |
查看在安装过程中配置和检测了路由器上的哪些接口。
# 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 |
# ifconfig interface plumb up |
例如,对于 qfe1,请键入:
# ifconfig qfe1 plumb up |
使用 ifconfig 命令显式配置的接口在重新引导后不会继续存在。
将 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。
(可选)要确保在重新引导后接口配置继续存在,请为其他每个物理接口创建 /etc/hostname.interface 文件。
例如,请创建 /etc/hostname.qfe1 和 /etc/hostname.qfe2 文件。然后在 /etc/hostname.qfe1 文件中键入主机名 timbuktu,在 /etc/hostname.qfe2 中键入主机名 timbuktu-201。有关配置单个接口的更多信息,请参阅如何在安装系统后配置物理接口。
在创建此文件后,务必进行配置重新引导:
# reboot -- -r |
向 /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 |
接口 timbuktu 和 timbuktu-201 位于同一系统上。请注意,timbuktu-201 的网络地址与 timbuktu 的网络接口不同。之所以不同,是因为网络 192.168.201 的物理网络介质已连接到 timbuktu-201 网络接口,而网络 192.168.200 的介质已连接到 timbuktu 接口。
(仅适用于 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 |
如果路由器连接到划分为多个子网的任何网络,请将网络号和网络掩码添加到 /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 |
在路由器上启用 IPv4 包转发。
使用以下命令之一启用包转发:
使用 routeadm 命令,如下所示:
# routeadm -e ipv4-forwarding -u |
使用以下服务管理工具 (service management facility, SMF) 命令:
# svcadm enable ipv4-forwarding |
此时,路由器可以将包转发到本地网络之外。路由器还支持静态路由(可以将路由手动添加到路由表的过程)。如果计划在此系统上使用静态路由,则路由器配置已完成。但是,需要在系统路由表中维护路由。有关添加路由的信息,请参见配置路由和 route(1M) 手册页。
(可选)启动路由协议。
路由选择守护进程 /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–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 的缺省路由器配置尚未完成。您需要执行以下操作:
修改 172.10.1.10 中的每个主机,以便主机从新的缺省路由器获取其路由信息。有关更多信息,请参阅如何在单接口主机上启用静态路由。
在路由器 2 的路由表中定义边界路由器的静态路由。有关更多详细信息,请参阅路由表和路由类型。
路由器和主机都维护路由表。每个系统上的路由选择守护进程都使用所有的已知路由来更新该表。在将包转发到本地网络之前,系统的内核读取路由表。路由表列出了系统知晓的网络的 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 网络实现动态路由,请使用 routeadm 或 svcadm 命令启动 in.routed 路由选择守护进程。有关说明,请参见如何配置 IPv4 路由器。动态路由是大多数网络和自治系统的首选策略。但是,您的网络拓扑或您网络中的特定系统可能需要静态路由。在该情况下,必须手动编辑系统路由表,向网关反映已知路由。接下来的过程说明如何添加静态路由。
到同一目标的两个路由不会自动导致系统进行负载平衡或故障转移。如果需要这些功能,请使用 IPMP,如第 30 章中所述。
使用常规用户帐户运行以下形式的 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 章 “使用 Solaris Management Console(任务)”。
(可选)刷新路由表中的现有项。
# route flush |
添加一个在系统重新引导后继续存在的路由。
# route -p add -net network-address -gateway gateway-address |
创建一个在系统重新引导后必须继续存在的路由。如果希望路由仅对当前会话有效,则不要使用 -p 选项。
指示将要添加以下路由。
指定路由将转到具有 network-address 中地址的网络。
指示指定路由的网关系统具有 IP 地址 gateway-address。
以下示例说明如何将静态路由添加到系统。该系统是路由器 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 包。但是,您可以将多宿主主机配置为运行路由协议。通常,可以将以下类型的系统配置为多宿主主机:
可以将 NFS 服务器(尤其是用作大型数据中心的那些服务器)连接到多个网络,以便在大量用户之间共享文件。这些服务器无需维护路由表。
数据库服务器可以具有多个网络接口,从而可为大量用户提供资源,就像 NFS 服务器那样。
防火墙网关是连接公司网络和公共网络(如 Internet)的系统。管理员将设置防火墙作为一项安全措施。当配置为防火墙时,主机不在连接到主机接口的网络之间传递包。但是,主机仍可以为授权用户提供标准 TCP/IP 服务,如 ssh。
当多宿主主机在其任一接口上具有不同类型的防火墙时,请小心谨慎以免无意中中断主机的包。对于有状态防火墙,尤其容易出现此问题。针对此问题的一种解决方案是配置无状态防火墙。有关防火墙的更多信息,请参阅《系统管理指南:安全性服务》中的“防火墙系统”或第三方防火墙的相应文档。
在预期的多宿主主机上,承担主管理员角色或成为超级用户。
主管理员角色拥有主管理员配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
配置并检测在 Oracle Solaris : 安装过程中没有配置的其他每个网络接口。
请参阅如何在安装系统后配置物理接口。
# 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" |
如果在系统上启用了包转发,请禁用它。
使用以下命令之一:
对于 routeadm 命令,请键入以下内容:
# routeadm -d ipv4-forwarding -u |
要使用 SMF,请键入以下内容:
# svcadm disable ipv4-forwarding |
(可选)为多宿主主机打开动态路由。
使用以下命令之一打开 in.routed 守护进程:
对于 routeadm 命令,请键入以下内容:
# routeadm -e ipv4-routing -u |
要使用 SMF,请键入以下内容:
# svcadm enable route:default |
以下示例说明如何配置图 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 将成为多宿主主机。
单接口主机需要实现某种形式的路由。如果主机要从一个或多个本地缺省路由器获取其路由,则必须将该主机配置为使用静态路由。否则,建议对该主机使用动态路由。以下过程包含启用这两种路由类型的说明。
以下过程可在单接口主机上启用静态路由。使用静态路由的主机不运行动态路由协议(如 RIP)。相反,主机必须依赖于缺省路由器的服务来获取路由信息。IPv4 自治系统拓扑图显示了几个缺省路由器及其客户机主机。如果在安装特定主机时提供了缺省路由器的名称,则该主机已经配置为使用静态路由。
也可以使用以下过程在多宿主主机上配置静态路由。
有关 /etc/defaultrouter 文件的信息,请参见/etc/defaultrouter 文件。有关静态路由和路由表的信息,请参阅路由表和路由类型。
在单接口主机上,承担主管理员角色或成为超级用户。
主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
验证主机上是否存在 /etc/defaultrouter 文件。
# cd /etc # ls | grep defaultrouter |
打开文本编辑器以创建或修改 /etc/defaultrouter 文件。
添加缺省路由器的项。
# vi /etc/defaultrouter router-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" |
在本地 /etc/inet/hosts 文件中添加缺省路由器的项。
有关配置 /etc/inet/hosts 的信息,请参阅如何更改 IPv4 地址和其他网络配置参数。
以下示例说明如何为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 |
动态路由是管理主机上路由的最简单的方法。使用动态路由的主机运行由 IPv4 的 in.routed 守护进程或 IPv6 的 in.ripngd 守护进程提供的路由协议。使用接下来的过程在单接口主机上启用 IPv4 动态路由。有关动态路由的更多信息,请参阅IPv4 网络上的包转发和路由。
在主机上,承担主管理员角色或成为超级用户。
主管理员角色拥有主管理员配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
# cd /etc # ls | grep defaultrouter |
如果存在 /etc/defaultrouter,则删除在该文件中找到的所有项。
/etc/defaultrouter 文件为空会强制主机使用动态路由。
验证是否在主机上启用了包转发和路由。
# 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" |
如果启用了包转发,请将其关闭
使用以下命令之一:
对于 routeadm 命令,请键入以下内容:
# routeadm -d ipv4-forwarding -u |
要使用 SMF,请键入以下内容:
# svcadm disable ipv4-forwarding |
使用以下命令之一:
对于 routeadm 命令,请键入以下内容:
# routeadm -e ipv4-routing -u |
要使用 SMF,请键入以下内容:
# svcadm enable route:default |
现在已启用 IPv4 动态路由。主机的路由表是由 in.routed 守护进程动态维护的。
以下示例说明如何为图 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 服务守护进程。
涉及传输层协议的操作包括:
记录所有的传入 TCP 连接
添加通过传输层协议(例如 SCTP)运行的服务
为访问控制配置 TCP 包装工具
有关 inetd 守护进程的详细信息,请参阅 inetd(1M) 手册页。
在本地系统上,承担网络管理角色或成为超级用户。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
对于 inetd 管理的所有服务,将 TCP 跟踪设置为“启用”。
# inetadm -M tcp_trace=TRUE |
SCTP 传输协议以与 TCP 类似的方式为应用层协议提供服务。但是,SCTP 允许单方或双方为多宿主系统的两个系统进行通信。SCTP 连接称为关联。在关联中,应用程序将要传输的数据分为一个或多个消息流,即多流化。SCTP 连接可以转到有多个 IP 地址的端点,这对电话应用程序尤其重要。如果站点使用 IP 过滤器或 IPsec,则 SCTP 的多宿主功能是出于安全考虑。sctp(7P) 手册页介绍了其中一些安全方面的考虑。
缺省情况下,SCTP 包括在 Oracle Solaris : 中,且不需要其他配置。但是,可能需要显式配置某些应用层服务才能使用 SCTP。echo 和 discard 就是这样的应用程序。下一过程说明如何添加使用 SCTP 一对一样式套接字的回显服务。
也可以使用以下过程为 TCP 和 UDP 传输层协议添加服务。
以下任务说明如何将 inetd 守护进程管理的 SCTP inet 服务添加到 SMF 系统信息库。然后,该任务说明如何使用服务管理工具 (Service Management Facility, SMF) 命令添加该服务。
有关 SMF 命令的信息,请参阅《系统管理指南:基本管理》中的“SMF 命令行管理实用程序”。
有关语法信息,请参阅该过程中所引用的 SMF 命令的手册页。
有关 SMF 的详细信息,请参阅 smf(5) 手册页。
执行以下过程之前,请为服务创建清单文件。该过程以 echo 服务的清单 echo.sctp.xml 为例。
使用拥有系统文件的写入权限的用户帐户,登录到本地系统。
编辑 /etc/services 文件并添加新服务的定义。
service-name |port/protocol | aliases |
添加新服务。
转到存储服务清单的目录,然后键入以下内容:
# 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 |
验证是否已添加服务清单:
# 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) 手册页。
该输出指明,新的服务清单当前处于禁用状态。
列出服务的属性以确定是否必须进行修改。
# 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 |
启用新服务:
# inetadm -e FMRI |
验证服务是否已启用:
例如,对于新的 echo 服务,应键入以下内容:
# inetadm | grep sctp_stream . . enabled online svc:/network/echo:sctp_stream |
以下示例给出要使用的命令以及使回显服务使用 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 |
tcpd 程序可实现 TCP 包装。TCP 包装介于守护进程和传入的服务请求之间,为诸如 ftpd 之类的服务守护进程提供了安全措施。TCP 包装记录成功的和不成功的连接尝试。此外,TCP 包装可以提供访问控制,根据发出请求的位置允许或拒绝连接。可以使用 TCP 包装保护诸如 SSH、Telnet 和 FTP 之类的守护进程。sendmail 应用程序也可以使用 TCP 包装,如《系统管理指南:网络服务》中的“sendmail 版本 8.12 支持 TCP 包装”所述。
在本地系统上,承担主管理员角色或成为超级用户。
主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
将 TCP 包装设置为“启用”。
# inetadm -M tcp_wrappers=TRUE |
配置 TCP 包装访问控制策略,如 hosts_access(3) 手册页中所述。
此手册页可以在 SFW CD-ROM(它与 Oracle Solaris : CD-ROM 一起打包)上的 /usr/sfw/man 目录中找到。
本节介绍用于管理物理接口的以下任务:
在安装系统后添加物理接口
将虚拟局域网 (virtual local area network, VLAN) 添加到网络适配器
本节包含有关配置接口的信息,仅适用于 Solaris 10 3/05 OS 用户。如果使用的是对 Oracle Solaris 10 的更新,请参阅Chapter 6, 管理网络接口(任务)。有关 Oracle Solaris : 新增功能的完整列表以及 Oracle Solaris : 发行版的说明,请参见《Oracle Solaris 10 9/10 新增功能》。
基于 Oracle Solaris : 的系统通常有以下两种类型的接口:物理接口和逻辑接口。物理接口由驱动程序和其中插入网络介质(如以太网电缆)的连接器组成。逻辑接口是在现有物理接口上逻辑配置的接口,如为隧道配置的接口或使用 IPv6 地址配置的接口。本节介绍如何在安装后配置物理接口。对于需要逻辑接口的功能,相关任务附带有配置逻辑接口的说明,例如如何手动配置 IPv6 over IPv4 隧道。
物理接口的类型包括内置到系统中的接口和另行购买的接口。每个接口都驻留在网络接口卡 (network interface card, NIC) 上。
内置 NIC 在购买系统时已经存在于系统上。内置 NIC 上的接口的一个示例是主网络接口,如 eri0 或 hme0。必须在安装时配置系统的主网络接口。
诸如 eri 和 hme 之类的 NIC 只有一个接口。但是,许多品牌的 NIC 有多个接口。多接口 NIC(如 qfe 卡)有四个接口 (qfe0 – qfe3)。Oracle Solaris : 安装程序在安装时会检测存在的所有接口,并询问您是否要配置这些接口。可以在引导时或之后配置这些接口。
NIC 也称为网络适配器。
除了内置 NIC 外,还可以向系统中添加另行购买的 NIC。按照制造商的说明物理安装另行购买的 NIC。然后,需要配置 NIC 上的接口,以便可以使用这些接口传递数据流。
以下是安装后在系统上配置其他接口的原因:
希望升级系统以使其成为多宿主主机。有关多宿主主机的更多信息,请参阅配置多宿主主机。
希望将主机更改为路由器。有关配置路由器的说明,请参阅配置 IPv4 路由器。
希望将接口添加到 IPMP 组。有关 IPMP 组中接口的信息,请参阅IPMP 接口配置。
要配置的物理接口必须存在于系统上。有关安装另行购买的 NIC 硬件的信息,请参阅 NIC 附带的制造商说明。
下一过程假定在物理安装新接口后执行了重新配置引导。
下一过程仅适用于 Solaris 10 3/05 OS 用户。如果使用的是对 Oracle Solaris 10 的更新,请参阅如何在安装系统后配置物理接口。
在要配置接口的系统上,承担主管理员角色或成为超级用户。
主管理员角色拥有主管理员配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
# ifconfig interface plumb up |
例如,对于 qfe0,请键入:
# ifconfig qfe0 plumb up |
使用 ifconfig 命令显式配置的接口在重新引导后不会继续存在。
将 IPv4 地址和网络掩码指定给接口。
# ifconfig interface IPv4-address netmask+netmask |
例如,对于 qfe0,请键入:
# ifconfig qfe0 10.0.0.32 netmask + 255.255.255.0 |
验证新配置的接口是否已检测并配置,或者是否带有 "UP" 标志。
# ifconfig -a |
检查所显示的每个接口的状态行。确保状态行上的输出包含 UP 标志,例如:
qfe0: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2 |
(可选)要使接口配置在重新引导后继续存在,请执行以下步骤:
为要配置的每个接口创建 /etc/hostname.interface 文件。
例如,要添加 qfe0 接口,请创建以下文件:
# vi /etc/hostname.qfe0 |
编辑 /etc/hostname.interface 文件。
至少将接口的 IPv4 地址添加到该文件。还可以将网络掩码和其他配置信息添加到该文件。
有关如何将 IPv6 地址添加到接口,请参阅修改主机和服务器的 IPv6 接口配置。
将新接口的项添加到 /etc/inet/hosts 文件中。
执行重新配置引导。
# reboot -- -r |
验证是否已配置在 /etc/hostname. interface 文件中创建的接口。
# ifconfig -a |
以下示例说明如何添加两个接口 qfe0 和 qfe1。这些接口已连接到主网络接口 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 |
有关如何在接口上配置 IPv6 地址,请参阅如何启用当前会话的 IPv6 接口。
有关如何使用网络多路径 (Network Multipathing, IPMP) 设置接口的故障转移检测和故障恢复,请参阅第 31 章。
下一过程仅适用于 Solaris 10 3/05 OS 用户。如果使用的是对 Oracle Solaris 10 的更新,请参阅如何删除物理接口。
在要删除接口的系统上,承担主管理员角色或成为超级用户。
主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
删除物理接口。
使用 ifconfig 命令的以下格式:
# ifconfig interfacedown unplumb |
例如,以下命令将删除接口 eri1:
# ifconfig eri1 down unplumb |
本节包含有关配置 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 之间。对于每个网络接口(例如 ce0、ce1、ce2 等),可以创建 512 个可能的 VLAN。由于通常使用 IP 子网,因此在设置 VLAN 网络接口时应使用 IP 子网。这意味着为物理网络接口的 VLAN 接口指定的每个 VID 都属于不同的子网。
标记以太网帧要求将标记头添加到帧。该头紧邻目标 MAC 地址和源 MAC 地址之后插入。标记头由两字节的以太网标记协议标识符 (Ethernet Tag Protocol Identifier, TPID, 0x8100) 和两字节的标记控制信息 (Tag Control Information, TCI) 组成。下图显示以太网标记头的格式。
此过程包含有关配置 VLAN 的信息,仅适用于 Solaris 10 3/05 OS 用户。如果使用的是对 Oracle Solaris 10 的更新,请参阅如何配置 VLAN。
承担主管理员角色,或成为超级用户。
主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
确定正在系统上使用的接口的类型。
系统上的网络适配器可能不是用字母 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 |
对于将为服务器上的每个适配器配置的每个 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)的服务器上,可以将 ce123000 和 ce224000 分别用作两个 VLAN PPA。
例如,可以使用 ifconfig 的以下示例:
# ifconfig ce123000 plumb up # ifconfig ce224000 plumb up |
在有 VLAN 设备 ce123000 和 ce224000 的系统上,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 |
在交换机上,将 VLAN 标记和 VLAN 端口设置为与在服务器上设置的 VLAN 一致。
使用步骤 4 中的示例,可以设置交换机上的 VLAN 端口 123 和 224 或者 VLAN 端口 10 和 11。
有关设置 VLAN 标记和端口的特定说明,请参阅交换机附带的文档。
本章包含有关网络接口的任务和信息:
本章中的信息介绍从 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 中,引入了以下新功能:
在如何在安装系统后配置物理接口中,介绍了用于查看接口状态的新增 dladm 命令。
VLAN 支持已扩展到 GLDv3 接口,如管理虚拟局域网所述。
在链路聚合概述中介绍了链路聚合支持。
在 Solaris 10 7/07 中,/etc/inet/ipnodes 已过时。只能对早期 Solaris 10 发行版使用 /etc/inet/ipnodes,如以下各个过程中所述。
下表列出了配置网络接口的各种任务,包括 VLAN 和链路聚合等特殊配置。此表中包含对各项任务要完成的工作的说明,以及当前文档中详细介绍用于执行任务的特定步骤的章节。
任务 |
说明 |
参考 |
---|---|---|
检查系统上接口的状态。 |
列出系统上的所有接口,并检查已检测哪些接口。 | |
在安装系统后添加单个接口。 |
通过配置其他接口将系统更改为多宿主主机或路由器。 | |
SPARC: 检查接口的 MAC 地址是否唯一。 |
确保接口是使用其出厂安装的 MAC 地址而不是系统 MAC 地址(仅限 SPARC)配置的。 | |
规划虚拟局域网 (Virtual Local Area Network, VLAN)。 |
在创建 VLAN 之前执行必要的规划任务。 | |
配置 VLAN。 |
在网络上创建和修改 VLAN。 | |
计划聚合。 |
在配置聚合前先设计聚合并执行必要的规划任务。 | |
配置聚合。 |
执行各种与链路聚合相关的任务。 | |
规划并配置 IPMP 组。 |
为属于 IPMP 组的接口配置故障转移和故障恢复。 |
安装 Oracle Solaris : 后,您可能会在系统上配置或管理接口以达到以下目的:
升级系统使其成为多宿主主机。有关更多信息,请参阅配置多宿主主机。
将主机更改为路由器。有关配置路由器的说明,请参阅配置 IPv4 路由器。
将接口配置为 VLAN 的一部分。有关更多信息,请参阅管理虚拟局域网。
将接口配置为聚合的成员。有关更多信息,请参阅链路聚合概述。
将接口添加到 IPMP 组。有关配置 IPMP 组的说明,请参阅配置 IPMP 组。
本节包含有关配置单个网络接口的信息(从 Solaris 10 1/06 发行版开始)。有关将接口配置到以下分组之一的信息,请参阅以下各节:
从 Solaris 10 1/06 开始,此过程说明如何确定系统上当前可用的接口及其状态。此过程还显示当前已检测哪些接口。如果使用的是早期的 Solaris 10 3/05,请参阅如何获取有关特定接口的信息。
在要配置接口的系统上,承担主管理员角色或成为超级用户。
主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
确定当前在系统上安装了哪些接口。
# dladm show-link |
此步骤使用 dladm 命令(该命令在 dladm(1M) 手册页中详述)。此命令报告它找到的所有接口驱动程序,而不管接口当前是否已配置。
确定当前在系统上已检测哪些接口。
# ifconfig -a |
ifconfig 命令具有许多附加功能,其中包括检测接口。有关更多信息,请参阅 ifconfig(1M) 手册页。
以下示例说明 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 配置 ce 和 bge 接口。但是,只有非 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 命令的输出仅显示两个接口(ce0 和 bge0)的统计信息。此输出说明仅检测了 ce0 和 bge0,而且它们可以由网络通信流量使用。可以在 VLAN 中使用这些接口。由于已检测 bge0,无法在聚合中再使用此接口。
使用下一过程来配置接口。如果使用的是 Solaris 10 3/05 发行版,则应使用如何在安装后添加物理接口(仅适用于 Solaris 10 3/05)中的过程。
确保要配置的物理接口已安装在系统上。有关安装另行购买的 NIC 硬件的信息,请参阅 NIC 附带的制造商说明。
如果刚安装了接口,则在继续下一任务之前应执行重新配置引导。
在要配置接口的系统上,承担主管理员角色或成为超级用户。
主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
确定当前在系统上安装了哪些接口。
# dladm show-link |
# ifconfig interface plumb up |
例如,对于 qfe0,请键入:
# ifconfig qfe0 plumb up |
使用 ifconfig 命令显式配置的接口在重新引导后不会继续存在。
将 IPv4 地址和网络掩码指定给接口。
# ifconfig interface IPv4-address netmask+netmask |
例如,对于 qfe0,请键入:
# ifconfig qfe0 192.168.84.3 netmask + 255.255.255.0 |
可以使用传统的 IPv4 表示法或 CIDR 表示法指定 IPv4 地址。
验证新配置的接口是否已检测并配置,或者是否带有 "UP" 标志。
# ifconfig -a |
检查所显示的每个接口的状态行。确保状态行上的输出包含 UP 标志,例如:
qfe0: flags=1000843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2 |
(可选)要使接口配置在重新引导后继续存在,请执行以下步骤:
为要配置的每个接口创建 /etc/hostname.interface 文件。
例如,要添加 qfe0 接口,请创建以下文件:
# vi /etc/hostname.qfe0 |
如果为同一接口创建备用主机名文件,则备用文件也必须遵循命名格式 hostname.[0-9]*,如 hostname.qfe0.a123。诸如 hostname.qfe0.bak 或 hostname.qfe0.old 之类的名称无效,且会在系统引导期间被脚本忽略。
也请注意,一个给定的接口只能有一个相应的主机名文件。如果用有效的文件名为接口创建一个备用主机名文件,例如 /etc/hostname.qfe 和 /etc/hostname.qfe.a123,则引导脚本会尝试同时引用这两个主机名文件的内容来进行配置,因而会产生错误。要避免这些错误,请为给定配置中不使用的主机名文件使用无效的文件名。
编辑 /etc/hostname.interface 文件。
至少将接口的 IPv4 地址添加到该文件。可以使用传统的 IPv4 表示法或 CIDR 表示法指定接口的 IP 地址。还可以将网络掩码和其他配置信息添加到该文件。
有关如何将 IPv6 地址添加到接口,请参阅修改主机和服务器的 IPv6 接口配置。
对于 Solaris 10 11/06 和 Oracle Solaris 10 的早期发行版,将新接口的项添加到 /etc/inet/ipnodes 文件中。
将新接口的项添加到 /etc/inet/hosts 文件中。
执行重新配置引导。
# reboot -- -r |
验证是否已配置在 /etc/hostname. interface 文件中创建的接口。
# ifconfig -a |
有关示例,请参阅示例 6–2。
该示例说明如何将接口 qfe0 和 qfe1 配置为主机。这些接口在重新引导后仍继续存在。
# 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 |
有关如何在接口上配置 IPv6 地址,请参阅如何启用当前会话的 IPv6 接口。
有关如何使用 IP 网络多路径 (IP Network Multipathing, IPMP) 为接口设置故障转移检测和故障恢复,请参阅第 31 章。
使用此过程可删除物理接口。如果使用的是早期的 Solaris 10 3/05,请参阅如何删除物理接口(仅适用于 Solaris 10 3/05)。
在要删除接口的系统上,承担主管理员角色或成为超级用户。
主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
删除物理接口。
# ifconfig interface down unplumb |
例如,要删除接口 qfe1,可键入:
# ifconfig qfe1 down unplumb |
使用此过程配置 MAC 地址。
一些应用程序要求主机上的每个接口都具有唯一的 MAC 地址。但是,每个基于 SPARC 的系统都具有系统范围的 MAC 地址,缺省情况下所有接口都使用该地址。以下是在 SPARC 系统上可能希望为接口配置出厂安装的 MAC 地址的两种情况。
对于链路聚合,应该在聚合配置中使用接口的出厂设置 MAC 地址。
对于 IPMP 组,组中的每个接口都必须具有唯一的 MAC 地址。这些接口必须使用其出厂安装的 MAC 地址。
EEPROM 参数 local-mac-address? 确定 SPARC 系统上的所有接口使用系统范围的 MAC 地址还是其唯一 MAC 地址。以下过程说明如何使用 eeprom 命令检查 local-mac-address? 的当前值以及更改它的值(如有必要)。
在要配置接口的系统上,承担主管理员角色或成为超级用户。
主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
确定系统上的所有接口当前是否都使用系统范围的 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。
如有必要,请按如下所示更改 local-mac-address? 的值:
# eeprom local-mac-address?=true |
重新引导系统时,具有出厂安装的 MAC 地址的接口现在使用这些出厂设置,而不是系统范围的 MAC 地址。没有出厂设置的 MAC 地址的接口继续使用系统范围的 MAC 地址。
检查系统上所有接口的 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 地址时,才继续执行下一步。否则,转到最后一步。
如有必要,请手动配置其余的接口,以便所有接口都具有唯一的 MAC 地址。
在 /etc/hostname.interface 文件中为特定接口指定唯一的 MAC 地址。
在步骤 4 的示例中,需要用本地管理的 MAC 地址配置 ce0 和 ce1。例如,要用本地管理的 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) 手册页。
重新引导系统。
网络接口提供系统和网络之间的连接。基于 Oracle Solaris : 的系统可以具有两种类型的接口:物理接口和逻辑接口。物理接口由软件驱动程序和连接网络介质(如以太网电缆)的连接器组成。可以对物理接口进行分组,以达到管理性或可用性目的。逻辑接口是在现有物理接口上配置的,通常用于在物理接口上添加地址和创建隧道端点。
逻辑网络接口在使用它们的任务 (如 IPv6 任务、IPMP 任务、DHCP 任务和其他任务)中说明。
大多数计算机系统至少有一个由制造商在主系统板上内置的物理接口。一些系统也可能具有多个内置接口。
除了内置接口外,您可以向系统添加另行购买的接口。另行购买的接口称为网络接口卡 (network interface card, NIC)。应按照制造商的说明安装 NIC。
NIC 也称为网络适配器。
在系统安装过程中,Oracle Solaris : 安装程序检测物理安装的任何接口并显示每个接口的名称。至少必须配置接口列表中的一个接口。在安装过程中配置的第一个接口成为主网络接口。主网络接口的 IP 地址与系统的已配置主机名(存储在 /etc/nodename 文件中)关联。但是,可以在安装过程中或稍后配置任何其他接口。
每个物理接口都由唯一的设备名称标识。设备名称的语法如下:
<driver-name><instance-number> |
Oracle Solaris : 系统上的驱动程序名称可能包括 ce、hme、bge、e1000g 和许多其他驱动程序名称。变量 instance-number 可以具有从零到 n 的值,具体取决于在系统上安装了多少个该驱动程序类型的接口。
以 100BASE-TX 快速以太网接口为例,该接口通常用作主机系统和服务器系统上的主网络接口。此接口的一些典型驱动程序名称是 eri、qfe 和 hme。在用作主网络接口时,快速以太网接口具有诸如 eri0 或 qfe0 之类的设备名称。
诸如 eri 和 hme 之类的 NIC 只有一个接口。但是,许多品牌的 NIC 有多个接口。例如,Quad 快速以太网 (qfe) 卡具有四个接口:从 qfe0 到 qfe3。
必须先对接口进行检测,之后它才能在系统和网络之间传递通信流量。检测过程涉及将接口与设备名称进行关联。然后,设置流以使 IP 协议可以使用该接口。物理接口和逻辑接口都必须进行检测。使用 ifconfig 命令的适当语法,作为引导序列的一部分或显式地检测接口。
在安装过程中配置接口时,将自动检测该接口。如果在安装过程中决定不在系统上配置其他接口,则不会检测这些接口。
从 Solaris 10 1/06 发行版开始,Oracle Solaris : 支持以下两种类型的接口:
传统接口-这些接口是 DLPI 接口和 GLDv2 接口。一些传统接口类型是 eri、qfe 和 ce。使用 dladm show-link 命令检查接口状态时,这些接口将被报告为“传统”。
非 VLAN 接口-这些接口是 GLDv3 接口。
目前以下接口类型支持 GLDv3: bge、xge 和 e1000g。
如果使用的是早期的 Solaris 10 3/05,请参阅配置 VLAN(仅适用于 Solaris 10 3/05)。
虚拟局域网 (virtual local area network, VLAN) 是在 TCP/IP 协议栈的数据链路层上对局域网的细分。可以为采用交换机技术的局域网创建 VLAN。通过将用户组指定给 VLAN,可以加强整个本地网络的网络管理和安全性。还可以将同一系统上的接口指定给不同的 VLAN。
如果需要实现以下目的,请考虑将本地网络划分为多个 VLAN:
创建工作组的逻辑分区。
例如,假定某楼层的所有主机都连接到一个基于交换的本地网络。可以为该楼层的每个工作组创建单独的 VLAN。
对各个工作组强制实施不同的安全策略。
例如,财务部和信息技术部的安全需求大不相同。如果这两个部门的系统共享同一本地网络,则可以为每个部门创建单独的 VLAN。然后,基于每个 VLAN 强制实施适当的安全策略。
将工作组拆分为易管理的广播域。
使用 VLAN 可减小广播域的大小并提高网络效率。
使用交换 LAN 技术,可以将本地网络中的系统组织到 VLAN 中。将本地网络划分为 VLAN 之前,必须先获取支持 VLAN 技术的交换机。可以对交换机上的所有端口进行配置,使其为单个 VLAN 或多个 VLAN 提供服务,具体取决于 VLAN 拓扑设计。配置交换机端口的过程因交换机制造商而异。
下图显示了子网地址为 192.168.84.0 的局域网。此 LAN 已细分为三个 VLAN:红 VLAN、黄 VLAN 和蓝 VLAN。
LAN 192.168.84.0 上的连通性由交换机 1 和交换机 2 处理。红 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 的多台主机。两台主机属于同一个 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 比较合适。
有关此类拓扑的基本示例,请参阅图 6–1。
创建 VID 的编号方案,并将 VID 指定给每个 VLAN。
VLAN 编号方案可能已存在于网络中。如果是这样,则必须在现有的 VLAN 编号方案中创建 VID。
在每个系统上,确定哪些接口将是特定 VLAN 的成员。
并非系统上的所有接口都一定要在同一 VLAN 上进行配置。
检查接口与网络交换机的连接。
记下每个接口的 VID 以及每个接口所连接到的交换机端口。
用与所连接到的接口相同的 VID 配置交换机的每个端口。
有关配置说明,请参阅交换机制造商的文档。
如果使用的是早期的 Solaris 10 3/05,请参阅配置 VLAN(仅适用于 Solaris 10 3/05)。
目前,Oracle Solaris : 在以下接口类型上支持 VLAN:
ce
bge
xge
e1000g
对于传统接口类型,只有 ce 接口可以成为 VLAN 的成员。可以在同一 VLAN 中配置不同类型的接口。
可以配置多个 VLAN 到 IPMP 组中。有关 IPMP 组的更多信息,请参阅IPMP 接口配置。
如果使用的是 Solaris 10 3/05,则应使用如何配置静态 VLAN(仅适用于 Solaris 10 3/05)中的过程。
承担主管理员角色,或成为超级用户。
主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
确定正在系统上使用的接口的类型。
# 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 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,就像您对其他接口所执行的那样。
(可选)要使 VLAN 设置在重新引导后继续存在,请为配置为 VLAN 的一部分的每个接口创建 hostname.interface-PPA 文件。
# cat hostname.interface-PPA IPv4-address |
在交换机上,设置 VLAN 标记和 VLAN 端口,使之与在系统上设置的 VLAN 相对应。
此示例说明如何将设备 bge1 和 bge2 配置到 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 链路聚合标准提供了一种方法,可将多个全双工以太网链路的容量组合到单个逻辑链路中。然后此链路聚合组被视为单个链路,实际上也是这样。
增加了带宽-将多个链路的容量组合到一个逻辑链路中。
自动故障转移/故障恢复-将来自故障链路的通信转移到聚合中的工作链路。
负载平衡-传入和外发通信都是根据用户选择的负载平衡策略(如源和目标 MAC 或 IP 地址)进行分配的。
支持冗余-可以使用并行聚合来配置两个系统。
改进了管理-所有接口作为一个单元进行管理。
减少了网络地址池消耗-可以将一个 IP 地址指定给整个聚合。
基本链路聚合拓扑涉及由一组物理接口组成的单个聚合。在以下情况下,可能使用基本链路聚合:
对于运行具有分布式大通信流量的应用程序的系统,可以将聚合专用于该应用程序的通信流量。
对于具有有限的 IP 地址空间但仍需要很大带宽的站点,大的接口聚合仅需要一个 IP 地址。
对于需要隐藏内部接口的存在的站点,聚合的 IP 地址对外部应用程序隐藏其接口。
图 6–3 显示了承载常见 Web 站点的服务器的聚合。该站点需要增加带宽以满足 Internet 用户和站点数据库服务器之间的查询通信流量。出于安全目的,必须对外部应用程序隐藏服务器上各个接口的存在。解决方案是使用 IP 地址为 192.168.50.32 的聚合 aggr1。此聚合由三个接口(bge0 至 bge2)组成。这些接口专用于发出通信流量以响应用户查询。来自所有接口的包流量上的传出地址是aggr1 的 IP 地址,即 192.168.50.32。
图 6–4 描述具有两个系统的本地网络,其中每个系统都配置了一个聚合。这两个系统由交换机连接在一起。如果需要通过交换机运行聚合,则该交换机必须支持聚合技术。对于高可用性和冗余系统,此类型的配置尤其有用。
在该图中,系统 A 具有的聚合由两个接口(即 bge0 和 bge1)组成。这些接口通过聚合端口连接到交换机。系统 B 具有的聚合由四个接口(即 e1000g0 至 e1000g3)组成。这些接口也连接到交换机上的聚合端口。
背对背链路聚合拓扑涉及两个单独的系统,这两个系统通过电缆直接互连,如下图所示。这两个系统运行并行聚合。
在此图中,系统 A 上的设备 bge0 直接链接到系统 B 上的 bge0,依此类推。这样,系统 A 和 B 可以支持冗余和高可用性,以及这两个系统之间的高速通信。每个系统还将接口 ce0 配置为用于本地网络内的通信流。
背对背链路聚合最常见的应用是镜像数据库服务器。这两个服务器需要一起更新,因此需要很大的带宽、高速通信流和可靠性。最常使用背对背链路聚合的是数据中心。
如果计划使用链路聚合,请考虑定义传出通信的策略。此策略可以指定希望如何在聚合的可用链路之间分配包,从而建立负载平衡。以下是可能用于聚合策略的层说明符及其意义:
L2-通过散列每个包的 MAC (L2) 头来确定传出链路
L3-通过散列每个包的 IP (L3) 头来确定传出链路
L4-通过散列每个包的 TCP、UDP 或其他 ULP (L4) 头来确定传出链路
这些策略的任意组合也是有效的。缺省策略是 L4。有关更多信息,请参阅 dladm(1M) 手册页。
如果聚合拓扑涉及通过交换机的连接,则必须注意此交换机是否支持链路聚合控制协议 (link aggregation control protocol, LACP)。如果交换机支持 LACP,则必须为交换机和聚合配置 LACP。但是,可以定义运行 LACP 的以下模式之一:
关闭模式-聚合的缺省模式。不生成 LACP 包(称为 LACPDU)。
主动模式-系统按固定的时间间隔(您可以指定该时间间隔)生成 LACPDU。
被动模式-系统仅在从交换机收到 LACPDU 时才生成 LACPDU。如果聚合和交换机均在被动模式下进行配置,则它们无法交换 LACPDU。
有关语法信息,请参见 dladm(1M) 手册页和交换机制造商文档。
链路聚合配置必须符合以下要求:
必须使用 dladm 命令配置聚合。
已检测的接口不能成为聚合的成员。
聚合中的所有接口必须以相同的速度和全双工模式运行。
必须将 EEPROM 参数 local-mac-address? 中的 MAC 地址值设置为 "true"。有关说明,请参阅如何确保接口的 MAC 地址是唯一的。
链路聚合仅对以相同速度运行的全双工点对点链路起作用。确保聚合中的接口符合此要求。
如果要在聚合拓扑中使用交换机,请确保在该交换机上执行了以下操作:
配置了要用作聚合的端口
以主动模式或被动模式配置 LACP(如果交换机支持 LACP)
承担主管理员角色,或成为超级用户。
主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
确定当前在系统上安装了哪些接口。
# dladm show-link |
确定已检测哪些接口。
# ifconfig -a |
# dladm create-aggr -d interface -d interface [...]key |
表示要成为聚合一部分的接口的设备名称。
是标识聚合的编号。最小的密钥编号是 1。不允许将零用作密钥。
例如:
# dladm create-aggr -d bge0 -d bge1 1 |
配置并检测新创建的聚合。
# ifconfig aggrkey plumb IP-address up |
例如:
# 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 |
该输出显示已创建一个密钥为 1、策略为 L4 的聚合。
(可选)使链路聚合的 IP 配置在重新引导后继续存在。
对于具有 IPv4 地址的链路聚合,创建一个 /etc/hostname.aggrkey 文件。对于基于 IPv6 的链路聚合,创建一个 /etc/hostname6.aggrkey 文件。
将链路聚合的 IPv4 或 IPv6 地址输入到该文件中。
例如,您可以为在本过程中创建的聚合创建以下文件:
# vi /etc/hostname.aggr1 192.168.84.14 |
执行重新配置引导。
# reboot -- -r |
验证您在 /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. |
此示例说明用于创建具有两个设备(即 bge0 和 bge1)的链路聚合的命令,以及命令的输出。
# 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 检测。
此过程说明如何对聚合定义进行以下更改:
修改聚合的策略
更改聚合的模式
承担主管理员角色,或成为超级用户。
主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
# dladm modify-aggr -Ppolicy key |
表示策略 L2、L3 和 L4 中的一个或多个,如策略和负载平衡中所述。
是标识聚合的编号。最小的密钥编号是 1。不允许将零用作密钥。
如果 LACP 正运行在聚合中的设备所连接到的交换机上,则修改该聚合使其支持 LACP。
如果交换机在被动模式下运行 LACP,请务必为聚合配置主动模式。
# dladm modify-aggr -l LACP mode -t timer-value key |
指示运行聚合的 LACP 模式。值包括 active、passive 和 off。
指示 LACP 计时器值(short 或 long)。
是标识聚合的编号。最小的密钥编号是 1。不允许将零用作密钥。
此示例说明如何将聚合 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 |
承担主管理员角色,或成为超级用户。
主管理员角色拥有主管理员配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
# dladm remove-aggr -d interface |
此示例说明如何删除聚合 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 |
承担主管理员角色,或成为超级用户。
主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
删除聚合。
# dladm delete-aggr key |
是标识聚合的编号。最小的密钥编号是 1。不允许将零用作密钥。
此示例说明如何删除聚合 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 |
与通过接口配置 VLAN 的方式一样,也可以基于链路聚合创建 VLAN。管理虚拟局域网中对 VLAN 进行了介绍。本节综合介绍了如何配置 VLAN 和链路聚合。
首先使用有效的 IP 地址配置链路聚合。请记下聚合的 key 的值,在通过聚合创建 VLAN 时将需要该值。要创建链路聚合,请参阅如何创建链路聚合。
如果先前已经创建链路聚合,请获取该聚合的密钥。
# dladm show-aggr |
通过链路聚合创建 VLAN。
# ifconfig aggrVIDkey plumb |
其中
VLAN 的 ID
要基于其创建 VLAN 的链路聚合的密钥。密钥必须采用 3 位格式。例如,如果聚合的密钥是 1,那么 VLAN 名称中所包含的密钥号为 001。
重复步骤 2,通过聚合创建其他 VLAN。
使用有效的 IP 地址配置 VLAN。
要创建持久的 VLAN 配置,请将 IP 地址信息添加到相应的 /etc/hostname.VLAN 配置文件。
在此示例中,基于链路聚合配置了两个 VLAN。dladm show-aggr 命令的输出指示链路聚合的密钥是 1。为 VLAN 指定的 VID 分别为 193 和 194。
# 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 |
本章包含在网络上配置 IPv6 需要执行的任务。本章主要包含以下主题:
有关 IPv6 概念的概述,请参阅第 3 章。有关 IPv6 规划任务的信息,请参阅第 4 章。要查找有关本章中的任务的参考信息,请参阅第 11 章。
配置 IPv6 的第一步就是在接口上启用 IPv6。可以在 Oracle Solaris 10 安装过程中启用 IPv6 支持,也可以通过在已安装的系统的接口上配置 IPv6 来启用 IPv6 支持。
在 Oracle Solaris 10 安装过程中,可以在一个或多个系统接口上启用 IPv6。安装之后,与 IPv6 相关的下列文件和表将准备就绪:
针对 IPv6 启用的每个接口现在都有一个与之关联的 /etc/hostname6.interface 文件,如 hostname6.dmfe0。
对于 Solaris 10 11/06 及更早的版本,创建了 /etc/inet/ipnodes 文件。安装之后,此文件通常仅包含 IPv6 和 IPv4 回送地址。
修改了 /etc/nsswitch.conf 文件,以便使用 IPv6 地址进行查找。
创建了 IPv6 地址选择策略表。该表确定通过启用了 IPv6 的接口进行传输时所用 IP 地址格式的优先级。
本节介绍如何在已安装的系统的接口上启用 IPv6。
下表列出了各种配置 IPv6 接口的任务。此表中包含对各项任务要完成的工作的说明,以及当前文档中详细介绍用于执行任务的特定步骤的章节。
任务 |
说明 |
参考 |
---|---|---|
在已经装有 Oracle Solaris 10 的系统的接口上启用 IPv6。 |
使用此任务可以在安装 Oracle Solaris 10 之后在接口上启用 IPv6。 | |
使启用了 IPv6 的接口的配置在重新引导后仍然持保持不变。 |
使用此任务可以使接口的 IPv6 地址成为永久地址。 | |
关闭 IPv6 地址自动配置。 |
如果需要手动配置 IPv6 地址的接口 ID 部分,请使用此任务。 |
开始配置 IPv6 时,请首先在将成为 IPv6 节点的所有系统的接口上启用 IPv6。最初,接口通过自动配置过程获取其 IPv6 地址,如IPv6 地址自动配置中所述。然后,可以根据节点在 IPv6 网络中的作用(作为主机、服务器或路由器)来调整节点的配置。
如果接口与当前正在通告某个 IPv6 前缀的路由器在同一链路上,则接口会获取该站点前缀,并将其作为自动配置的地址的一部分。有关更多信息,请参阅如何配置启用了 IPv6 的路由器。
以下过程说明如何为安装 Oracle Solaris 10 之后添加的接口启用 IPv6。
完成 IPv6 网络的规划任务,如升级硬件和软件以及准备寻址计划。有关更多信息,请参见IPv6 规划(任务列表)。
主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
在接口上启用 IPv6。
# ifconfig inet6 interface plumb up |
启动 IPv6 守护进程 in.ndpd。
# /usr/lib/inet/in.ndpd |
可以使用 ifconfig-a6 命令来显示节点上启用了 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 地址。
要将 IPv6 节点配置为路由器,请转至配置 IPv6 路由器。
要使 IPv6 接口配置在重新引导后仍然保持不变,请参见如何启用持久性 IPv6 接口。
要在节点上禁用地址自动配置,请参见如何关闭 IPv6 地址自动配置。
要将节点调整为服务器,请参见在服务器上管理启用了 IPv6 的接口中的建议。
此过程说明如何启用具有自动配置的 IPv6 地址的 IPv6 接口,这些地址在随后进行重新引导时将一直保持不变。
如果接口与当前正在通告某个 IPv6 前缀的路由器在同一链路上,则接口会获取该站点前缀,并将其作为自动配置的地址的一部分。有关更多信息,请参阅如何配置启用了 IPv6 的路由器。
主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
为安装之后添加的接口创建 IPv6 地址。
创建静态 IPv6 缺省路由。
# /usr/sbin/route -p add -inet6 default ipv6-address |
(可选)创建一个 /etc/inet/ndpd.conf 文件,该文件定义了节点上接口变量的参数。
如果需要为主机的接口创建临时地址,请参阅将临时地址用于接口。有关 /etc/inet/ndpd.conf 的详细信息,请参阅 ndpd.conf(4) 手册页和ndpd.conf 配置文件。
重新引导该节点。
# reboot -- -r |
在重新引导过程中将发送路由器搜索包。如果路由器以站点前缀进行响应,则节点可以使用对应的包含全局 IPv6 地址的 /etc/hostname6.interface 文件配置任何接口。否则,仅能使用链路本地地址配置启用了 IPv6 的接口。重新引导还将以 IPv6 模式重新启动 in.ndpd 和其他网络守护进程。
此示例说明如何使 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。
要将新的 IPv6 节点配置为路由器,请转至配置 IPv6 路由器。
要在节点上禁用地址自动配置,请参见如何关闭 IPv6 地址自动配置。
要将新节点调整为服务器,请参见在服务器上管理启用了 IPv6 的接口中的建议。
通常应当使用地址自动配置来为主机和服务器的接口生成 IPv6 地址。但是,有时可能希望关闭地址自动配置,尤其是在希望手动配置标记时,如配置 IPv6 标记中所述。
主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
为节点创建 /etc/inet/ndpd.conf 文件。
/etc/inet/ndpd.conf 文件定义了特定节点的接口变量。必须在该文件中包含以下内容,才能关闭所有服务器接口的地址自动配置:
if-variable-name StatelessAddrConf false |
有关 /etc/inet/ndpd.conf 的详细信息,请参阅 ndpd.conf(4) 手册页和ndpd.conf 配置文件。
使用所做更改更新 IPv6 守护进程。
# pkill -HUP in.ndpd |
在网络上配置 IPv6 的第一步是在路由器上配置 IPv6。路由器配置涉及到许多独立的任务,本节将介绍这些任务。您可以根据站点要求执行部分或全部任务。
按下表中的顺序执行接下来的任务,以配置 IPv6 网络。此表中包含对各项任务要完成的工作的说明,以及当前文档中详细介绍用于执行任务的特定步骤的章节。
此过程假定在 Oracle Solaris : 的安装过程中已针对 IPv6 配置了路由器的所有接口。
在即将成为 IPv6 路由器的系统上,承担主管理员角色或成为超级用户。
主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
检查在安装过程中针对 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/10 和 fe80::203:baff:fe11:b116/10 配置了主网络接口 dmfe0 和附加接口 dmfe1。
对于 Solaris 10 11/03 及更早的版本,请使用以下命令:
# routeadm -e ipv6-forwarding -u |
使用以下任一命令启用包转发:
使用 routeadm 命令,如下所示:
# routeadm -e ipv6-forwarding -u |
使用以下服务管理工具 (Service Management Facility, SMF) 命令,如下所示:
# svcadm enable ipv6-forwarding |
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) 手册页。
在 /etc/inet/ndpd.conf 中指定要由路由器通告的站点前缀以及其他配置信息。此文件由 in.ndpd 守护进程读取,该守护进程实现了 IPv6 相邻节点搜索协议。
有关变量和允许值的列表,请参阅ndpd.conf 配置文件和 ndpd.conf(4) 手册页。
在 /etc/inet/ndpd.conf 文件中键入以下文本:
ifdefault AdvSendAdvertisements true prefixdefault AdvOnLinkFlag on AdvAutonomousFlag on |
此文本通告 in.ndpd 守护进程通过路由器上针对 IPv6 配置的所有接口发出路由器通告。
向 /etc/inet/ndpd.conf 文件中添加其他文本,以便在路由器的各接口上配置站点前缀。
该文本应采用以下格式:
prefix global-routing-prefix:subnet ID/64 interface |
以下样例 /etc/inet/ndpd.conf 文件将路由器配置为通过接口 dmfe0 和 dmfe1 通告站点前缀 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 |
重新引导系统。
IPv6 路由器随即开始在本地链路上通告 ndpd.conf 文件中的任何站点前缀。
以下示例显示了 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 命令、文件和守护进程的详细信息,请参阅Oracle Solaris 10 IPv6 实现。
本节介绍如何修改作为主机或服务器的节点上启用了 IPv6 的接口的配置。大多数情况下,应当针对启用了 IPv6 的接口使用地址自动配置,如无状态自动配置概述中所述。但是,可以按照本节中的任务说明,根据需要修改接口的 IPv6 地址。
下表列出了各种可修改现有 IPv6 网络的任务。此表中包含对各项任务要完成的工作的说明,以及当前文档中详细介绍用于执行任务的特定步骤的章节。
任务 |
说明 |
参考 |
---|---|---|
关闭 IPv6 地址自动配置。 |
如果需要手动配置 IPv6 地址的接口 ID 部分,请使用此任务。 | |
为主机创建临时地址。 |
通过对随机创建的临时地址(用作地址中较低的 64 位)进行配置,隐藏主机的接口 ID。 | |
为系统的接口 ID 配置标记。 |
在 IPv6 地址中创建要用作接口 ID 的 64 位标记。 |
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 文件中配置下列变量:
临时地址存在的时间跨度,在此之后临时地址将从主机中删除。
临时地址过时之前已经过的时间。此时间跨度应短于有效生命周期。
在首选生命周期到期之前的持续时间,在这段时间内,主机应生成新的临时地址。
可以按如下所示表示临时地址的持续时间:
n 秒数(缺省值)
n 小时数 (h)
n 天数 (d)
以主管理员或超级用户身份登录到 IPv6 主机。
主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
如有必要,请在主机的接口上启用 IPv6。
编辑 /etc/inet/ndpd.conf 文件以打开临时地址生成功能。
(可选)指定临时地址的有效生命周期。
ifdefault TmpValidLifetime duration |
此语法为主机上的所有接口指定有效生命周期。duration 的值应当以秒、小时或天为单位。缺省的有效生命周期为 7 天。另外,还可以使用带有 if interface 关键字的 TmpValidLifetime 来为特定接口的临时地址指定有效生命周期。
(可选)为临时地址指定首选生命周期,在此之后临时地址将过时。
if interface TmpPreferredLifetime duration |
此语法为特定接口的临时地址指定首选生命周期。缺省的首选生命周期为一天。另外,还可以使用带有 ifdefault 关键字的 TmpPreferredLifetime 来为主机所有接口上的临时地址指定首选生命周期。
缺省地址选择可为已经过时的 IPv6 地址指定较低的优先级。如果某个 IPv6 临时地址已过时,则缺省地址选择会将未过时的地址选作包的源地址。未过时的地址可能是自动生成的 IPv6 地址,也可能是接口的 IPv4 地址。有关缺省地址选择的更多信息,请参见管理缺省地址选择。
(可选)指定地址过时之前的前导时间,在这段时间内,主机应生成新的临时地址。
ifdefault TmpRegenAdvance duration |
此语法可为主机上所有接口的临时地址指定地址过时之前的前导时间。缺省值是 5 秒。
更改 in.ndpd 守护进程的配置。
# pkill -HUP in.ndpd # /usr/lib/inet/in.ndpd |
运行 ifconfig -a6 命令来验证临时地址是否已创建,如示例 7–5 中所示。
在 ifconfig 的输出中,接口定义所在的行中应包含 TEMPORARY 一词。
以下示例显示了针对主网络接口启用了临时地址的 /etc/inet/ndpd.conf 文件片段。
ifdefault TmpAddrsEnabled true ifdefault TmpValidLifetime 14d ifdefault TmpPreferredLifetime 7d ifdefault TmpRegenAdvance 6s |
此示例显示了创建临时地址之后 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 配置名称服务支持。
要为服务器配置 IPv6 地址,请参见如何配置用户指定的 IPv6 标记。
要监视 IPv6 节点上的活动,请参见第 8 章。
如IPv6 Addressing Overview中所述,IPv6 地址的 64 位接口 ID 又称作IPv6 寻址概述。在地址自动配置过程中,该标记与接口的 MAC 地址相关联。大多数情况下,非路由节点(即 IPv6 主机和服务器)应当使用为其自动配置的标记。
但是,对于在系统维护过程中经常需要交换接口的服务器,使用自动配置的标记可能会产生问题。如果更换接口卡,则 MAC 地址也会随之更改。因此,依赖稳定 IP 地址的服务器将会遇到问题。网络基础结构的各个部分(如 DNS 或 NIS)可能已经存储了服务器接口的特定 IPv6 地址。
为了避免出现地址更改问题,可以手动配置要用作 IPv6 地址中接口 ID 的标记。要创建此标记,需要指定一个 64 位或更少的十六进制数字,使其占用 IPv6 地址的接口 ID 部分。在后续的地址自动配置过程中,相邻节点搜索协议不会基于接口的 MAC 地址创建接口 ID。相反,手动创建的标记将成为接口 ID。此标记始终被分配给该接口,即使更换了卡也是如此。
用户指定的标记和临时地址之间的区别在于,临时地址是随机生成的,而不是由用户显式创建的。
接下来的说明对于经常更换接口的服务器尤其有用。它们也可用于在任何 IPv6 节点上配置用户指定的标记。
验证要配置标记的接口是否已经过检测。
必须先检测接口,然后才能为其 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。此地址是在安装过程中自动配置的。
创建一个或多个要用作节点接口标记的 64 位十六进制数字。有关标记的示例,请参阅链路本地单点传送地址。
配置每个接口的标记。
对于每个要具有用户指定接口 ID(标记)的接口,请使用以下形式的 ifconfig 命令:
ifconfig interface inet6 token address/64 |
例如,可使用以下命令配置 qfe0 的标记:
# ifconfig qfe0 inet6 token ::1a:2b:3c:4d/64 |
对于要具有用户指定标记的每个接口,重复该步骤。
(可选)使新的 IPv6 地址在重新引导过程中持续保留。
对于每个配置了标记的接口,编辑或创建 /etc/hostname6.interface 文件。
在每个 /etc/hostname6.interface 文件的末尾添加以下文本:
token ::token-name/64 |
例如,可以在 /etc/hostname6.interface 文件的末尾添加以下文本:
token ::1a:2b:3c:4d/64 |
在系统重新引导之后,在 /etc/hostname6. interface 文件中配置的标记将应用于接口的 IPv6 地址。此 IPv6 地址在后续的重新引导过程中仍会持续保留。
使用所做更改更新 IPv6 守护进程。
# pkill -HUP -in.ndpd |
在以下示例中,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 配置名称服务支持。
要监视服务器性能,请参见第 8 章。
如果计划在服务器上配置 IPv6,则在服务器的接口上启用 IPv6 时,必须做出几个决定。所做的决定会影响用于配置接口 IPv6 地址的接口 ID(又称作标记)的策略。
下一过程假定以下情况成立:
已在服务器上安装了 Oracle Solaris 10。
已经使用配置 IPv6 接口中的过程,在 Oracle Solaris : 安装过程中或安装之后在服务器接口上启用了 IPv6。
如果适用,请升级应用程序软件以支持 IPv6。请注意,许多在 IPv4 协议栈上运行的应用程序也能在 IPv6 上成功运行。有关更多信息,请参阅如何准备网络服务以支持 IPv6。
在服务器上,承担主管理员角色或成为超级用户。
主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
确保与服务器在同一链路上的路由器上配置了 IPv6 子网前缀。
有关更多信息,请参阅配置 IPv6 路由器。
对服务器上启用了 IPv6 的接口,使用适当的接口 ID 策略。
缺省情况下,在创建 IPv6 地址的接口 ID 部分时,IPv6 地址自动配置会使用接口的 MAC 地址。如果接口的 IPv6 地址是已知的,则使用一个接口交换另一个接口会导致问题。新接口的 MAC 地址将会不同。在地址自动配置过程中,会生成新的接口 ID。
对于不打算替换的启用了 IPv6 的接口,请使用自动配置的 IPv6 地址,如IPv6 地址自动配置中所述。
对于必须匿名显示在本地网络外部的启用了 IPv6 的接口,请考虑对接口 ID 使用随机生成的标记。有关说明和示例,请参阅如何配置临时地址。
对于计划定期交换的启用了 IPv6 的接口,请为接口 ID 创建标记。有关说明和示例,请参阅如何配置用户指定的 IPv6 标记。
下表列出了各种配置不同类型的 IPv6 隧道的任务。此表中包含对各项任务要完成的工作的说明,以及当前文档中详细介绍用于执行任务的特定步骤的章节。
任务 |
说明 |
参考 |
---|---|---|
手动配置 IPv6 over IPv4 隧道。 |
手动创建经由 IPv4 网络的 IPv6 隧道,此解决方案可用于在大型企业网络(主要是 IPv4 企业网络)中访问远程 IPv6 网络。 | |
手动配置 IPv6 over IPv6 隧道。 |
手动配置经由 IPv6 网络的 IPv6 隧道,此解决方案通常用在大型企业网络中。 | |
手动配置 IPv4 over IPv6 隧道。 |
手动配置经由 IPv6 网络的 IPv4 隧道,此解决方案通常用在同时包含 IPv4 网络和 IPv6 网络的大型网络中。 | |
自动配置 IPv6 over IPv4 隧道(6to4 隧道)。 |
创建 6to4 自动隧道,此解决方案用于通过 Internet 访问外部的 IPv6 站点。 | |
在 6to4 路由器和 6to4 中继路由器之间配置隧道。 |
使用 6to4relay 命令启用连接到 6to4 中继路由器的隧道。 |
在大型 IPv4 网络中,IPv6 网络通常是隔离的实体。IPv6 网络上的节点可能需要与隔离的 IPv6 网络上的节点通信(在企业内或以远程方式进行)。通常,尽管 IPv6 主机也可以充当隧道端点,但是仍需要在 IPv6 路由器之间配置一条隧道。有关隧道规划的信息,请参阅在网络拓扑中规划隧道。
可以为 IPv6 网络设置自动或手动配置的隧道。Oracle Solaris : IPv6 实现支持下列类型的隧道封装:
IPv6 over IPv4 隧道
IPv6 over IPv6 隧道
IPv4 over IPv6 隧道
6to4 隧道
有关隧道的概念性说明,请参见IPv6 隧道。
本过程介绍如何设置从 IPv6 节点经由 IPv4 网络到达远程 IPv6 节点的隧道。
以主管理员或超级用户身份登录到本地隧道的端点。
主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
创建 /etc/hostname6.ip.tun n 文件。
其中 n 表示隧道编号,第一个隧道的编号从零开始。然后,按照下列子步骤来添加项:
重新引导系统。
对隧道的另一端重复该任务。
此样例 /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 |
本过程介绍如何设置从 IPv6 节点经由 IPv6 网络到达远程 IPv6 节点的隧道。
以主管理员或超级用户身份登录到本地隧道的端点。
主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
创建 /etc/hostname6.ip6.tun n 文件。
n 可使用值 0、1、2 等。然后,按照下列子步骤来添加项:
重新引导系统。
对于隧道的另一端重复此过程。
tsrc 2001:db8:3c4d:22:20ff:0:fe72:668c tdst 2001:db8:3c4d:103:a00:20ff:fe9b:a1c3 fe80::4 fe80::61 up |
本过程介绍如何配置从一台 IPv4 主机经由 IPv6 网络到达另一台 IPv4 主机的隧道。如果您的公司网络是异构网络,并且 IPv4 子网由 IPv6 子网分隔,则可以使用此过程。
以主管理员或超级用户身份登录到本地 IPv4 隧道的端点。
主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
创建 /etc/hostname.ip6.tunn 文件。
n 可使用值 0、1、2 等。然后,按照下列步骤来添加项:
重新引导本地主机。
对于隧道的另一端重复此过程。
此示例显示了 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 |
如果 IPv6 网络需要与远程 IPv6 网络通信,请考虑使用 6to4 自动隧道。6to4 隧道的配置过程包括将边界路由器配置为 6to4 路由器。6to4 路由器可充当您的网络与远程 IPv6 网络上的端点路由器之间的 6to4 隧道的端点。
在 IPv6 网络上配置 6to4 路由之前,必须已经完成以下操作:
已经按照修改主机和服务器的 IPv6 接口配置中所述在将来的 6to4 站点的所有相应节点上配置了 IPv6。
至少已经选择了一个连接到 IPv4 网络的路由器作为 6to4 路由器。
已经为 IPv4 网络配置了在将来的 6to4 路由器接口上全局唯一的 IPv4 地址。该 IPv4 地址必须是静态的。
请勿使用动态分配的 IPv4 地址,如第 12 章中所述。全局动态分配的地址可能会随着时间而更改,这会对 IPv6 寻址计划造成不良影响。
以主管理员或超级用户身份登录到将来的 6to4 路由器。
主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
通过创建 /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 的必需参数:
表示此接口用作隧道源。
以点分十进制格式指定在作为 6to4 伪接口的物理接口上配置的 IPv4 地址。
其余参数是可选的。但是,如果指定了一个可选参数,则必须指定所有的可选参数。
指定 6to4 前缀。
以十六进制表示法指定伪接口的 IPv4 地址。
以十六进制表示法指定除 0 以外的子网 ID。
指定除 1 以外的接口 ID。
表示 6to4 前缀的长度为 64 位。
将 6to4 接口配置为 "up"。
网络上的两个 IPv6 隧道不能具有相同的源地址和目标地址。否则,包会被丢弃。如果 6to4 路由器还通过 atun 命令执行隧道连接,则可能会发生这种类型的事件。有关 atun 的信息,请参阅 tun(7M) 手册页。
(可选)在路由器上创建其他 6to4 伪接口。
每个将来的 6to4 伪接口都必须具有一个已配置的全局唯一的 IPv4 地址。
重新引导 6to4 路由器。
# 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 |
编辑 /etc/inet/ndpd.conf 文件以通告 6to4 路由。
有关详细信息,请参阅 ndpd.conf(4) 手册页。
重新引导路由器。
或者,可以向 /etc/inet/in.ndpd 守护进程发出 sighup,以便开始发送路由器通告。要接收 6to4 前缀的每个子网上的 IPv6 节点现在可以使用 6to4 派生地址自动进行配置。
将节点的新 6to4 派生地址添加到在 6to4 站点上使用的名称服务中。
有关说明,请转至针对 IPv6 配置名称服务支持。
下面举例说明了/etc/hostname6.ip.6to4tun0 的短形式:
# cat /etc/hostname6.ip.6to4tun0 tsrc 111.222.33.44 up |
下面举例说明了 /etc/hostname6.ip.6to4tun0 的长形式:
# cat /etc/hostname6.ip.6to4tun0 tsrc 111.222.33.44 2002:6fde:212c:20:1/64 up |
以下样例说明了针对 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 |
以下样例 /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。如果站点使用 RIP,则必须在每个非 6to4 路由器上配置通往 6to4 路由器的静态路由。如果使用商业路由协议,则无需创建通往 6to4 路由器的静态路由。
由于 6to4 中继路由器存在重要的安全问题,因此,在缺省情况下,Oracle Solaris : 中会禁用 6to4 中继路由器支持。请参见建立通往 6to4 中继路由器的隧道时的安全问题。
在启用通往 6to4 中继路由器的隧道之前,必须先完成下列任务:
按照如何配置 6to4 隧道中的说明在站点上配置了 6to4 路由器
检查建立通往 6to4 中继路由器的隧道连接时涉及到的安全问题
以主管理员或超级用户身份登录到 6to4 路由器。
主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
启用通往任意点传送 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 中继路由器的隧道将一直保持活动状态。
如果不再需要隧道,请删除通往 6to4 中继路由器的隧道:
# /usr/sbin/6to4relay -d |
(可选)使通往 6to4 中继路由器的隧道在重新引导过程中持续保留。
您的站点可能迫切要求通往 6to4 中继路由器的隧道在 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 |
本节介绍如何将 DNS 和 NIS 名称服务配置为支持 IPv6 服务。
LDAP 无需执行特定于 IPv6 的配置任务即可支持 IPv6。
有关管理 DNS、NIS 和 LDAP 的全部详细信息,请参阅《系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)》。
以主管理员或超级用户身份登录到主 DNS 服务器或辅助 DNS 服务器。
主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
通过为每个启用了 IPv6 的节点添加 AAAA 记录,来编辑相应的 DNS 区域文件:
host-name IN AAAA host-address |
编辑 DNS 反向区域文件并添加 PTR(指针)记录:
host-address IN PTR hostname |
有关 DNS 管理的详细信息,请参阅《系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)》。
此示例显示了反向区域文件中的 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. |
在 Solaris 10 11/06 及更早的版本中,已为 NIS 添加了两个映射: ipnodes.byname 和 ipnodes.byaddr。这些映射中既包含 IPv4 主机名和地址之间的关联,又包含 IPv6 主机名和地址之间的关联。可识别 IPv6 的工具使用的是 ipnodes NIS 映射。hosts.byname 和 hosts.byaddr 映射中仅包含 IPv4 主机名和地址之间的关联。为了便于现有的应用程序使用,这些映射仍保持原样。对 ipnodes 映射的管理与对 hosts.byname 和 hosts.byaddr 映射的管理类似。对于 Solaris 10 11/06 而言,有一点很重要,在用 IPv4 地址更新主机映射时,ipnode 映射也会使用相同信息进行更新。
Oracle Solaris 10 的后续版本不再使用 ipnodes 映射。现在,ipnodes 映射的 IPv6 功能保留在 hosts 映射中。
有关管理 NIS 映射的说明,请参阅《系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)》中的第 5 章 “设置和配置 NIS 服务”。
可以使用 nslookup 命令显示 IPv6 名称服务信息。
使用您的用户帐户运行 nslookup 命令。
% /usr/sbin/nslookup |
此时会出现缺省的服务器名称和地址,后跟 nslookup 命令的尖括号提示符。
在尖括号提示符下键入以下命令,查看有关特定主机的信息:
>set q=any >host-name |
>set q=AAAA hostname |
键入 exit,退出 nslookup 命令。
此示例显示了 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 |
在此过程中,可使用 nslookup 命令显示 DNS IPv6 的 PTR 记录。
% /usr/sbin/nslookup |
此时会出现缺省的服务器名称和地址,后跟 nslookup 命令的尖括号提示符。
在尖括号提示符下键入以下命令,查看 PTR 记录:
>set q=PTR |
键入 exit,退出该命令。
以下示例显示了使用 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 |
在此过程中,可使用 ypmatch 命令,通过 NIS 显示 IPv6 信息:
使用您的用户帐户键入以下命令,显示 NIS 中的 IPv6 地址:
% ypmatch hostname hosts ipnodes.byname |
此时会显示有关指定 hostname 的信息。
Solaris 11/06 之后的 Oracle Solaris : 版本中不再包含 ipnodes 映射。现在,ipnodes 的 IPv6 功能保留在 hosts 映射中。
对于 Solaris 10 11/06 及更早的版本,以下样例说明了针对 ipnodes.byname 数据库执行 ypmatch 操作的结果。
% ypmatch farhost hosts ipnodes.byname 2001:0db8:3c4d:15:a00:20ff:fe12:5286 farhost |
此过程仅适用于 Solaris 10 11/06 及更早的版本。对于后续版本,可以针对 hosts 数据库执行相同的操作。
以下样例说明了 getent 命令的输出:
% getent ipnodes vallejo 2001:0db8:8512:2:56:a00:fe87:9aba myhost myhost fe80::56:a00:fe87:9aba myhost myhost |
本章介绍管理 TCP/IP 网络的任务。本章包含以下主题:
这些任务假设您的站点拥有正常运行的 TCP/IP 网络,该网络仅启用了 IPv4 或启用了双栈 IPv4/IPv6。如果希望在站点实施 IPv6 但尚未实现,请参阅以下各章以获取更多信息:
下表列出了进行初始配置后的其他网络管理任务,例如显示网络信息。此表中包含对各项任务要完成的工作的说明,以及当前文档中详细介绍用于执行任务的特定步骤的章节。
任务 |
说明 |
参考 |
---|---|---|
显示有关接口的配置信息。 |
确定系统上每个接口的当前配置。 | |
显示指定的接口地址。 |
确定为本地系统上所有接口指定的地址。 | |
按协议显示统计信息。 |
监视特定系统上网络协议的性能。 | |
显示网络状态。 |
通过显示所有套接字和路由表项来监视系统。输出包括 IPv4 的 inet 地址族和 IPv6 的 inet6 地址族。 | |
显示网络接口的状态。 |
监视网络接口的性能,这对于解决传输问题非常有用。 | |
显示包传输状态。 |
监视包在网络上传送时的状态。 | |
控制与 IPv6 相关的命令的显示输出。 |
控制 ping、netstat、 ifconfig 和 traceroute 命令的输出。创建名为 inet_type 的文件。在此文件中设置 DEFAULT_IP 变量。 | |
监视网络通信。 |
使用 snoop 命令显示所有 IP 包。 | |
跟踪网络路由器已知的所有路由。 |
使用 traceroute 命令显示所有路由。 |
可以使用 ifconfig 命令为接口手动指定 IP 地址并手动配置接口参数。此外,Oracle Solaris : 启动脚本还运行 ifconfig 来配置伪接口,例如 6to4 隧道端点。
本书介绍多个使用通用 ifconfig 命令的各种选项的任务。有关此命令及其选项和变量的完整说明,请参阅 ifconfig(1M) 手册页。ifconfig 的基本语法如下所示:
ifconfig interface [protocol-family]
使用 ifconfig 命令可确定有关特定系统的接口的基本信息。例如,执行简单的 ifconfig 查询便可获取以下信息:
系统上所有接口的设备名称
为接口指定的所有 IPv4 地址以及所有 IPv6 地址(如果适用)
当前是否已配置这些接口
以下过程说明了如何使用 ifconfig 命令来获取有关系统接口的基本配置信息。
在本地主机上,承担主管理员角色或成为超级用户。
主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
获取有关特定接口的信息。
# ifconfig interface |
状态行
ifconfig 命令输出中的第一行包括接口名称以及当前与接口关联的状态标志。此外,状态行还包括为特定接口配置的最大传输单元 (maximum transmission unit, MTU) 以及索引号。使用状态行可确定接口的当前状态。
IP 地址信息行
ifconfig 输出的第二行包括为接口配置的 IPv4 地址或 IPv6 地址。对于 IPv4 地址,还显示已配置的网络掩码和广播地址。
MAC 地址行
以超级用户或类似角色的身份运行 ifconfig 命令时,ifconfig 输出包含第三行。对于 IPv4 地址,第三行显示了为接口指定的 MAC 地址(以太网层地址)。对于 IPv6 地址,输出中的第三行显示了 IPv6 in.ndpd 守护进程根据 MAC 地址生成的链路本地地址。
以下示例说明了如何使用 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 |
显示接口的以太网层地址。 |
路由器和多宿主主机具有多个接口,并且通常为每个接口指定多个 IP 地址。可以使用 ifconfig 命令来显示为系统接口指定的所有地址,还可以使用 ifconfig 命令仅显示指定的 IPv4 或 IPv6 地址。要另外显示接口的 MAC 地址,您必须首先以超级用户或相应角色的身份登录。
有关 ifconfig 命令的更多信息,请参见 ifconfig(1M) 手册页。
在本地系统上,承担网络管理角色或成为超级用户。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
获取有关所有接口的信息。
您可以使用 ifconfig -a 命令的变体执行以下操作:
查看系统上所有接口的所有地址。
# ifconfig -a |
查看为系统接口指定的所有 IPv4 地址。
# ifconfig -a4 |
如果本地系统启用了 IPv6,则显示为系统接口指定的所有 IPv6 地址。
ifconfig -a6 |
此示例显示只具有一个主网络接口 (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 |
此示例显示了为多宿主主机配置的 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 |
此示例仅显示了为特定主机配置的 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 地址:
IPv6 回送地址。
为主网络接口指定的链路本地地址。
IPv6 地址,包括子网前缀。输出中的 ADDRCONF 一词指示此地址是由主机自动配置的。
netstat 命令生成包含网络状态和协议统计信息的显示内容。可以通过表格形式显示 TCP、SCTP(流控制传输协议)和 UDP(用户数据报协议)端点的状态,还可以显示路由表信息和接口信息。
netstat 可显示各种类型的网络数据,具体取决于所选择的命令行选项。这些显示信息对于系统管理非常有价值。netstat 的基本语法如下所示:
netstat [-m] [-n] [-s] [-i | -r] [-f address-family]
本节介绍最常用的 netstat 命令选项。有关所有 netstat 选项的详细说明,请参阅 netstat(1M) 手册页。
netstat -s 选项显示 UDP、TCP、SCTP、ICMP 和 IP 协议的统计信息。
可以使用 Oracle Solaris : 用户帐户获取 netstat 命令的输出。
以下示例显示了 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 |
可以通过 netstat 命令显示传输协议的状态。有关详细信息,请参阅 netstat(1M) 手册页。
显示系统上 TCP 和 SCTP 传输协议的状态。
$ netstat |
显示系统上特定传输协议的状态。
$ netstat -P transport-protocol |
transport-protocol 变量的值为 tcp、sctp 或 udp。
此示例显示基本 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 |
此示例显示指定了 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 |
netstat 命令的 i 选项显示本地系统上配置的网络接口的状态。可以使用此选项确定系统在每个网络中传输和接收的包数。
下面的示例显示通过主机接口的 IPv4 和 IPv6 包流的状态。
例如,每次客户机尝试引导时,显示的服务器输入包计数 (Ipkts) 都会增加,而输出包计数 (Opkts) 保持不变。这种情况表示服务器正在查看来自客户机的引导请求包。但是,服务器却不知道对它们做出响应。这种混乱可能是由 hosts、ipnodes 或 ethers 数据库中的错误地址引起的。
但是,如果输入包计数在一段时间内保持不变,则说明计算机根本未查看包。这种情况说明出现了其他类型的故障,如硬件问题。
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 |
使用 netstat 命令的 -a 选项,可以查看本地主机上套接字的状态。
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 |
使用 netstat 命令的 -f 选项可查看与特定地址族的包传输相关的统计信息。
查看 IPv4 或 IPv6 包传输的统计信息。
$ netstat -f inet | inet6 |
要查看 IPv4 传输信息,请键入 inet 作为 netstat -f 的参数。使用 inet6 作为 netstat -f 的参数可查看 IPv6 信息。
以下示例显示了 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 |
以下示例显示了 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 |
netstat 命令的 -r 选项显示本地主机的路由表。该表显示主机知晓的所有路由的状态。使用用户帐户便可运行 netstat 的 -r 选项。
以下示例显示了 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 时,ICMP 协议会将数据报发送到指定的主机,并请求响应。ICMP 是负责 TCP/IP 网络中错误处理的协议。使用 ping,可查明是否存在与指定的远程主机的 IP 连接。
/usr/sbin/ping host [timeout]
在此语法中,host 是远程主机的名称。timeout 参数(可选)指示 ping 命令继续尝试到达远程主机所用的时间(以秒为单位)。缺省值为 20 秒。有关其他语法和选项,请参阅 ping(1M) 手册页。
键入以下形式的 ping 命令:
$ ping hostname |
如果主机 hostname 正在接受 ICMP 传输,则会显示以下消息:
hostname is alive |
此消息指示 hostname 对 ICMP 请求做出了响应。但是,如果 hostname 出现故障或者无法接收 ICMP 包,则会从 ping 命令接收到以下响应:
no answer from hostname |
使用 -ping 命令的 s 选项可确定远程主机是否虽在运行但丢失了包。
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 失败,请检查由 ifconfig 和 netstat 命令报告的网络状态。请参阅使用 ifconfig 命令监视接口配置和使用 netstat 命令监视网络状态。
以下任务说明如何使用已知的网络命令来检查网络状态。
可以将 netstat 和 ifconfig 命令的输出控制为仅显示 IPv4 信息或同时显示 IPv4 和 IPv6 信息。
创建 /etc/default/inet_type 文件。
根据您的网络需要,将以下某一项添加到 /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 文件中设置的值。
在 inet_type 文件中指定 DEFAULT_IP=BOTH 或 DEFAULT_IP=IP_VERSION6 变量时,应该显示以下输出:
% ifconfig -a lo0: flags=1000849 mtu 8232 index 1 inet 10.10.0.1 netmask ff000000 qfe0: flags=1000843 mtu 1500 index 2 inet 10.46.86.54 netmask ffffff00 broadcast 10.46.86.255 ether 8:0:20:56:a8 lo0: flags=2000849 mtu 8252 index 1 inet6 ::1/128 qfe0: flags=2000841 mtu 1500 index 2 ether 8:0:20:56:a8 inet6 fe80::a00:fe73:56a8/10 qfe0:1: flags=2080841 mtu 1500 index 2 inet6 2001:db8:3c4d:5:a00:fe73:56a8/64 |
当您在 inet_type 文件中指定 DEFAULT_IP=IP_VERSION4 或 DEFAULT_IP=IP_VERSION6 变量时,应该显示以下输出:
% ifconfig -a lo0: flags=849 mtu 8232 inet 10.10.0.1 netmask ff000000 qfe0: flags=843 mtu 1500 inet 10.46.86.54 netmask ffffff00 broadcast 10.46.86.255 ether 8:0:20:56:a8 |
如果怀疑 routed(IPv4 路由选择守护进程)不能正常运行,则可以启动跟踪此守护进程活动的日志。此日志包括启动 routed 守护进程时的所有包传送。
在本地主机上,承担主管理员角色或成为超级用户。
主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
创建路由选择守护进程操作的日志文件:
# /usr/sbin/in.routed /var/log-file-name |
在繁忙的网络中,此命令生成的输出几乎是连续的。
以下示例显示由如何记录 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> |
如果您怀疑 IPv6 in.ndpd 守护进程不能正常运行,则可以启动跟踪此守护进程的活动的日志。此跟踪显示在标准输出中,直到终止。此跟踪包括启动 in.ndpd 守护进程时的所有包传送。
在本地 IPv6 节点上承担主管理员角色或成为超级用户。
主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
启动对 in.ndpd 守护进程的跟踪。
# /usr/lib/inet/in.ndpd -t |
根据需要按 Ctrl-C 组合键终止跟踪。
以下输出显示了对 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 命令将跟踪发往远程系统的 IP 包所经过的路由。有关 traceroute 的详细技术信息,请参见 traceroute(1M) 手册页。
可以使用 traceroute 命令查找所有的路由配置错误以及路由路径错误。如果无法到达特定的主机,则可以使用 traceroute 来查看发往远程主机的包所经由的路径以及可能出现故障的位置。
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 |
此过程使用 traceroute 命令的 -a 选项来跟踪所有路由。
此示例显示通向双栈主机的所有可能路由。
% 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 仅显示与最高级协议有关的数据。例如,NFS 包仅显示 NFS 信息,而不会显示底层 RPC、UDP、IP 和以太网帧信息,但是如果选择了两个详细选项之一,则会显示这些信息。
坚持不懈地使用 snoop 可以使您熟悉常规系统行为。有关对包进行分析的帮助,请查找最新的白皮书和 RFC,并搜寻专家针对特定领域(如 NFS 或 NIS)提供的建议。有关使用 snoop 及其选项的详细信息,请参阅 snoop(1M) 手册页。
在本地主机上,承担网络管理角色或成为超级用户。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
列显有关连接到系统的接口的信息。
# ifconfig -a |
snoop 命令通常使用第一个非回送设备,通常为主网络接口。
键入不带参数的 snoop 开始捕获包,如示例 8–19 所示。
使用 Ctrl-C 组合键停止此进程。
基本 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 链路本地地址的通告。
在本地主机上,承担网络管理角色或成为超级用户。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
将 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。
检查 snoop 输出捕获文件。
# snoop -i filename |
以下内容显示了可能会作为 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 |
在远离与客户机或服务器相连的集线器的位置建立 snoop 系统。
第三方系统(snoop 系统)将检查所有干预通信,因此 snoop 跟踪会反映网络上实际出现的情况。
在 snoop 系统上,承担网络管理角色或成为超级用户。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
键入带有选项的 snoop 并将输出保存到文件。
检查并解释输出。
有关 snoop 捕获文件的详细信息,请参阅 RFC 1761, Snoop Version 2 Packet Capture File Format。
您可以使用 snoop 命令来仅显示 IPv6 包。
在本地节点上,承担网络管理角色或成为超级用户。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
捕获 IPv6 包。
# snoop ip6 |
有关 snoop 命令的更多信息,请参见 snoop(1M) 手册页。
以下示例显示了在节点上运行 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 地址格式等。
以下过程介绍如何修改地址选择策略表。有关 IPv6 缺省地址选择的概念性信息,请参阅ipaddrsel 命令。
如果不是出于下一个任务中提到的某些原因,请不要更改 IPv6 地址选择策略表。策略表构造不正确可能会导致网络出现问题。请确保保存了策略表的副本(如下一过程所示)。
承担主管理员角色,或成为超级用户。
主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
# 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 |
备份缺省地址策略表的副本。
# cp /etc/inet/ipaddrsel.conf /etc/inet/ipaddrsel.conf.orig |
使用文本编辑器在 /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,这是表中的最高优先级。
将已修改的策略表加载到内核。
ipaddrsel -f /etc/inet/ipaddrsel.conf |
如果已修改的策略表存在问题,请恢复缺省 IPv6 地址选择策略表。
# ipaddrsel -d |
编辑 /etc/inet/ipaddrsel.conf 文件时,所做的任何修改即使在重新引导系统之后也都会保留下来。如果希望已修改的策略表仅存在于当前会话中,请执行以下过程。
承担主管理员角色,或成为超级用户。
主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
将 /etc/inet/ipaddrsel 的内容复制到 filename,其中 filename 是您选择的文件名称。
# cp /etc/inet/ipaddrsel filename |
根据需要在 filename 中编辑策略表。
将已修改的策略表加载到内核。
# ipaddrsel -f filename |
内核将使用新的策略表,直到重新引导系统。
本章包含网络上可能出现的常见问题的解决方案。本章包含以下主题:
在 Solaris 10 7/07 中,/etc/inet/ipnodes 文件已过时。只能对早期 Oracle Solaris 10 发行版使用 /etc/inet/ipnodes,如以下各个过程中所述。
网络出现问题的首要症状之一就是一个或多个主机失去通信。如果在首次将某个主机添加到网络中时,该主机根本就未出现,则问题可能出在某个配置文件上,或者网络接口卡出现故障。如果单个主机突然遇到问题,则问题可能出在网络接口上。如果网络上的主机能够互相通信,但是不能与其他网络通信,则问题可能出在路由器上,也可能是另一个网络出现问题。
可以使用 ifconfig 命令获取有关网络接口的信息。可以使用 netstat 命令显示路由表和协议统计信息。第三方网络诊断程序提供了许多疑难解答工具。有关信息,请参阅第三方文档。
导致网络性能下降的原因可能不是很显而易见。例如,可以使用诸如 ping 之类的工具来量化主机上包丢失等问题。
如果网络存在问题,可以运行一系列软件检查来诊断和修复与软件相关的基本问题。
在本地系统上,承担网络管理角色或成为超级用户。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
有关 netstat 命令的语法和信息,请参阅使用 netstat 命令监视网络状态和 netstat(1M) 手册页。
检查 hosts 数据库(在 Solaris 10 11/06 及早期发行版中,如果您使用的是 IPv6,则需要检查 ipnodes 数据库)确保各项正确且为最新。
有关 /etc/inet/hosts 数据库的信息,请参阅hosts 数据库和 hosts(4) 手册页。有关 /etc/inet/ipnodes 数据库的信息,请参阅ipnodes 数据库和 ipnodes(4) 手册页。
如果正在运行反向地址解析协议 (Reverse Address Resolution Protocol, RARP),请检查 ethers 数据库中的以太网地址,确保各项正确且为最新。
尝试使用 telnet 命令连接到本地主机。
有关 telnet 的语法和信息,请参阅 telnet(1) 手册页。
# ps -ef | grep inetd
下面的输出可证实 inetd 守护进程正在运行:
root 57 1 0 Apr 04 ? 3:19 /usr/sbin/inetd -s |
如果在网络上启用了 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 时可能遇到的疑问和问题。有关实际的规划任务,请参阅第 4 章。
如果现有设备无法升级,则可能必须购买支持 IPv6 的设备。有关为支持 IPv6 而必须执行的特定于设备的任何过程,请查阅制造商的文档。
某些 IPv4 路由器无法进行升级以支持 IPv6。如果您的拓扑属于这种情况,请紧邻该 IPv4 路由器物理连接一个 IPv6 路由器。然后,可以从 IPv6 路由器建立经由 IPv4 路由器的隧道。有关配置隧道的任务,请参阅针对 IPv6 支持配置隧道所需的任务(任务列表)。
在准备服务使其支持 IPv6 时,可能会遇到下列情况:
某些应用程序,即使在移植到 IPv6 之后,缺省情况下也不会启用 IPv6 支持。可能必须配置这些应用程序以启用 IPv6。
运行多个服务(其中的一些服务仅使用 IPv4,而其他服务既使用 IPv4 又使用 IPv6)的服务器可能会遇到问题。某些客户机可能需要同时使用这两种类型的服务,这会在服务器端导致混乱。
如果想要部署 IPv6,但是当前的 ISP 不支持 IPv6 寻址,则可考虑通过以下备选方法改用其他 ISP:
租用一个 ISP,为您站点的 IPv6 通信提供第二条线路。此解决方案成本较高。
获取一个虚拟 ISP。虚拟 ISP 可为您的站点提供 IPv6 连通性,但不提供链路。您需要从您的站点建立一个经由 IPv4 ISP 到达虚拟 ISP 的隧道。
使用经由 ISP 到达其他 IPv6 站点的 6to4 隧道。对于地址,请使用 6to4 路由器的已注册 IPv4 地址作为 IPv6 地址的公共拓扑部分。
本质上,6to4 路由器与 6to4 中继路由器之间的隧道是不安全的。此类隧道存在以下固有安全问题:
尽管 6to4 中继路由器确实会对包进行封装和取消封装,但是这些路由器并不检查这些包中所包含的数据。
地址欺骗是通往 6to4 中继路由器的隧道中的主要问题。对于传入通信,6to4 路由器无法将中继路由器的 IPv4 地址与源 IPv6 地址匹配。因此,IPv6 主机的地址很容易被欺骗,6to4 中继路由器的地址也可能会被欺骗。
缺省情况下,6to4 路由器与 6to4 中继路由器之间不存在信任机制。因此,6to4 路由器无法识别 6to4 中继路由器是否受信任,或者甚至无法识别它是否是合法的 6to4 中继路由器。6to4 站点与 IPv6 目标之间必须存在信任关系,否则这两个站点会很容易受到攻击。
Internet 草案《Security Considerations for 6to4》中对这些问题和 6to4 中继路由器固有的其他安全问题进行了说明。通常,仅出于以下几种原因才考虑启用 6to4 中继路由器支持:
6to4 站点尝试与受信任的专用 IPv6 网络通信。例如,可以在由隔离的 6to4 站点和本地 IPv6 站点组成的校园网络上启用 6to4 中继路由器支持。
出于迫切的商业需求,6to4 站点需要与某些本地 IPv6 主机通信。
已实现了 Internet 草案《Security Considerations for 6to4》中建议的检查和信任模型。
4709338-需要实现可识别静态路由的 RIPng
4152864-可以用相同的 tsrc/tdst 对来配置两个隧道
以下问题发生在 6to4 边界路由器内部具有路由器的 6to4 站点上。配置 6to4 伪接口时,静态路由 2002::/16 会自动添加到 6to4 路由器的路由表中。错误 4709338 描述了 Oracle Solaris : RIPng 路由协议的一个限制,该限制禁止将此静态路由通告到 6to4 站点。
对于错误 4709338,可使用下面任一解决方法:
将 2002::/16 静态路由添加到 6to4 站点内部所有站点内路由器的路由表中。
在 6to4 站点的内部路由器上使用 RIPng 以外的路由协议。
错误号 4152864 描述了两个隧道配置了同一个隧道源地址时出现的问题,这是 6to4 隧道的一个严重问题。
请不要为 6to4 隧道和自动隧道 (atun) 配置同一个隧道源地址。有关自动隧道和 atun 命令的信息,请参阅 tun(7M) 手册页。
本章提供有关网络配置文件的 TCP/IP 网络参考信息,包括文件项的类型、用途和格式,同时还详细介绍了现有的网络数据库。本章还介绍如何基于已定义的网络分类和子网号衍生得到 IPv4 地址结构。
本章包含以下信息:
在 Solaris 10 7/07 中,/etc/inet/ipnodes 文件已过时。只能对早期 Oracle Solaris 10 发行版使用 /etc/inet/ipnodes,如以下各个过程中所述。
网络中的每个系统都可以从以下 TCP/IP 配置文件和网络数据库中获取其 TCP/IP 配置信息:
/etc/hostname.interface 文件
/etc/nodename 文件
/etc/defaultdomain 文件
/etc/defaultrouter 文件(可选)
hosts 数据库
ipnodes 数据库(在 Solaris 10 11/06 及早期发行版中)
netmasks 数据库(可选)
Oracle Solaris : 安装程序在安装过程中创建上述文件。也可以按照本节中的说明手动编辑这些文件。hosts 和 netmasks 数据库是两个网络数据库,可供 Oracle Solaris : 网络上可用的名称服务读取。网络数据库和 nsswitch.conf 文件详细介绍了网络数据库的概念。对于 Solaris 10 11/06 及早期发行版,有关 ipnodes 文件的信息,请参见ipnodes 数据库。
此文件定义了本地主机上的物理网络接口。本地系统上至少应该有一个 /etc/hostname.interface 文件。Oracle Solaris : 安装程序为安装过程中找到的第一个接口创建 /etc/hostname.interface 文件。此接口通常具有最低的设备编号(例如 eri0),并称为主网络接口。如果安装程序找到其他接口,您也可以在安装过程中对这些接口进行配置(可选)。
如果为同一接口创建备用主机名文件,则备用文件也必须遵循命名格式 hostname.[0-9]*,如 hostname.qfe0.a123。诸如 hostname.qfe0.bak 或 hostname.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 接口配置文件。
此文件应该包含一项内容, 即本地系统的主机名。例如,在 timbuktu 系统上,/etc/nodename 文件将会包含 timbuktu 项。
此文件应该包含一项内容, 即本地主机网络所属的管理域的全限定域名。可以将此名称提供给 Oracle Solaris : 安装程序或在以后编辑此文件。有关网络域的更多信息,请参阅《系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)》。
对于每个直接连接到网络的路由器,此文件可以包含一个对应项。该项应该是作为网络间路由器的网络接口的名称。/etc/defaultrouter 文件的存在表明系统是支持静态路由的。
hosts 数据库包含网络中各系统的 IPv4 地址和主机名。如果使用 NIS 或 DNS 名称服务,或者使用 LDAP 目录服务,则 hosts 数据库在专门存储主机信息的数据库中进行维护。例如,在运行 NIS 的网络中,hosts 数据库在 hostsbyname 文件中进行维护。
如果使用本地文件提供名称服务,则 hosts 数据库将在 /etc/inet/hosts 文件中进行维护。此文件包含主网络接口的主机名和 IPv4 地址、连接到系统的其他网络接口的主机名和 IPv4 地址以及系统必须检查的其他网络地址。
为了与基于 BSD 的操作系统兼容,/etc/hosts 文件是指向 /etc/inet/hosts 的符号链接。
/etc/inet/hosts 文件使用以下基本语法。有关完整的语法信息,请参阅 hosts(4) 手册页。
IPv4-address hostname [nicknames] [#comment]
包含本地主机必须识别的每个接口的 IPv4 地址。
包含设置期间指定给系统的主机名,以及指定给本地主机必须识别的其他网络接口的主机名。
包含主机别名的可选字段。
可选的注释字段。
在系统上运行 Oracle Solaris : 安装程序时,该程序将配置初始 /etc/inet/hosts 文件。此文件包含本地主机所需的最少数目的项。其中包括回送地址、主机 IPv4 地址以及主机名。
例如,Oracle Solaris : 安装程序可能为图 5–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 文件。
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.200 和 192.168.201。
NIS 和 DNS 名称服务以及 LDAP 目录服务在一台或多台服务器上维护主机名和地址。这些服务器维护 hosts 数据库,该数据库包含服务器所在的网络中每台主机和路由器(如果适用)的信息。有关这些服务的更多信息,请参阅《系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)》。
在使用本地文件提供名称服务的网络中,以本地文件模式运行的系统将查询各自的 /etc/inet/hosts 文件,以查找网络中其他系统的 IPv4 地址和主机名。因此,这些系统的 /etc/inet/hosts 文件必须包含以下内容:
回送地址
本地系统(主网络接口)的 IPv4 地址和主机名
连接到此系统的其他网络接口的 IPv4 地址和主机名(如果适用)
本地网络中所有主机的 IPv4 地址和主机名
系统必须知晓的任何路由器的 IPv4 地址和主机名(如果适用)
您的系统想通过其主机名引用的任何系统的 IPv4 地址。
图 10–1 显示了系统 tenere 的 /etc/inet/hosts 文件。此系统以本地文件模式运行。请注意,此文件包含 192.9.200 网络中每个系统的 IPv4 地址和主机名。此文件还包含接口名称 timbuktu-201 及其对应的 IPv4 地址。此接口将 192.9.200 网络连接到 192.9.201 网络。
配置为网络客户机的系统对其回送地址和 IPv4 地址使用本地 /etc/inet/hosts 文件。
在 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 地址同时添加到 hosts 和 ipnodes 文件中,而只需将 IPv6 地址添加到 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 数据库由网络及其关联的子网掩码的列表组成。
创建子网时,每个新网络必须是单独的物理网络。不能在单个物理网络中应用子网划分。
在大型互联网络中,子网划分是一种最大程度地利用有限的 32 位 IPv4 地址空间并减小路由表大小的方法。借助地址类,子网划分提供了一种将部分主机地址空间分配给网络地址的方法,从而使您具有更多网络。分配给新网络地址的主机地址空间部分称为子网号。
除了更有效地利用 IPv4 地址空间之外,子网划分还具有多种管理方面的优势。随着网络数量的增长,路由过程将变得非常复杂。例如,某个小型组织可能为每个本地网络分配了一个 C 类网络号。随着组织的发展,管理大量不同的网络号可能变得异常复杂。一个更好的解决办法是将少量 B 类网络号分配给组织中的各个主要部门。例如,可以为工程部分配一个 B 类网络,为业务部分配一个 B 类网络,等等。然后,使用通过子网划分获得的附加网络号,将每一个 B 类网络划分为多个附加网络。这种划分方式还可以减少必须在路由器间传送的路由信息量。
在进行子网划分的过程中,需要选择一个网络范围的网络掩码。网络掩码确定主机地址空间中有多少位以及哪些位表示子网号,有多少位以及哪些位表示主机号。请记住,完整的 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 位。
如果您的网络运行 NIS 或 LDAP,则提供这些名称服务的服务器将维护 netmasks 数据库。对于使用本地文件提供名称服务的网络,此信息在 /etc/inet/netmasks 文件中维护。
为了与基于 BSD 的操作系统兼容,/etc/netmasks 文件是指向 /etc/inet/netmasks 的符号链接。
以下示例显示 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 标准服务,并可以在系统运行时重新启动服务。使用服务管理工具 (Service Management Facility, SMF) 可以修改标准 Internet 服务或由 inetd 守护进程启动其他服务。
使用以下 SMF 命令可以管理由 inetd 启动的服务:
对服务的管理性操作,例如启用、禁用或重新启动。有关详细信息,请参阅 svcadm(1M) 手册页。
查询服务状态。有关详细信息,请参阅 svcs(1) 手册页。
显示和修改服务的属性。有关详细信息,请参阅 inetadm(1M) 手册页。
inetadm 配置文件中针对特定服务的 proto 字段值指示该服务所基于的传输层协议。如果该服务只适用于 IPv4,则 proto 字段必须指定为 tcp、udp 或 sctp。
有关使用 SMF 命令的说明,请参阅《系统管理指南:基本管理》中的“SMF 命令行管理实用程序”。
有关使用 SMF 命令添加在 SCTP 上运行的服务的任务信息,请参阅如何添加使用 SCTP 协议的服务。
有关添加同时处理 IPv4 和 IPv6 请求的服务的信息,请参阅inetd Internet 服务守护进程。
网络数据库是提供配置网络所需信息的文件。网络数据库如下所示:
hosts
netmasks
ethers 数据库
bootparams
protocols
services
networks
如果网络分为多个子网,则在配置过程中,需要编辑 hosts 数据库和 netmasks 数据库。bootparams 和 ethers 这两个数据库用于将系统配置为网络客户机。其余数据库由操作系统使用并很少需要编辑。
尽管 nsswitch.conf 文件不是网络数据库,但是您需要将此文件与相关的网络数据库一同进行配置。nsswitch.conf 指定要用于特定系统的名称服务: 本地文件、NIS、DNS 或 LDAP。
网络数据库的格式取决于您为网络选择的名称服务的类型。例如,hosts 数据库至少包含本地系统的主机名和 IPv4 地址以及直接连接到本地系统的所有网络接口的主机名和 IPv4 地址。但是,hosts 数据库也可以包含其他 IPv4 地址和主机名,具体取决于网络中的名称服务类型。
在 Solaris 10 11/06 之后的 Oracle Solaris : 发行版中,将删除 ipnodes 数据库。
网络数据库 |
本地文件 |
NIS 映射 |
---|---|---|
/etc/inet/hosts |
hosts.byaddr hosts.byname |
|
ipnodes |
/etc/inet/ipnodes |
ipnodes.byaddr ipnodes.byname |
/etc/inet/netmasks |
netmasks.byaddr |
|
/etc/ethers |
ethers.byname ethers.byaddr |
|
/etc/bootparams |
bootparams |
|
/etc/inet/protocols |
protocols.byname protocols.bynumber |
|
/etc/inet/services |
services.byname |
|
/etc/inet/networks |
networks.byaddr networks.byname |
本书介绍的是使用本地文件提供名称服务的网络所查看的网络数据库。
hosts 数据库介绍了有关 hosts 数据库的信息。
netmasks 数据库介绍了有关 netmasks 数据库的信息。
对于 Solaris 10 11/06 及早期发行版,有关 ipnodes 数据库的信息,请参见ipnodes 数据库。
有关网络数据库在 NIS、DNS 和 LDAP 中的对应关系的信息,请参阅《系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)》。
/etc/nsswitch.conf 文件定义了网络数据库的搜索顺序。基于在安装过程中指定的名称服务,Oracle Solaris : 安装程序为本地系统创建缺省的 /etc/nsswitch.conf 文件。如果选择了 "None" 选项,表示使用本地文件提供名称服务,生成的 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 字段可以列出操作系统搜索的许多数据库类型之一。例如,此字段可以指示影响用户的数据库(例如 passwd、aliases )或网络数据库。对于网络数据库,参数 name-service-to-search 的值可以是 files、nis 或 nis+。hosts 数据库也可以将 dns 作为要搜索的名称服务。也可以列出多个名称服务,例如 nis+ 和 files。
在示例 10–5 中,指示的唯一搜索选项为 files。因此,除了网络数据库信息之外,本地系统还从 /etc 和 /etc/inet 目录中的文件获取安全信息和自动挂载信息。
/etc 目录包含由 Oracle Solaris : 安装程序创建的 nsswitch.conf 文件。此目录还包含以下名称服务的模板文件:
nsswitch.files
nsswitch.nis
如果要从一个名称服务更改到另一个名称服务,可以将相应的模板复制到 nsswitch.conf,也可以有选择性地编辑 nsswitch.conf 文件,将缺省名称服务更改为搜索单个数据库。
例如,在运行 NIS 的网络中,可能必须更改网络客户机上的 nsswitch.conf 文件。bootparams 和 ethers 数据库的搜索路径必须将 files 列为第一个选项,然后是 nis。以下示例说明了正确的搜索路径。
# /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 数据库包含配置为以网络客户机模式引导的系统所使用的信息。如果网络中具有网络客户机,则需要编辑此数据库。有关过程,请参见配置网络客户机。此数据库是根据 /etc/bootparams 文件中输入的信息生成的。
bootparams(4) 手册页介绍了此数据库的完整语法。基本语法为:
system-name file-key-server-name:pathname
对于每个网络客户机系统,该项可能包含以下信息: 客户机名称、关键字列表、服务器名称以及路径名。每项的第一个条目都是客户机系统的名称。第一个条目以外的所有其他条目都是可选的。以下是一个示例。
myclient root=myserver : /nfsroot/myclient \ swap=myserver : /nfsswap//myclient \ dump=myserver : /nfsdump/myclient |
在此示例中,dump= 告知客户机主机不要查找转储文件。
在大多数情况下,应在编辑 bootparams 数据库时使用通配符项以支持客户机。该项为:
* root=server:/path dump=:
星号 (*) 通配符指示该项应用于 bootparams 数据库中所有未特别命名的客户机。
ethers 数据库是根据在 /etc/ethers 文件中输入的信息构建的。此数据库将主机名与其介质访问控制 (Media Access Control, MAC) 地址进行关联。仅当运行 RARP 守护进程时,才需要创建 ethers 数据库。也就是说,如果正在配置网络客户机,则需要创建此数据库。
RARP 使用该文件将 MAC 地址映射到 IP 地址。如果正在运行 RARP 守护进程 in.rarpd,则需要设置 ethers 文件并在运行此守护进程的所有主机上维护此文件,以便将所做的更改应用到网络中。
ethers(4) 手册页介绍了此数据库的完整语法。基本语法为:
MAC-address hostname #comment |
主机的 MAC 地址
主机的正式名称
要附加到文件中某项的注释
设备制造商提供 MAC 地址。如果在系统引导过程中未显示 MAC 地址,请参见硬件手册中的相关帮助信息。
向 ethers 数据库添加项时,请确保主机名与 hosts(对于 Solaris 10 11/06 及早期发行版,为 ipnodes 数据库)中的主名称而不是别名相对应,如下所示。
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 数据库基于 /etc/inet/networks 文件中的信息。此文件包含通过路由器与您网络连接的所有网络的名称。
Oracle Solaris : 安装程序配置初始 networks 数据库。但是,如果在现有网络拓扑中添加了新网络,必须更新此数据库。
networks(4) 手册页介绍了 /etc/inet/networks 的完整语法。基本格式为:
network-name network-number nickname(s) #comment |
网络的正式名称
由 ISP 或 Internet 注册机构指定的编号
用于识别网络的任何其他名称
要附加到文件中某项的注释
您必须对 networks 文件进行维护。netstat 程序使用此数据库中的信息生成状态表。
以下是一个 /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 数据库列出了在系统上安装的 TCP/IP 协议及其协议编号。Oracle Solaris : 安装程序自动创建此数据库。此文件很少需要进行管理。
protocols(4) 手册页介绍了此数据库的语法。以下是一个 /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 数据库列出了 TCP 和 UDP 服务的名称及其已知的端口号。此数据库由调用网络服务的程序使用。在 Oracle Solaris : 安装过程中自动创建 services 数据库。通常,此数据库不需要进行任何管理。
services(4) 手册页介绍了完整的语法信息。以下是从典型的 /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 10 中支持的两个路由协议:路由信息协议 (Routing Information Protocol, RIP) 和 ICMP 路由器搜索 (Router Discovery, RDISC)。RIP 和 RDISC 都是标准 TCP/IP 协议。有关 Oracle Solaris 10 中可用的路由协议的完整列表,请参阅表 5–1 和表 5–2。
RIP 由系统引导时自动启动的路由选择守护进程 in.routed 实现。如果在指定了 s 选项的情况下 in.routed 在路由器上运行,它将使用一个可到达每个可访问网络的路由填充内核路由表,并通过所有网络接口通告“可访问性”。
如果在指定了 q 选项的情况下 in.routed 在主机上运行,它将提取路由信息,但不会通告可访问性。在主机上,可以使用两种方法提取路由信息:
不指定 S 标志(大写 "S":“空间节省模式”)。in.routed 完全按照它在路由器上的运行方式生成完整的路由表。
指定 S 标志。in.routed 创建一个最小内核表,其中包含每个可用路由器的一个缺省路由。
主机使用 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 类网络号使用 IPv4 地址的前 8 位作为其“网络部分”。其余的 24 位包含 IPv4 地址的主机部分,如下图所示。
为 A 类网络号的第一个字节指定的值应该介于 0–127 范围内。以 IPv4 地址 75.4.10.4 为例。第一个字节中的值 75 指示主机位于 A 类网络中。其余字节 4.10.4 构成了主机地址。只有 A 类编号的第一个字节已向 IANA 注册。其余三个字节的使用完全由网络号的属主决定。只有 127 个 A 类网络。每个 A 类网络都可以接纳最多 16,777,214 台主机。
B 类网络号将 16 位用于网络号,并将 16 位用于主机号。B 类网络号的第一个字节介于 128–191 的范围内。在编号 172.16.50.56 中,前两个字节 172.16 已向 IANA 注册,它们构成了网络地址。最后两个字节 50.56 表示主机地址,由网络号的属主根据自己的判断指定。下图说明了一个 B 类地址。
C 类网络号将 24 位用于网络号,并将 8 位用于主机号。C 类网络号适用于主机很少的网络-最多 254 台。C 类网络号占用 IPv4 地址的前三个字节。只有第四字节由网络属主根据自己的判断指定。下图说明了 C 类地址中的字节。
C 类网络号的第一个字节介于 192–223 范围内。第二和第三个字节分别介于 1–255 范围内。192.168.2.5 是一个典型的 C 类地址。前三个字节 192.168.2 构成了网络号。最后一个字节 5 是主机号。
本章包含以下有关 Oracle Solaris 10 IPv6 实现的参考信息。
有关 IPv6 的概述,请参阅第 3 章。有关配置启用 IPv6 的网络的任务,请参阅第 7 章。
在 Solaris 10 7/07 中,/etc/inet/ipnodes 文件已过时。只能对早期 Oracle Solaris 10 发行版使用 /etc/inet/ipnodes,如以下各个过程中所述。
第 3 章介绍了最常见的 IPv6 寻址格式:单点传送站点地址和链路本地地址。本节深入说明了第 3 章中未详细介绍的寻址格式:
如果计划从路由器或主机端点配置 6to4 隧道,则必须在端点系统上的 /etc/inet/ndpd.conf 文件中通告 6to4 站点前缀。有关配置 6to4 隧道的介绍和任务,请参阅如何配置 6to4 隧道。
下图显示了 6to4 站点前缀的各个部分。
下图显示了 6to4 站点的子网前缀(如 ndpd.conf 文件中包含的子网前缀)的各个部分。
本表解释了 6to4 子网前缀的各个部分、这些部分各自的长度及其定义。
部分 |
长度 |
定义 |
---|---|---|
前缀 |
16 位 |
6to4 前缀标签 2002 (0x2002)。 |
IPv4 地址 |
32 位 |
已在 6to4 接口上配置的唯一的 IPv4 地址。对于通告,需要指定用十六进制形式表示的 IPv4 地址,而不要指定点分十进制形式的 IPv4 地址。 |
子网 ID |
16 位 |
子网 ID,对于 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 多点传送地址提供了一种将相同的信息或服务分发到一组已定义接口(称为多点传送组)的方法。通常,多点传送组的接口位于不同的节点上。一个接口可以属于任意数量的多点传送组。发送到多点传送地址的包将到达多点传送组的所有成员。例如,使用多点传送地址的一种情况就是广播信息,这与 IPv4 广播地址的功能相似。
下表显示了多点传送地址的格式。
表 11–1 IPv6 多点传送地址的格式
8 位 |
4 位 |
4 位 |
8 位 |
8 位 |
64 位 |
32 位 |
11111111 |
FLGS |
SCOP |
Reserved |
Plen |
Network prefix |
Group ID |
下面是每个字段的内容摘要。
11111111-将地址标识为多点传送地址。
FLGS – 设置四个标志 0、0、P、T。前两个标志必须为零。P 字段具有下列值之一:
0 = 不是基于网络前缀指定的多点传送地址
1 = 基于网络前缀指定的多点传送地址
如果 P 设置为 1,则 T 也必须为 1。
Reserved-保留值,为零。
Plen-对于基于站点前缀指定的多点传送地址,是站点前缀中标识子网的位数。
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 数据包头中的字段以及这些字段的顺序。
版本-Internet 协议的 4 位版本号,此处为 6。
通信类-8 位通信类字段。
流标签-20 位字段。
有效负荷长度-16 位无符号整数,这是紧随 IPv6 数据包头之后的其余数据包部分(用八位字节表示)。
下一个头-8 位选定器。标识紧跟在 IPv6 数据包头后面的头的类型。使用与 IPv4 协议字段相同的值。
跃点限制-8 位无符号整数。按转发包的每个节点逐一递减。如果跃点限制递减到零,包就会被丢弃。
源地址-128 位。包初始发送者的地址。
目标地址-128 位。包预定接收者的地址。如果存在可选的路由头,则预定接收者不一定就是接收者。
IPv6 选项位于包中的 IPv6 数据包头和传输层头之间的单独扩展头中。在包到达其最终目标之前,包传送路径中的任何路由器都不会检查或处理大多数 IPv6 扩展头。此功能显著改进了路由器对于包含选项的包的路由性能。在 IPv4 中,只要存在任何选项,就会要求路由器检查所有的选项。
与 IPv4 选项不同,IPv6 扩展头可以为任意长度。此外,一个包可承载的选项数量也不限于 40 字节。除了 IPv6 选项的处理方式,此功能还允许将 IPv6 选项用于那些在 IPv4 中不可行的功能。
为了在处理后续选项头以及随后的传输协议时提高性能,IPv6 选项始终设置为 8 个八位字节长度的整数倍。8 个八位字节长度的整数倍可以使后续的头保持对齐。
下面是目前已定义的 IPv6 扩展头:
路由-扩展路由,如 IPv4 稀疏源路由
分段-分段和重新装配
验证-完整性、验证和安全性
封装安全有效负荷-保密性
逐跳寻径 (Hop-by-Hop) 选项-需要进行逐跳寻径处理的特殊选项
目标选项-由目标节点检查的可选信息
双栈通常是指协议栈中的所有级别(从应用层到网络层)都是重复的。同时运行 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 协议套件的各个层中工作。
在双栈方案中,除支持 IPv4 之外,部分主机和路由器还应升级为支持 IPv6。双栈方案可以确保已升级的节点始终能够使用 IPv4 与仅支持 IPv4 的节点进行交互。
本节介绍在 Oracle Solaris : 中启用 IPv6 的文件、命令和守护进程。
本节介绍属于 IPv6 实现的配置文件:
/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 |
0 |
指定路由器所发送的通告消息中“重新传输计时器”字段的值。 |
AdvCurHopLimit |
Internet 的当前直径 |
指定路由器所发送的通告消息中当前跃点限制的值。 |
AdvDefaultLifetime |
3 + MaxRtrAdvInterval |
指定路由器通告的缺省生命周期。 |
AdvLinkMTU |
0 |
指定路由器所发送的最大传输单元 (maximum transmission unit, MTU) 值。零表示没有为路由器指定 MTU 选项。 |
AdvManaged Flag |
False |
指示路由器通告中“管理地址配置”标志的值。 |
AdvOtherConfigFlag |
False |
指示路由器通告中“其他有状态配置”标志的值。 |
AdvReachableTime |
0 |
指定路由器所发送的通告消息中“可访问时间”字段的值。 |
AdvSendAdvertisements |
False |
指示节点是否应当发出通告并响应路由器请求。需要在 ndpd.conf 文件中将该变量明确设置为 "TRUE" 以启用路由器通告功能。有关更多信息,请参阅如何配置启用了 IPv6 的路由器。 |
DupAddrDetect Transmits |
1 |
定义在对本地节点地址进行重复地址检测期间,相邻节点搜索协议应当发送的连续相邻节点请求消息的数量。 |
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 |
设置临时地址的有效生命周期。有关更多信息,请参阅如何配置临时地址。 |
表 11–4 /etc/inet/ndpd.conf 前缀配置变量
变量 |
缺省值 |
定义 |
---|---|---|
AdvAutonomousFlag |
True |
指定“前缀信息”选项中“自治标志”字段的值。 |
AdvOnLinkFlag |
True
|
指定“前缀信息”选项中“在链路 (on-link)”标记(“L 位”)的值。 |
AdvPreferredExpiration |
未设置 |
指定首选的前缀失效日期。 |
AdvPreferredLifetime |
604800 秒 |
指定“前缀信息”选项中首选生命周期的值。 |
AdvValidExpiration |
未设置 |
指定有效的前缀失效日期。 |
AdvValidLifetime |
2592000 秒 |
指定所配置的前缀的有效生命周期。 |
以下示例显示了如何在 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 在启动时使用 /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 |
指示网络接口设备。可以是物理网络接口(如 eri 或 qfe),也可以是逻辑接口(如隧道)。有关更多详细信息,请参见IPv6 接口配置文件。
列出一个或多个在检测设备时要推入设备的 STREAMS 模块。
指示物理连接点。
也可以使用语法 [.[.]]。
以下是 IPv6 配置文件有效名称的示例:
hostname6.qfe0 hostname.ip.tun0 hostname.ip6.tun0 hostname6.ip6to4tun0 hostname6.ip.tun0 hostname6.ip6.tun0 |
/etc/inet/ipaddrsel.conf 文件包含 IPv6 缺省地址选择策略表。如果在安装 Oracle Solaris : 时启用了 IPv6,则该文件包含表 11–5 中所示的内容。
可以编辑 /etc/inet/ipaddrsel.conf 的内容。但是,在大多数情况下,应当避免修改此文件。如果一定要进行修改,请参阅如何管理 IPv6 地址选择策略表过程。有关 ippaddrsel.conf 的更多信息,请参阅修改 IPv6 地址选择策略表的原因和 ipaddrsel.conf(4) 手册页。
本节介绍实现 Oracle Solaris : IPv6 时添加的命令,还会介绍为支持 IPv6 而对现有命令进行的修改。
使用 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 缺省地址选择策略表。如果确实需要管理策略表,请使用 ipaddrsel 命令。
在下列情况下,您可能希望修改策略表:
如果系统中有一个用于 6to4 隧道的接口,可以赋予 6to4 地址更高的优先级。
如果希望与特定的目标地址进行通信时仅使用特定的源地址,可以将这些地址添加到策略表中。然后,可以使用 ifconfig 将这些地址标记为首选地址。
如果希望 IPv4 地址优先于 IPv6 地址,可以将 ::ffff:0:0/96 的优先级更改为较大的数字。
如果需要为过时的地址指定较高的优先级,可以将过时的地址添加到策略表中。例如,现在,本地站点地址在 IPv6 中已过时。这些地址的前缀为 fec0::/10。可以更改策略表,以便赋予本地站点地址更高的优先级。
有关 ipaddrsel 命令的详细信息,请参阅 ipaddrsel(1M) 手册页。
使用 6to4 隧道连接,可以在相互隔离的 6to4 站点之间进行通信。但是,要使用本地的非 6to4 IPv6 站点传输包,6to4 路由器必须使用 6to4 中继路由器建立一个隧道。然后,6to4 中继路由器将 6to4 包转发到 IPv6 网络,并最终将其传输到本地 IPv6 站点。如果启用了 6to4 的站点必须与本地 IPv6 站点交换数据,请使用 6to4relay 命令启用相应的隧道。
由于使用中继路由器不太安全,因此 Oracle Solaris : 在缺省情况下会禁用与中继路由器的隧道连接。在部署该方案之前,请认真考虑在建立通往 6to4 中继路由器的隧道时所涉及的问题。有关 6to4 中继路由器的详细信息,请参阅6to4 中继路由器隧道的注意事项。如果决定启用 6to4 中继路由器支持,可以参阅如何配置 6to4 隧道中的相关操作步骤。
6to4relay -e [-a IPv4-address] -d -h |
在 6to4 路由器和某个任意点传送 6to4 中继路由器之间启用隧道支持。隧道端点地址随后将设置为 192.88.99.1(6to4 中继路由器任意点传送组的缺省地址)。
在 6to4 路由器和具有指定 IPv4-address 的 6to4 中继路由器之间启用隧道支持。
禁用对通往 6to4 中继路由器的隧道的支持,这是 Oracle Solaris : 的缺省设置。
显示 6to4relay 的帮助。
有关更多信息,请参阅 6to4relay(1M) 手册页。
不带参数的 6to4relay 命令显示 6to4 中继路由器支持的当前状态。以下示例显示了在 Oracle Solaris : 中实现的 IPv6 的缺省状态。
# /usr/sbin/6to4relay 6to4relay:6to4 Relay Router communication support is disabled |
如果启用了中继路由器支持,6to4relay 将显示以下输出:
# /usr/sbin/6to4relay 6to4relay:6to4 Relay Router communication support is enabled IPv4 destination address of Relay Router=192.88.99.1 |
如果为 -6to4relay 命令指定了 a 选项和 IPv4 地址,将显示用 -a 提供的 IPv4 地址,而不显示 192.88.99.1。
6to4relay 不报告 -d、-e 和 -a IPv4 address 选项是否成功执行。但是,6to4relay 会显示在运行这些选项时可能生成的任何错误消息。
可以使用 ifconfig 命令对IPv6 接口和隧道连接模块进行检测。ifconfig 使用一组经过扩展的 ioctl 来配置 IPv4 和 IPv6 网络接口。下面描述了可支持 IPv6 操作的 ifconfig 选项。有关涉及 ifconfig 命令的一系列 IPv4 和 IPv6 任务,请参见使用 ifconfig 命令监视接口配置。
设置接口索引。
设置隧道源或目标。
创建下一个可用的逻辑接口。
删除具有特定 IP 地址的逻辑接口。
设置接口的点对点目标地址。
为接口设置地址和/或网络掩码。
设置接口的子网地址。
启用或禁用在接口上传输包。
第 7 章介绍了 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 |
以下形式的 ifconfig 命令可删除 hme0:3 逻辑接口:
# ifconfig hme0:3 inet6 down # ifconfig hme0 inet6 removeif 1234::5678 |
# 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 |
在配置之后报告设备的新状态。
以下示例显示在 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 |
以下示例显示了配置 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 |
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) 手册页。有关使用此命令的过程的说明,请参见如何显示套接字的状态。
snoop 命令可以捕获 IPv4 和 IPv6 包。此命令可以显示 IPv6 数据包头、IPv6 扩展头、ICMPv6 数据包头和相邻节点搜索协议数据。缺省情况下,snoop 命令既可以显示 IPv4 包又可以显示 IPv6 包。如果您指定了 ip 或 ip6 协议关键字,snoop 命令将只显示 IPv4 包或 IPv6 包。使用 IPv6 的过滤选项,可以对所有的 IPv4 和 IPv6 包进行过滤,以便仅显示 IPv6 包。有关详细信息,请参见 snoop(1M) 手册页。有关使用 snoop 命令的过程,请参见如何监视 IPv6 网络通信。
route 命令既作用于 IPv4 路由又作用于 IPv6 路由,IPv4 路由是缺省设置。如果在命令行中紧跟 route 命令之后使用 -inet6 选项,系统将针对 IPv6 路由执行操作。有关详细信息,请参见 route(1M) 手册页。
ping 命令既可以使用 IPv4 协议又可以使用 IPv6 协议来探测目标主机。具体选择哪个协议取决于由特定目标主机的名称服务器所返回的地址。缺省情况下,如果名称服务器返回目标主机的 IPv6 地址,ping 命令将使用 IPv6 协议。如果名称服务器仅返回 IPv4 地址,ping 命令将使用 IPv4 协议。可以使用 -A 命令行选项指定要使用的协议以覆盖该操作。
有关详细信息,请参见 ping(1M) 手册页。有关使用 ping 的过程,请参阅使用 ping 命令探测远程主机。
可以使用 traceroute 命令跟踪到特定主机的 IPv4 和 IPv6 路由。从协议的角度看,traceroute 与 ping 使用相同的算法。使用 -A 命令行选项可覆盖此选择。使用 -a 命令行选项,可以跟踪到多宿主主机的每个地址的各个单独路由。
有关详细信息,请参见 traceroute(1M) 手册页。有关使用 traceroute 的过程,请参阅使用 traceroute 命令显示路由信息。
本节讨论与 IPv6 相关的守护进程。
in.ndpd 守护进程可实现 IPv6 相邻节点搜索协议和路由器搜索。该守护进程还可实现 IPv6 的地址自动配置功能。下面显示了 in.ndpd 支持的选项。
启用调试功能。
针对特定事件启用调试功能。
指定要从中读取配置数据的文件,而不是缺省的 /etc/inet/ndpd.conf 文件。
列显与每个接口相关的信息。
不回送路由器通告。
忽略收到的包。
指定详细模式,报告各种类型的诊断消息。
启用包跟踪功能。
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) 手册页。
in.ripngd 守护进程可实现用于 IPv6 路由器的下一代路由信息协议 (Routing Information Protocol next-generation, RIPng)。RIPng 定义 IPv6 中与 RIP 等效的协议。在使用 routeadm 命令配置 IPv6 路由器并启用 IPv6 路由时,in.ripngd 守护进程可在路由器上实现 RIPng。
下面显示了 RIPng 支持的选项:
n 指定用于收发 RIPnG 包的备用端口号。
禁止显示路由信息。
强制显示路由信息,即使该守护进程充当路由器也是如此。
禁止使用毒性逆转 (poison reverse)。
如果 in.ripngd 不充当路由器,该守护进程将只输入每个路由器的缺省路由。
启用了 IPv6 的服务器应用程序可以既处理 IPv4 请求又处理 IPv6 请求,也可以仅处理 IPv6 请求。服务器始终通过 IPv6 套接字处理请求。另外,服务器还与相应的客户机使用相同的协议。要为 IPv6 添加或修改服务,请使用服务管理工具 (Service Management Facility, SMF) 中的命令。
有关 SMF 命令的信息,请参阅《系统管理指南:基本管理》中的“SMF 命令行管理实用程序”。
有关使用 SMF 配置在 SCTP 上运行的 IPv4 服务清单的示例任务,请参阅如何添加使用 SCTP 协议的服务。
要配置 IPv6 服务,必须确保该服务 inetadm 配置文件中的 proto 字段中列出了相应的值:
对于既处理 IPv4 请求又处理 IPv6 请求的服务,请选择 tcp6、udp6 或 sctp6。如果 proto 的值为 tcp6、udp6 或 sctp6,则会导致 inetd 向服务器传递 IPv6 套接字。服务器中包含映射到 IPv4 的地址以备 IPv4 客户机发出请求。
对于仅处理 IPv6 请求的服务,请选择 tcp6only 或 udp6only。如果 proto 的值为 tcp6only 或 udp6only,inetd 会向服务器传递 IPv6 套接字。
如果用其他实现来替代 Oracle Solaris : 命令,则必须验证所实现的服务是否支持 IPv6。如果该服务不支持 IPv6,则必须将 proto 值指定为 tcp、udp 或 sctp。
下面是针对 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 指定为 tcp6、udp6 或 sctp6 的配置文件项。但是,远程 shell 服务器 (shell) 和远程执行服务器 (exec) 现在由单个服务实例组成,该服务实例要求 proto 值中同时包含 tcp 和 tcp6only 值。例如,要为 shell 设置 proto 值,可发出以下命令:
# inetadm -m network/shell:default proto="tcp,tcp6only" |
有关写入使用套接字且启用了 IPv6 的服务器的更多详细信息,请参见《编程接口指南》中的“IPv6 extensions to the Socket API”。
在为 IPv6 添加或修改服务时,请记住以下几点:
需要将 proto 值指定为 tcp6、sctp6 或 udp6,以便既支持 IPv4 连接又支持 IPv6 连接。如果将 proto 值指定为 tcp、sctp 或 udp,则该服务仅使用 IPv4。
尽管可以为 inetd 添加使用一对多样式的 SCTP 套接字的服务实例,但是建议不要这样做。inetd 不能处理一对多样式的 SCTP 套接字。
如果某个服务因其 wait-status 或 exec 属性不同而需要两项,则必须从初始服务创建两个实例/服务。
IPv6 引入了相邻节点搜索协议,如 RFC 2461, Neighbor Discovery for IP Version 6 (IPv6) 中所述。有关相邻节点搜索的主要功能的概述,请参阅IPv6 相邻节点搜索协议概述。
本节讨论相邻节点搜索协议的以下功能:
相邻节点搜索功能定义了五种新的 Internet 控制消息协议 (Internet Control Message Protocol, ICMP) 消息。这些消息具有以下用途:
路由器请求-当接口变为启用状态时,主机可以发送路由器请求消息。这种请求要求路由器立即生成路由器通告,而不是在下次预定时间生成。
路由器通告-路由器通告其存在状态、各种链路参数和 Internet 参数。路由器会定期或在响应路由器请求消息时发出通告。路由器通告包含用于确定是否在链路中或用于配置地址的前缀以及建议的跃点限制值等。
相邻节点请求-节点发送相邻节点请求消息,以确定相邻节点的链路层地址,并验证相邻节点是否仍可以通过缓存的链路层地址进行访问。相邻节点请求还可用于检测重复地址。
相邻节点通告-节点发送相邻节点通告消息以响应相邻节点请求消息。节点还可以发送未经请求的相邻节点通告以公布链路层地址更改。
本节概述在自动配置过程中由接口执行的典型步骤。自动配置仅在能够进行多点传送的链路上执行。
启用能够进行多点传送的接口,例如,在启动某个节点上的系统时启用该接口。
节点在执行自动配置过程时首先为接口生成链路本地地址。
链路本地地址是根据接口的介质访问控制 (Media Access Control, MAC) 地址构造的。
节点发送相邻节点请求消息,其中包含暂定为目标的链路本地地址。
发送此消息的目的在于验证要使用的地址未由链路上的其他节点占用。在验证之后,可以将链路本地地址指定给接口。
如果建议的地址已被另一个节点使用,则该节点将返回一条相邻节点通告,声明该地址正在使用中。
如果另一个节点也正在尝试使用同一地址,则该节点也会针对该目标发送一条相邻节点请求。
相邻节点请求传输或重新传输的数量以及连续请求之间的延迟与链路有关。如有必要,可以设置这些参数。
如果某个节点发现它要使用的链路本地地址不唯一,则自动配置过程会停止。此时,您必须手动配置该接口的链路本地地址。
要简化恢复操作,可以提供一个备用接口 ID 来覆盖缺省标识符。这样,自动配置机制就可以使用这个可能唯一的新接口 ID 继续工作。
如果某个节点发现它要使用的链路本地地址唯一,该节点会将此地址指定给这个接口。
此时,该节点与相邻节点具有 IP 级别的连通性。其余的自动配置步骤只能由主机执行。
自动配置的下一个阶段涉及到获取路由器通告或者确定是否没有路由器存在。如果存在路由器,路由器会发送路由器通告,以指定主机应当执行哪种类型的自动配置。
路由器定期发送路由器通告。但是,相邻通告之间的延迟通常比执行自动配置的主机可以等待的时间要长。为了快速获取通告,主机可以向所有路由器多点传送组发送一个或多个路由器请求。
路由器通告还包含前缀变量,其中包含无状态地址自动配置用于生成前缀的信息。路由器通告中“无状态地址自动配置”字段是单独处理的。“地址自动配置”标志是一个包含前缀信息的选项字段,它指示该选项是否可以应用于无状态自动配置过程。如果该选项字段确实适用,则其他选项字段中包含具有生命周期值的子网前缀。这些值指示根据前缀创建的地址保持优先和有效的时间长度。
因为路由器会定期生成路由器通告,所以主机会不断收到新通告。启用了 IPv6 的主机可处理包含在每个通告中的信息。主机会添加到这些信息中,还会刷新在以前的通告中收到的信息。
出于安全方面的考虑,在将每个地址指定给接口之前,必须测试它们是否唯一。对于通过无状态自动配置过程创建的地址,情况会有所不同。地址是否唯一主要由地址中基于接口 ID 创建的那一部分来确定。因此,如果经过验证,节点的链路本地地址唯一,则无需再逐一测试其他地址。这些地址必须是根据同一个接口 ID 创建的。与之相反,对于手动获取的所有地址,必须逐一测试它们是否唯一。某些站点的系统管理员认为执行重复地址检测得不偿失。对于这些站点,可通过设置每接口配置标志来禁用重复地址检测功能。
为了加速自动配置过程,主机可以生成其链路本地地址,并在等待路由器通告的同时验证该地址是否唯一。路由器可能会延迟几秒来响应路由器请求。因此,如果连续执行两个步骤,则完成自动配置所必需的总时间可能会非常长。
相邻节点搜索功能使用相邻节点请求消息来确定是否可以向同一个单点传送地址指定多个节点。相邻节点不可访问性检测功能检测相邻节点或到相邻节点的转发路径中是否有故障。该检测功能要求确认发送到某个相邻节点的包能够实际到达该相邻节点,还确定节点的 IP 层是否能够正确处理这些包。
相邻节点不可访问性检测功能使用来自以下两个来源的确认: 上层协议和相邻节点请求消息。如有可能,上层协议会确认某个连接正在执行转发。例如,当收到新的 TCP 确认时,上层协议会确认以前发送的数据已正确传送。
如果某个节点没有收到来自上层协议的肯定确认,该节点将发送单点传送相邻节点请求消息。这些消息会请求相邻节点通告,并根据此通告确认下一个跃点的可访问性。为了减少不必要的网络通信流量,探测消息只会发送到该节点将包实际发送到的相邻节点。
为了确保所有已配置的地址在特定链路上的唯一性,节点需要针对这些地址运行重复地址检测算法。在将这些地址指定给接口之前,必须先针对节点运行该算法。重复地址检测算法是针对所有地址执行的。
本节中描述的自动配置过程仅适用于主机,而不适用于路由器。因为主机自动配置过程使用由路由器通告的信息,所以路由器需要通过其他方法进行配置。但是,路由器可使用本章中描述的机制来生成链路本地地址。另外,在将地址指定给接口之前,路由器应当能够通过针对所有地址的重复地址检测算法。
代表目标地址接受包的路由器可以发出不可覆盖的相邻节点通告。路由器可以接受无法响应相邻节点请求的目标地址的包。目前未指定对于代理的使用。但是,代理通告有可能会用来处理诸如已移出链路的移动节点之类的情况。请注意,在处理未实现此协议的节点时,不应将使用代理作为一般机制。
具有复制接口的节点可能需要在同一个链路上的多个网络接口之间,对所收到的传入包进行负载平衡。这样的节点会将多个链路本地地址指定给同一个接口。例如,单个网络驱动程序可以将多个网络接口卡表示为具有多个链路本地地址的单个逻辑接口。
负载平衡的处理方式如下:允许路由器忽略来自路由器通告包的源链路本地地址。因此,相邻节点必须使用相邻节点请求消息来获知路由器的链路本地地址。于是,所返回的相邻节点通告消息可能包含链路本地地址,这些地址会因请求发出者而异。
已知其链路本地地址发生更改的节点可以发出未经请求的多点传送相邻节点通告包。该节点可以向所有的节点发送多点传送包,从而更新所缓存的已无效的链路本地地址。发送未经请求的通告仅是为了提高性能。相邻节点不可访问性检测算法可确保所有的节点都能够可靠地搜索新地址,尽管延迟时间可能会稍长些。
IPv6 相邻节点搜索协议的功能与下列 IPv4 协议的组合相对应: 地址解析协议 (Address Resolution Protocol, ARP)、Internet 控制消息协议 (Internet Control Message Protocol, ICMP)、路由器搜索和 ICMP 重定向。IPv4 对于相邻节点不可访问性检测没有公认的协议或机制。但是,主机要求确实为停用网关检测指定了一些可能的算法。停用网关检测所解决的问题是相邻节点不可访问性检测所能解决的问题的一部分。
以下是对相邻节点搜索协议和一组相关 IPv4 协议进行的比较。
路由器搜索是基础 IPv6 协议集的一部分。IPv6 主机无需针对路由协议执行 snoop 即可查找路由器。IPv4 使用 ARP、ICMP 路由器搜索和 ICMP 重定向来搜索路由器。
路由器通告功能允许自动配置地址。在 IPv4 中未实现自动配置过程。
相邻节点搜索允许 IPv6 路由器通告主机要在链路上使用的 MTU。因此,在缺乏完善定义的 MTU 的链路上,所有的节点都使用相同的 MTU 值。同一个网络上的 IPv4 主机可能具有不同的 MTU。
与 IPv4 广播地址不同的是,IPv6 地址解析多点传送分布到 40 亿 (2^32) 个多点传送地址上,这会大大减少目标以外的节点上与地址解析有关的中断。而且,非 IPv6 机器根本就不应当中断。
多个站点前缀可以与同一个 IPv6 网络相关联。缺省情况下,主机可以从路由器通告中获知所有的本地站点前缀。但是,可以将路由器配置为忽略来自路由器通告的部分或全部前缀。在这种情况下,主机会假定目标位于远程网络上。因此,主机会向路由器发送通信。路由器随后可以根据需要发出重定向命令。
与 IPv4 不同的是,IPv6 重定向消息的接收者假定下一个新跃点位于本地网络上。在 IPv4 中,主机根据网络掩码会忽略那些指定下一个跃点不在本地网络上的重定向消息。IPv6 重定向机制与 IPv4 中的 Xredirect 功能相似。重定向机制在非广播链路和共享介质链路上非常有用。在这些网络上,节点不应当检查本地链路目标的所有前缀。
IPv6 相邻节点不可访问性检测改进了在路由器存在故障时的包传送能力。此功能改进了包在部分故障链路或分区链路上的传送能力,还改进了包在可更改其链路本地地址的节点上的传送能力。例如,移动节点可移出本地网络,而不会因存在过时的 ARP 高速缓存而失去任何连通性。IPv4 没有与相邻节点不可访问性检测相对应的方法。
与 ARP 不同的是,相邻节点搜索功能使用相邻节点不可访问性检测机制来检测半链路故障。相邻节点搜索功能可避免在没有双向连通性的情况下向相邻节点发送通信。
IPv6 主机使用链路本地地址来唯一标识路由器,从而可以维护路由器关联。对于路由器通告和重定向消息,这种路由器标识功能是必需的。如果站点使用新的全局前缀,主机需要维护路由器关联。IPv4 没有与路由器标识功能相对应的方法。
因为相邻节点搜索消息在接收时的跃点限制为 255,所以,相邻节点搜索协议不会受到来自链路外节点的欺骗攻击。与之相反,IPv4 链路外节点可以发送 ICMP 重定向消息。IPv4 链路外节点还可以发送路由器通告消息。
将地址解析放在 ICMP 层,使得相邻节点搜索比 ARP 更加独立于介质。因此可以使用标准的 IP 验证和安全机制。
在无类域间路由 (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。此功能允许对临界参数进行集中管理。这些参数可以针对路由器设置,它们可自动传播到所连接的全部主机。
节点可通过向多点传送组发送相邻节点请求以要求目标节点返回其链路层地址来完成地址解析。多点传送相邻节点请求消息会发送到目标地址中请求节点的多点传送地址。目标会在单点传送相邻节点通告消息中返回其链路层地址。对于启动器和目标来说,一个包请求/响应对就足以解析对方的链路层地址。启动器的相邻节点请求中包括其链路层地址。
为了在双栈 IPv4/IPv6 站点中尽可能减少相关性,两个 IPv6 节点之间路径中的路由器不必都支持 IPv6。可支持类似网络配置的机制称作隧道。本质上,IPv6 包放在 IPv4 包中,IPv4 包随后通过 IPv4 路由器进行路由,下图说明通过 IPv4 路由器(在该图中用 "R" 指示)的隧道连接机制。
Oracle Solaris : IPv6 实现中包括两种类型的隧道连接机制:
在两个路由器之间配置的隧道,如图 11–5 所示
在端点主机终止的自动隧道
出于其他方面的考虑,目前在 Internet 上,例如,在 IPv4 MBONE(多点传送主干)上,使用已配置的隧道。从操作的角度看,隧道由两个路由器组成,这两个路由器配置为可通过 IPv4 网络建立虚拟的点对点链路。在可以预见的将来,这种隧道很有可能要用在 Internet 的某些部分上。
自动隧道要求使用与 IPv4 兼容的地址。当 IPv6 路由器不可用时,自动隧道可用来连接多个 IPv6 节点。这些隧道可以通过配置自动隧道连接网络接口来从双栈主机或双栈路由器发起。这些隧道总是在双栈主机终止。它们的工作方式如下:通过从与 IPv4 兼容的目标地址中提取目标 IPv4 地址(隧道的端点)来动态确定目标地址。
隧道连接接口具有以下格式:
ip.tun ppa |
在系统启动时,隧道连接模块 (tun) 会由 ifconfig 命令推入 IP 的顶层,从而创建一个虚拟接口。推送操作可通过创建相应的 hostname6.* 文件来实现。
例如,要创建通过 IPv4 网络封装 IPv6 包的隧道(即 IPv6 over IPv4 隧道),可以创建以下文件名:
/etc/hostname6.ip.tun0 |
在对接口进行检测之后,此文件的内容将传递到 ifconfig。此文件内容将变成配置点对点隧道所必需的参数。
下面举例说明 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 命令。可能只有 tsrc 和 tdst 才是必需的,因为所有其他地址都是自动配置的。
在某些情况下,需要为特定的隧道手动配置特定的源和目标链路本地地址。可通过更改配置文件的第一行来包括这些链路本地地址。下面是示例行:
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 |
下面举例说明通过 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 |
下面举例说明通过 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 |
下面举例说明通过 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 支持配置隧道所需的任务(任务列表)。
Oracle Solaris : 中包括 6to4 隧道,这是用来从 IPv4 寻址过渡到 IPv6 寻址的临时首选方法。6to4 隧道允许 IPv6 隔离站点通过一个经由 IPv4 网络(不支持 IPv6)的自动隧道进行通信。要使用 6to4 隧道,必须将 IPv6 网络上的边界路由器配置为 6to4 自动隧道的一个端点。这样,6to4 路由器便可以参与通往另一个 6to4 站点的隧道,如果需要的话,还可以参与通往本地非 6to4 IPv6 站点的隧道。
本节提供有关下列 6to4 主题的参考资料:
6to4 隧道的拓扑
6to4 寻址(包括通告格式)
通过 6to4 隧道的包流的说明
6to4 路由器和 6to4 中继路由器之间隧道的拓扑
配置 6to4 中继路由器支持之前的注意事项
下表介绍用来配置 6to4 隧道的额外任务,以及获得额外有用信息的资源。
任务或详细信息 |
参考 |
---|---|
用来配置 6to4 隧道的任务 | |
与 6to4 相关的 RFC(互联网信息文档和标准) | |
有关 6to4relay 命令(该命令启用对通往 6to4 中继服务器的隧道的支持)的详细信息 | |
6to4 安全问题 |
6to4 隧道提供到任何位置的所有 6to4 站点的 IPv6 连接。 如果 6to4 隧道配置为向中继路由器转发,该隧道也同样提供到所有 IPv6 站点的连接(包括本地 IPv6 Internet)。下图显示了 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 上的接口 hme0 和 hme1。站点 A 任一子网上的所有 IPv6 主机,在收到来自路由器 A 的通告时,都会自动使用 6to4 派生地址重新配置。
站点 B 是另一个隔离的 6to4 站点。为了正确地从站点 A 接收通信,必须在站点 B 上配置边界路由器以支持 6to4。否则,路由器从站点 A 接收的包将因无法识别而被丢弃。
本节介绍从一个 6to4 站点上的主机到远程 6to4 站点上的主机之间的包流。此方案使用图 11–6 中显示的拓扑。而且,它还假定已经配置了 6to4 路由器和 6to4 主机。
6to4 站点 A 的子网 1 上的主机发送传输请求,6to4 站点 B 上的主机作为目标。每个数据包头中均有 6to4 派生的源地址和 6to4 派生的目标地址。
站点 A 的路由器将每个 6to4 包封装到 IPv4 数据包头中。在该过程中,路由器将 IPv4 封装数据包头的目标地址设置为站点 B 的路由器地址。对于每个流经隧道接口的 IPv6 包,其 IPv6 目标地址同时也包含 IPv4 目标地址。因此,路由器将能够确定 IPv4 封装数据包头上设置的 IPv4 目标地址。路由器随后使用标准的 IPv4 路由过程,通过 IPv4 网络转发包。
包通过的任何 IPv4 路由器都使用包的 IPv4 目标地址进行转发。此地址是路由器 B 上某个接口的全局唯一 IPv4 地址,该接口还充当 6to4 伪接口。
来自站点 A 的包到达路由器 B,路由器 B 对 IPv4 数据包头中的 IPv6 包取消封装。
路由器 B 随后使用 IPv6 包中的目标地址将包转发到站点 B 上的接收主机。
6to4 中继路由器充当某些隧道的一个端点,这些隧道的另一个端点是需要与本地非 6to4 IPv6 网络通信的 6to4 路由器。本质上,中继路由器是 6to4 站点和本地 IPv6 站点之间的桥梁。因为此解决方案可能很不安全,所以,在缺省情况下,Oracle Solaris : 不启用对 6to4 中继路由器的支持。但是,如果站点需要这样的隧道,可以使用 6to4relay 命令来启用下面的隧道连接方案。
在图 11–7 中,6to4 站点 A 需要与本地 IPv6 站点 B 上的节点通信。该图显示了从站点 A 经由 IPv4 网络到达 6to4 隧道的通信路径。该隧道将 6to4 路由器 A 和 6to4 中继路由器作为其端点。IPv6 站点 B 所连接到的 IPv6 网络位于 6to4 中继路由器的外部。
本节介绍从 6to4 站点到本地 IPv6 站点之间的包流。此方案使用图 11–7 中显示的拓扑。
6to4 站点 A 上的主机发送一个传输信号,将本地 IPv6 站点 B 上的主机指定为目标地址。每个数据包头都将 6to4 派生地址作为其源地址。目标地址是标准的 IPv6 地址。
站点 A 的 6to4 路由器将每个包封装到 IPv4 数据包头中,该 IPv4 数据包头将 6to4 中继路由器的 IPv4 地址作为其目标地址。6to4 路由器随后使用标准的 IPv4 路由过程,通过 IPv4 网络转发包。包遇到的任何 IPv4 路由器都会将包转发到 6to4 中继路由器。
物理位置距离站点 A 最近的任意点传送 6to4 中继路由器检索以 192.88.99.1 任意点传送组为目标的包。
6to4 中继路由器属于 6to4 中继路由器任意点传送组,它的 IP 地址为 192.88.99.1。此任意点传送地址是 6to4 中继路由器的缺省地址。如果您需要使用特定的 6to4 中继路由器,则可以覆盖缺省设置并指定该路由器的 IPv4 地址。
该中继路由器会对 6to4 包中的 IPv4 数据包头取消封装,并显示本地 IPv6 目标地址。
然后,该中继路由器将当前只包含 IPv6 的包发送到 IPv6 网络上,在该网络上,包最终将由站点 B 上的某个路由器检索到。检索到包的路由器随后会将包转发到目标 IPv6 节点。
本节介绍在实现 IPv6 时引入的命名更改。可以将 IPv6 地址存储在任何 Oracle Solaris : 名称服务(如 NIS、LDAP、DNS 和 files)中。还可以使用 NIS over IPv6 RPC 传输机制来检索任何 NIS 数据。
AAAA 资源记录是 IPv6 特定的资源记录,它已在 RFC 1886 "DNS Extensions to Support IP Version 6" 中指定。该 AAAA 记录将主机名映射到 128 位 IPv6 地址。IPv6 仍使用 PTR(指针)记录将 IP 地址映射为主机名。系统为 IPv6 地址保留了 128 位地址中的 32 个半字节(四位)。每个半字节都转换为与其相对应的十六进制 ASCII 值,然后再附加 ip6.int。
对于 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 数据库。否则,不必要的延迟(包括可能的引导计时延迟)可能会导致解析主机地址。
下图显示了对于使用 gethostbyname 和 getipnodebyname 命令的应用程序,nsswitch.conf 文件和新名称服务数据库之间的新关系。斜体项为新项。gethostbyname 命令仅检查存储在 /etc/inet/hosts 中的 IPv4 地址。在 Solaris 10 11/06 及早期发行版中,getipnodebyname 命令会查阅在 nsswitch.conf 文件的 ipnodes 项中指定的数据库。如果查找失败,该命令会检查在 nsswitch.conf 文件中的 hosts 项中指定的数据库。
有关名称服务的更多信息,请参见《系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)》。
为了支持 IPv6,可以用现有的名称服务命令查找 IPv6 地址。例如,ypmatch 命令可用于新的 NIS 映射。nslookup 命令可以在 DNS 中查找新的 AAAA 记录。
NFS 软件和远程过程调用 (Remote Procedure Call, RPC) 软件以无缝方式支持 IPv6。与 NFS 服务相关的现有命令没有任何改变。而且大多数 RPC 应用程序无需任何更改即可运行于 IPv6 上。某些涉及到传输的高级 RPC 应用程序可能需要进行更新。
Oracle Solaris : 支持 IPv6 over ATM、永久虚拟电路 (permanent virtual circuit, PVC) 和静态交换式虚拟电路 (switched virtual circuit, SVC)。