手册页部分 1M: 系统管理命令

退出打印视图

更新时间: 2014 年 7 月
 
 

ipaddrsel(1M)

名称

ipaddrsel - 配置 IPv6 缺省地址选择方式

用法概要

/usr/sbin/ipaddrsel 
/usr/sbin/ipaddrsel -f file
/usr/sbin/ipaddrsel -d

描述

使用 ipaddrsel 实用程序可配置 IPv6 缺省地址选择策略表。策略表是最长匹配前缀查找表,用于在将名称解析为 AF_INET6 地址时选择 IPv6 源地址和排列目标地址。有关如何使用策略表选择源地址的说明,请参见 inet6(7P)。有关如何使用策略表对目标地址排序的说明,请参见 getaddrinfo(3SOCKET)

未修改的策略表适用于所有的典型 IPv6 部署。仅在环境的缺省 IPv6 源地址选择行为或者目标地址排序机制无法满足要求时,才需要修改表。有关这类环境的示例,请参见Examples部分。在更改表提供的缺省设置之前,您应该认真考虑您的寻址策略。

发出不带任何参数的 ipaddrsel 命令时,输出当前使用的地址选择策略。输出的格式与 –f 选项接受的配置文件的格式一致。


注 - 如果对特定物理接口应用 ifconfig(1M) 的子命令 usesrc,则 usesrc 指定的选择策略会覆盖 ipaddrsel 指定的源地址选择策略。对于在本地生成的包和未使用 bind(3SOCKET) 选择非零源地址的应用程序来说也是如此。

配置文件

–f 选项接受的配置文件可包含命令行或策略条目。命令行将 '#' 字符作为第一个非空白字符。ipaddrsel 实用程序会忽略该字符。策略条目行的格式如下:

prefix/prefix_length precedence label [# comment]

prefix 必须是格式符合 inet(3SOCKET) 的 IPv6 前缀。prefix_length 是 0 至 128 之间的整数。IPv6 源地址选择和目标地址排序算法通过使用此表中的前缀执行最长前缀匹配查找来确定地址的优先级或标签,这与通过使用 IP 路由表执行最长前缀匹配查找来确定下一中继目标非常相似。

优先级是非负整数,表示目标地址排序机制如何对查找名称时返回的地址进行排序。一般来说,优先级高的地址排在优先级低的地址前面。然而,其他因素(如目标的源地址不符合要求)可能会覆盖这些优先级值。

标签是最多包含 15 个字符(不包括 NULL 结束符)的字符串。标签允许特定源地址前缀与具有同一标签的目标前缀配合使用。具体地说,对于特定目标地址,IPv6 源地址选择算法优先选择与目标具有相同标签的源地址。

标签后可添加注释。

文件必须包含缺省策略条目,缺省策略条目是指将 ::0/0 作为 prefixprefix_length 的条目。这是为了确保所有可能的地址都遵从一个策略。

选项

ippadrsel 实用程序支持下列选项:

–f file

使用在 file 中指定的策略替换地址选择策略表。

–d

将内核的地址选择策略表恢复为缺省表。以这种方式调用 ipaddrsel 只更改当前运行的内核策略表,不会更改配置文件 /etc/inet/ipaddrsel.conf。要将配置文件恢复为缺省设置,请使用 ipaddrsel –d,然后将 ipaddrsel 的输出重定向到 /etc/inet/ipaddrsel.conf,以将表的内容转储到配置文件。

example# ipaddrsel -d
example# ipaddrsel > /etc/inet/ipaddrsel.conf

示例

示例 1 /etc/inet/ipaddrsel.conf 中的缺省策略

以下示例显示了位于 /etc/inet/ipaddrsel.conf 中的缺省策略:


# Prefix                            Precedence Label
::1/128                             50 Loopback
::/96                               20 IPv4_Compatible
::ffff:0.0.0.0/96                   10 IPv4
2002::/16                           30 6to4
::/0                                40 Default
示例 2 向链路本地和站点本地地址分配较低的优先级

缺省情况下,目标地址排序规则将范围较小的地址排在范围较大的地址前面。例如,如果一个名称解析为一个全局地址和一个站点本地地址,则站点本地地址将排在全局地址前面。管理员可以通过向范围较小的地址分配较低的优先级来覆盖此排序规则,如下表所示。


# Prefix                             Precedence Label
::1/128                              50 Loopback
::/0                                 40 Default
2002::/16                            30 6to4
fec0::/10                            27 Site-Local
fe80::/10                            23 Link-Local
::/96                                20 IPv4_Compatible
::ffff:0.0.0.0/96                    10 IPv4
示例 3 向 IPv4 目标分配较高的优先级

缺省情况下,在查找名称时,IPv6 地址排在 IPv4 地址前面。::ffff:0.0.0.0/96 在缺省表中的优先级最低。在以下示例中,向 IPv4 地址分配了较高的优先级,因此 IPv4 地址排在 IPv6 目标前面:


# Prefix                             Precedence Label
::1/128                              50 Loopback
::/0                                 40 Default
2002::/16                            30 6to4
::/96                                20 IPv4_Compatible
::ffff:0.0.0.0/96                    60 IPv4
示例 4 确保使用特定源地址

本示例确保仅在与特定网络中的目标通信时才使用特定源地址。

以下策略表将标签 5 分配给本地系统上的特定源地址 2001:1111:1111::1。该表将同一标签分配给网络 2001:2222:2222::/48。此策略的作用是,仅在与 2001:2222:2222::/48 网络中包含的目标通信时才使用 2001:1111:1111::1 源地址。在本示例中,该网络是 ClientNet,表示特定客户网络。


# Prefix                              Precedence Label
::1/128                               50 Loopback
2001:1111:1111::1/128                 40 ClientNet
2001:2222:2222::/48                   40 ClientNet
::/0                                  40 Default
2002::/16                             30 6to4
::/96                                 20 IPv4_Compatible
::ffff:0.0.0.0/96                     10 IPv4

本示例假定本地系统具有一个物理接口,并且所有全局前缀都已分配给该物理接口。

退出状态

ipaddrsel 返回以下退出值:

0

ipaddrsel 成功完成。

>0

出现错误。如果遇到故障,内核的当前策略表不会发生改变。

文件

/etc/inet/ipaddrsel.conf

引导时要安装的文件,包含 IPv6 缺省地址选择策略。该文件在启动 Internet 服务之前装入。

属性

有关下列属性的说明,请参见 attributes(5)

属性类型
属性值
可用性
system/core-os
接口稳定性
Committed(已确定)

另请参见

nscd(1M)inet(3SOCKET)getaddrinfo(3SOCKET)ipaddrsel.conf(4)attributes(5)inet6(7P)

附注

nscd(1M) 的 IP 节点高速缓存包含使用目标地址排序算法排序的地址,这就是在引导序列中先调用 ipaddrsel 再调用 nscd 的原因之一。如果在 nscd 启动后使用 ipaddrsel 更改了地址选择策略,您应该调用以下命令来使 nscd IP 节点高速缓存失效:

example# /usr/sbin/nscd -i ipnodes