本节介绍实现 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 命令显示路由信息。