本章包含在网络上配置 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 |