系统管理指南:IP 服务

与 IPv6 相关的命令

本节介绍实现 Oracle Solaris : IPv6 时添加的命令,还会介绍为支持 IPv6 而对现有命令进行的修改。

ipaddrsel 命令

使用 ipaddrsel 命令,可以修改 IPv6 缺省地址选择策略表。

Oracle Solaris : 内核使用 IPv6 缺省地址选择策略表为 IPv6 数据包头执行目标地址排序和源地址选择。/etc/inet/ipaddrsel.conf 文件包含该策略表。

下表列出了缺省地址的格式以及它们的策略表优先级。有关 IPv6 地址选择的技术详细信息,请参见 inet6(7P) 手册页。

表 11–5 IPv6 地址选择策略表

前缀 

优先级 

定义 

::1/128

50 

回送 

::/0

40 

缺省值 

2002::/16

30 

6to4 

::/96

20 

与 IPv4 兼容 

::ffff:0:0/96

10 

IPv4 

在该表中,IPv6 前缀(::1/128::/0)优先于 6to4 地址 (2002::/16)、IPv4 地址(::/96::ffff:0:0/96)。因此,在缺省情况下,内核将为转至另一个 IPv6 目标的包选择接口的全局 IPv6 地址。接口的 IPv4 地址具有较低的优先级,对于转至 IPv6 目标的包尤其如此。如果给出了选定的 IPv6 源地址,内核针对目标地址也使用 IPv6 格式。

修改 IPv6 地址选择策略表的原因

在许多情况下,您不必更改 IPv6 缺省地址选择策略表。如果确实需要管理策略表,请使用 ipaddrsel 命令。

在下列情况下,您可能希望修改策略表:

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

6to4relay 命令

使用 6to4 隧道连接,可以在相互隔离的 6to4 站点之间进行通信。但是,要使用本地的非 6to4 IPv6 站点传输包,6to4 路由器必须使用 6to4 中继路由器建立一个隧道。然后,6to4 中继路由器将 6to4 包转发到 IPv6 网络,并最终将其传输到本地 IPv6 站点。如果启用了 6to4 的站点必须与本地 IPv6 站点交换数据,请使用 6to4relay 命令启用相应的隧道。

由于使用中继路由器不太安全,因此 Oracle Solaris : 在缺省情况下会禁用与中继路由器的隧道连接。在部署该方案之前,请认真考虑在建立通往 6to4 中继路由器的隧道时所涉及的问题。有关 6to4 中继路由器的详细信息,请参阅6to4 中继路由器隧道的注意事项。如果决定启用 6to4 中继路由器支持,可以参阅如何配置 6to4 隧道中的相关操作步骤。

6to4relay 的语法

6to4relay 命令的语法如下:


6to4relay -e [-a IPv4-address] -d -h
-e

在 6to4 路由器和某个任意点传送 6to4 中继路由器之间启用隧道支持。隧道端点地址随后将设置为 192.88.99.1(6to4 中继路由器任意点传送组的缺省地址)。

-a IPv4-address

在 6to4 路由器和具有指定 IPv4-address 的 6to4 中继路由器之间启用隧道支持。

-d

禁用对通往 6to4 中继路由器的隧道的支持,这是 Oracle Solaris : 的缺省设置。

-h

显示 6to4relay 的帮助。

有关更多信息,请参阅 6to4relay(1M) 手册页。


示例 11–3 6to4 中继路由器支持的缺省状态

不带参数的 6to4relay 命令显示 6to4 中继路由器支持的当前状态。以下示例显示了在 Oracle Solaris : 中实现的 IPv6 的缺省状态。


# /usr/sbin/6to4relay
6to4relay:6to4 Relay Router communication support is disabled


示例 11–4 在启用了 6to4 中继路由器支持的情况下所显示的状态

如果启用了中继路由器支持,6to4relay 将显示以下输出:


# /usr/sbin/6to4relay
6to4relay:6to4 Relay Router communication support is enabled
IPv4 destination address of Relay Router=192.88.99.1


示例 11–5 指定了 6to4 中继路由器时显示的状态

如果为 -6to4relay 命令指定了 a 选项和 IPv4 地址,将显示用 -a 提供的 IPv4 地址,而不显示 192.88.99.1

6to4relay 不报告 -d-e-a IPv4 address 选项是否成功执行。但是,6to4relay 会显示在运行这些选项时可能生成的任何错误消息。


为支持 IPv6 而对 ifconfig 命令进行的扩展

可以使用 ifconfig 命令对IPv6 接口和隧道连接模块进行检测。ifconfig 使用一组经过扩展的 ioctl 来配置 IPv4 和 IPv6 网络接口。下面描述了可支持 IPv6 操作的 ifconfig 选项。有关涉及 ifconfig 命令的一系列 IPv4 和 IPv6 任务,请参见使用 ifconfig 命令监视接口配置

index

设置接口索引。

tsrc/tdst

设置隧道源或目标。

addif

创建下一个可用的逻辑接口。

removeif

删除具有特定 IP 地址的逻辑接口。

destination

设置接口的点对点目标地址。

set

为接口设置地址和/或网络掩码。

subnet

设置接口的子网地址。

xmit/-xmit

启用或禁用在接口上传输包。

第 7 章介绍了 IPv6 配置过程。


示例 11–6 在 ifconfig 命令中使用 -addif 选项添加 IPv6 逻辑接口

以下形式的 ifconfig 命令可创建 hme0:3 逻辑接口:


# ifconfig hme0 inet6 addif up
Created new logical interface hme0:3

以下形式的 ifconfig 可验证是否创建了新接口:


# ifconfig hme0:3 inet6
hme0:3: flags=2000841<UP,RUNNING,MULTICAST,IPv6> mtu 1500 index 2
		inet6  inet6 fe80::203:baff:fe11:b321/10


