修改主机和服务器的 IPv6 接口配置

本节介绍如何修改作为主机或服务器的节点上启用了 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 文件中配置下列变量:有效生命周期 TmpValidLifetime

临时地址存在的时间跨度,在此之后临时地址将从主机中删除。

首选生命周期 TmpPreferredLifetime

临时地址过时之前已经过的时间。此时间跨度应短于有效生命周期。

地址重新生成时间

在首选生命周期到期之前的持续时间,在这段时间内,主机应生成新的临时地址。

可以按如下所示表示临时地址的持续时间:n

n 秒数(缺省值)

n h

n 小时数 (h)

n d

n 天数 (d)

如何配置临时地址

以主管理员或超级用户身份登录到 IPv6 主机。

如有必要,请在主机的接口上启用 IPv6。

编辑 /etc/inet/ndpd.conf 文件以打开临时地址生成功能。

要在主机的所有接口上配置临时地址,请将以下行添加到 /etc/inet/ndpd.conf 中:ifdefault TmpAddrsEnabled true

要配置特定接口的临时地址,请将以下一行添加到 /etc/inet/ndpd.conf 中:if interface TmpAddrsEnabled true

(可选)指定临时地址的有效生命周期。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 一词。

示例 7-4 /etc/inet/ndpd.conf 文件中的临时地址变量

以下示例显示了针对主网络接口启用了临时地址的 /etc/inet/ndpd.conf 文件片段。ifdefault TmpAddrsEnabled true

ifdefault TmpValidLifetime 14d
ifdefault TmpPreferredLifetime 7d
ifdefault TmpRegenAdvance 6s

示例 7-5 启用临时地址后的 ifconfig-a6 命令输出

此示例显示了创建临时地址之后 ifconfig 命令的输出。# ifconfig -a6

lo0: flags=2000849 mtu 8252 index 1
inet6 ::1/128
hme0: flags=2000841 mtu 1500 index 2
ether 8:0:20:b9:4c:54
inet6 fe80::a00:20ff:feb9:4c54/10
hme0:1: flags=2080841 mtu 1500 index 2
inet6 2001:db8:3c4d:15:a00:20ff:feb9:4c54/64
hme0:2: flags=802080841 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 标记

如IPv6 寻址概述中所述,IPv6 地址的 64 位接口 ID 又称作标记。在地址自动配置过程中,该标记与接口的 MAC 地址相关联。大多数情况下,非路由节点(即 IPv6 主机和服务器)应当使用为其自动配置的标记。

但是,对于在系统维护过程中经常需要交换接口的服务器,使用自动配置的标记可能会产生问题。如果更换接口卡,则 MAC 地址也会随之更改。因此,依赖稳定 IP 地址的服务器将会遇到问题。网络基础结构的各个部分(如 DNS 或 NIS)可能已经存储了服务器接口的特定 IPv6 地址。

为了避免出现地址更改问题,可以手动配置要用作 IPv6 地址中接口 ID 的标记。要创建此标记,需要指定一个 64 位或更少的十六进制数字,使其占用 IPv6 地址的接口 ID 部分。在后续的地址自动配置过程中,相邻节点搜索协议不会基于接口的 MAC

地址创建接口 ID。相反,手动创建的标记将成为接口 ID。此标记始终被指定给该接口,即使更换了卡也是如此。

注 -用户指定的标记和临时地址之间的区别在于,临时地址是随机生成的,而不是由用户显式创建的。

如何配置用户指定的 IPv6 标记

接下来的说明对于经常更换接口的服务器尤其有用。它们也可用于在任何 IPv6 节点上配置用户指定的标记。验证要配置标记的接口是否已经过检测。

必须先检测接口,然后才能为其 IPv6 地址配置标记。# ifconfig a6

qfe0: flags=2000841 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

示例 7-6 在 IPv6 接口上配置用户指定的标记

在以下示例中,bge0:1 接口具有自动配置的 IPv6 地址。子网前缀 2001:db8:3c4d:152:/64 由节点本地链路上的路由器通告。接口 ID 2c0:9fff:fe56:8255 是用 bge0:1 的 MAC

地址生成的。# ifconfig -a6

lo0: flags=2002000849 mtu 8252 index 1
inet6 ::1/128
bge0: flags=2100801 mtu 1500 index 5
inet6 fe80::2c0:9fff:fe56:8255/10
ether 0:c0:9f:56:82:55
bge0:1: flags=2180801 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 mtu 8252 index 1
inet6 ::1/128
bge0: flags=2100801 mtu 1500 index 5
inet6 fe80::2c0:9fff:fe56:8255/10
ether 0:c0:9f:56:82:55
bge0:1: flags=2180801 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 时,必须做出几个决定。所做的决定会影响用于配置接口 IPv6 地址的接口 ID(又称作标记)的策略。

如何在服务器接口上启用 IPv6

开始之前

下一过程假定以下情况成立:

已在服务器上安装了 Oracle Solaris。

已经使用配置 IPv6 接口中的过程,在 Oracle Solaris 安装过程中或安装之后在服务器接口上启用了 IPv6。

如果适用,请升级应用程序软件以支持 IPv6。请注意,许多在 IPv4 协议栈上运行的应用程序也能在 IPv6 上成功运行。有关更多信息,请参阅如何准备网络服务以支持 IPv6。在服务器上,承担主管理员角色或成为超级用户。

确保与服务器在同一链路上的路由器上配置了 IPv6 子网前缀。

有关更多信息,请参阅配置 IPv6 路由器。

对服务器上启用了 IPv6 的接口,使用适当的接口 ID 策略。

缺省情况下,在创建 IPv6 地址的接口 ID 部分时,IPv6 地址自动配置会使用接口的 MAC 地址。如果接口的 IPv6 地址是已知的,则使用一个接口交换另一个接口会导致问题。新接口的 MAC 地址将会不同。在地址自动配置过程中,会生成新的接口

ID。

对于不打算替换的启用了 IPv6 的接口,请使用自动配置的 IPv6 地址,如IPv6 地址自动配置中所述。

对于必须匿名显示在本地网络外部的启用了 IPv6 的接口,请考虑对接口 ID 使用随机生成的标记。有关说明和示例,请参阅如何配置临时地址。

对于计划定期交换的启用了 IPv6 的接口,请为接口 ID 创建标记。有关说明和示例,请参阅如何配置用户指定的 IPv6 标记。