系统管理指南:IP 服务

配置 IPv6 标记

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

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

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


注 –

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


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

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

  1. 验证要配置标记的接口是否已经过检测。

    必须先检测接口,然后才能为其 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。此地址是在安装过程中自动配置的。

  2. 创建一个或多个要用作节点接口标记的 64 位十六进制数字。有关标记的示例,请参阅链路本地单点传送地址

  3. 配置每个接口的标记。

    对于每个要具有用户指定接口 ID(标记)的接口,请使用以下形式的 ifconfig 命令:


    ifconfig interface inet6  token address/64
    

    例如,可使用以下命令配置 qfe0 的标记:


    # ifconfig qfe0 inet6 token ::1a:2b:3c:4d/64
    

    对于要具有用户指定标记的每个接口,重复该步骤。

  4. (可选)使新的 IPv6 地址在重新引导过程中持续保留。

    1. 对于每个配置了标记的接口,编辑或创建 /etc/hostname6.interface 文件。

    2. 在每个 /etc/hostname6.interface 文件的末尾添加以下文本:


      token ::token-name/64

      例如,可以在 /etc/hostname6.interface 文件的末尾添加以下文本:


      token ::1a:2b:3c:4d/64

    在系统重新引导之后,在 /etc/hostname6. interface 文件中配置的标记将应用于接口的 IPv6 地址。此 IPv6 地址在后续的重新引导过程中仍会持续保留。

  5. 使用所做更改更新 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 <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


另请参见