示例 11–7 在 ifconfig 命令中使用 -removeif 选项删除 IPv6 逻辑接口

以下形式的 ifconfig 命令可删除 hme0:3 逻辑接口:


# ifconfig hme0:3 inet6 down

# ifconfig hme0 inet6 removeif 1234::5678


示例 11–8 使用 ifconfig 配置 IPv6 隧道源


# ifconfig ip.tun0 inet6 plumb index 13

打开要与物理接口名称相关联的隧道。


# ifconfig ip.tun0 inet6
ip.tun0: flags=2200850<POINTOPOINT,RUNNING,MULTICAST,NONUD,
#IPv6> mtu 1480 index 13
		inet tunnel src 0.0.0.0 
		inet6 fe80::/10 --> :: 

配置 TCP/IP 使用隧道设备并报告设备状态所需要的流。


# ifconfig ip.tun0 inet6 tsrc 120.46.86.158 tdst 120.46.86.122

配置隧道的源地址和目标地址。


# ifconfig ip.tun0 inet6
ip.tun0: flags=2200850<POINTOPOINT,RUNNING,MULTICAST,NONUD,
IPv6> mtu 1480 index 13
		inet tunnel src 120.46.86.158  tunnel dst 120.46.86.122
		inet6 fe80::8192:569e/10 --> fe80::8192:567a

在配置之后报告设备的新状态。



示例 11–9 通过 ifconfig 配置 6to4 隧道(长格式)

以下示例显示在 6to4 伪接口配置中子网 ID 为 1,并以十六进制形式指定主机 ID。


# ifconfig ip.6to4tun0 inet6 plumb
# ifconfig ip.6to4tun0 inet tsrc 129.146.86.187 \
2002:8192:56bb:1::8192:56bb/64 up

# ifconfig ip.6to4tun0 inet6
ip.6to4tun0: flags=2200041<UP,RUNNING,NONUD,IPv6>mtu 1480 index 11
        inet tunnel src 129.146.86.187 
        tunnel hop limit 60 
        inet6 2002:8192:56bb:1::8192:56bb/64 


示例 11–10 通过 ifconfig 配置 6to4 隧道(短格式)

以下示例显示了配置 6to4 隧道的短格式:


# ifconfig ip.6to4tun0 inet6 plumb
# ifconfig ip.6to4tun0 inet tsrc 129.146.86.187 up

# ifconfig ip.6to4tun0 inet6
ip.6to4tun0: flags=2200041<UP,RUNNING,NONUD,IPv6>mtu 1480 index 11
        inet tunnel src 129.146.86.187 
        tunnel hop limit 60 
        inet6 2002:8192:56bb::1/64 

为支持 IPv6 而对 netstat 命令进行的修改

netstat 命令显示 IPv4 和 IPv6 网络状态。可通过在 /etc/default/inet_type 文件中设置 DEFAULT_IP 值或者使用 -f 命令行选项来选择要显示的协议信息。如果永久设置 DEFAULT_IP,则可以确保 netstat 仅显示 IPv4 信息。可以使用 -f 选项来覆盖该设置。有关 inet_type 文件的更多信息,请参见 inet_type(4) 手册页。

netstat 命令的 -p 选项显示 net-to-media 表。对于 IPv4,该表是 ARP 表;对于 IPv6,该表是相邻节点高速缓存。有关详细信息,请参见 netstat(1M) 手册页。有关使用此命令的过程的说明,请参见如何显示套接字的状态

为支持 IPv6 而对 snoop 命令进行的修改

snoop 命令可以捕获 IPv4 和 IPv6 包。此命令可以显示 IPv6 数据包头、IPv6 扩展头、ICMPv6 数据包头和相邻节点搜索协议数据。缺省情况下,snoop 命令既可以显示 IPv4 包又可以显示 IPv6 包。如果您指定了 ipip6 协议关键字,snoop 命令将只显示 IPv4 包或 IPv6 包。使用 IPv6 的过滤选项,可以对所有的 IPv4 和 IPv6 包进行过滤,以便仅显示 IPv6 包。有关详细信息,请参见 snoop(1M) 手册页。有关使用 snoop 命令的过程,请参见如何监视 IPv6 网络通信

为支持 IPv6 而对 route 命令进行的修改

route 命令既作用于 IPv4 路由又作用于 IPv6 路由,IPv4 路由是缺省设置。如果在命令行中紧跟 route 命令之后使用 -inet6 选项,系统将针对 IPv6 路由执行操作。有关详细信息,请参见 route(1M) 手册页。

为支持 IPv6 而对 ping 命令进行的修改

ping 命令既可以使用 IPv4 协议又可以使用 IPv6 协议来探测目标主机。具体选择哪个协议取决于由特定目标主机的名称服务器所返回的地址。缺省情况下,如果名称服务器返回目标主机的 IPv6 地址,ping 命令将使用 IPv6 协议。如果名称服务器仅返回 IPv4 地址,ping 命令将使用 IPv4 协议。可以使用 -A 命令行选项指定要使用的协议以覆盖该操作。

有关详细信息,请参见 ping(1M) 手册页。有关使用 ping 的过程,请参阅使用 ping 命令探测远程主机

为支持 IPv6 而对 traceroute 命令进行的修改

可以使用 traceroute 命令跟踪到特定主机的 IPv4 和 IPv6 路由。从协议的角度看,tracerouteping 使用相同的算法。使用 -A 命令行选项可覆盖此选择。使用 -a 命令行选项,可以跟踪到多宿主主机的每个地址的各个单独路由。

有关详细信息,请参见 traceroute(1M) 手册页。有关使用 traceroute 的过程,请参阅使用 traceroute 命令显示路由信息