系统管理指南:IP 服务

针对 IPv6 支持配置隧道

在大型 IPv4 网络中,IPv6 网络通常是隔离的实体。IPv6 网络上的节点可能需要与隔离的 IPv6 网络上的节点通信(在企业内或以远程方式进行)。通常,尽管 IPv6 主机也可以充当隧道端点,但是仍需要在 IPv6 路由器之间配置一条隧道。有关隧道规划的信息,请参阅在网络拓扑中规划隧道

可以为 IPv6 网络设置自动或手动配置的隧道。Oracle Solaris : IPv6 实现支持下列类型的隧道封装:

有关隧道的概念性说明,请参见IPv6 隧道

Procedure如何手动配置 IPv6 over IPv4 隧道

本过程介绍如何设置从 IPv6 节点经由 IPv4 网络到达远程 IPv6 节点的隧道。

  1. 以主管理员或超级用户身份登录到本地隧道的端点。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 创建 /etc/hostname6.ip.tun n 文件。

    其中 n 表示隧道编号,第一个隧道的编号从零开始。然后,按照下列子步骤来添加项:

    1. 添加隧道的源地址和目标地址。


      tsrc IPv4-source-address tdst IPv4-destination-address up
    2. (可选)为源 IPv6 地址和目标 IPv6 地址各添加一个逻辑接口。


      addif IPv6-source-address  IPv6-destination-address 
      

      如果希望为该接口自动配置地址,请忽略该子步骤,无需为隧道配置链路本地地址。

  3. 重新引导系统。

  4. 对隧道的另一端重复该任务。


示例 7–7 IPv6 over IPv4 手动隧道的 /etc/hostname6.ip.tun 文件中的项

此样例 /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

Procedure如何手动配置 IPv6 over IPv6 隧道

本过程介绍如何设置从 IPv6 节点经由 IPv6 网络到达远程 IPv6 节点的隧道。

  1. 以主管理员或超级用户身份登录到本地隧道的端点。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 创建 /etc/hostname6.ip6.tun n 文件。

    n 可使用值 0、1、2 等。然后,按照下列子步骤来添加项:

    1. 添加隧道的源地址和目标地址。


      tsrc IPv6-source-address tdst IPv6-destination-address
      IPv6-packet-source-address IPv6-packet-destination-address up
    2. (可选)为源 IPv6 地址和目标 IPv6 地址各添加一个逻辑接口。


      addif IPv6-source-address  IPv6-destination-address up

      如果希望为该接口自动配置地址,请忽略该步骤,无需为隧道配置链路本地地址。

  3. 重新引导系统。

  4. 对于隧道的另一端重复此过程。


示例 7–8 IPv6 over IPv6 隧道的 /etc/hostname6.ip6.tun 文件中的项

此示例显示了 IPv6 over IPv6 隧道的项。


tsrc 2001:db8:3c4d:22:20ff:0:fe72:668c tdst 2001:db8:3c4d:103:a00:20ff:fe9b:a1c3
fe80::4 fe80::61 up

Procedure如何配置 IPv4 over IPv6 隧道

本过程介绍如何配置从一台 IPv4 主机经由 IPv6 网络到达另一台 IPv4 主机的隧道。如果您的公司网络是异构网络,并且 IPv4 子网由 IPv6 子网分隔,则可以使用此过程。

  1. 以主管理员或超级用户身份登录到本地 IPv4 隧道的端点。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 创建 /etc/hostname.ip6.tunn 文件。

    n 可使用值 0、1、2 等。然后,按照下列步骤来添加项:

    1. 添加隧道的源地址和目标地址。


      tsrc IPv6-source-address tdst IPv6-destination-address
      
    2. (可选)为源 IPv6 地址和目标 IPv6 地址各添加一个逻辑接口。


      addif IPv6-source-address  IPv6-destination-address up
  3. 重新引导本地主机。

  4. 对于隧道的另一端重复此过程。


示例 7–9 IPv4 over IPv6 隧道的 /etc/hostname6.ip6.tun 中的项

此示例显示了 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

Procedure如何配置 6to4 隧道

如果 IPv6 网络需要与远程 IPv6 网络通信,请考虑使用 6to4 自动隧道。6to4 隧道的配置过程包括将边界路由器配置为 6to4 路由器。6to4 路由器可充当您的网络与远程 IPv6 网络上的端点路由器之间的 6to4 隧道的端点。

开始之前

在 IPv6 网络上配置 6to4 路由之前,必须已经完成以下操作:

  1. 以主管理员或超级用户身份登录到将来的 6to4 路由器。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 通过创建 /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 的必需参数:

    tsrc

    表示此接口用作隧道源。

    IPv4-address

    以点分十进制格式指定在作为 6to4 伪接口的物理接口上配置的 IPv4 地址。

    其余参数是可选的。但是,如果指定了一个可选参数,则必须指定所有的可选参数。

    2002

    指定 6to4 前缀。

    IPv4–address

    以十六进制表示法指定伪接口的 IPv4 地址。

    subnet-ID

    以十六进制表示法指定除 0 以外的子网 ID。

    interface-ID

    指定除 1 以外的接口 ID。

    /64

    表示 6to4 前缀的长度为 64 位。

    up

    将 6to4 接口配置为 "up"。


    注 –

    网络上的两个 IPv6 隧道不能具有相同的源地址和目标地址。否则,包会被丢弃。如果 6to4 路由器还通过 atun 命令执行隧道连接,则可能会发生这种类型的事件。有关 atun 的信息,请参阅 tun(7M) 手册页。


  3. (可选)在路由器上创建其他 6to4 伪接口。

    每个将来的 6to4 伪接口都必须具有一个已配置的全局唯一的 IPv4 地址。

  4. 重新引导 6to4 路由器。

  5. 验证接口状态。


    # 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 
  6. 编辑 /etc/inet/ndpd.conf 文件以通告 6to4 路由。

    有关详细信息,请参阅 ndpd.conf(4) 手册页。

    1. 在第一行中指定要接收通告的子网。

      创建具有以下格式的 if 项:


      if subnet-interface AdvSendAdvertisements 1

      例如,要向连接到 hme0 接口的子网通告 6to4 路由,请将 subnet-interface 替换为 hme0


      if hme0 AdvSendAdvertisements 1
    2. 在通告的第二行中添加 6to4 前缀。

      创建具有以下格式的 prefix 项:


      prefix 2002:IPv4-address:subnet-ID::/64 subnet-interface
      
  7. 重新引导路由器。

    或者,可以向 /etc/inet/in.ndpd 守护进程发出 sighup,以便开始发送路由器通告。要接收 6to4 前缀的每个子网上的 IPv6 节点现在可以使用 6to4 派生地址自动进行配置。

  8. 将节点的新 6to4 派生地址添加到在 6to4 站点上使用的名称服务中。

    有关说明,请转至针对 IPv6 配置名称服务支持


示例 7–10 6to4 路由器配置(短形式)

下面举例说明了/etc/hostname6.ip.6to4tun0 的短形式:


# cat /etc/hostname6.ip.6to4tun0
tsrc 111.222.33.44 up


示例 7–11 6to4 路由器配置(长形式)

下面举例说明了 /etc/hostname6.ip.6to4tun0 的长形式:


# cat /etc/hostname6.ip.6to4tun0
tsrc 111.222.33.44 2002:6fde:212c:20:1/64 up


示例 7–12 显示 6to4 伪接口的 ifconfig 输出

以下样例说明了针对 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 


示例 7–13 /etc/inet/ndpd.conf 中的 6to4 通告

以下样例 /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 路由器后面的路由器以支持 6to4。如果站点使用 RIP,则必须在每个非 6to4 路由器上配置通往 6to4 路由器的静态路由。如果使用商业路由协议,则无需创建通往 6to4 路由器的静态路由。

Procedure如何配置通往 6to4 中继路由器的 6to4 隧道


注意 – 注意 –

由于 6to4 中继路由器存在重要的安全问题,因此,在缺省情况下,Oracle Solaris : 中会禁用 6to4 中继路由器支持。请参见建立通往 6to4 中继路由器的隧道时的安全问题


开始之前

在启用通往 6to4 中继路由器的隧道之前,必须先完成下列任务:

  1. 以主管理员或超级用户身份登录到 6to4 路由器。

    主管理员角色拥有主管理员配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 使用以下格式之一启用通往 6to4 中继路由器的隧道:

    • 启用通往任意点传送 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 中继路由器的隧道将一直保持活动状态。

  3. 如果不再需要隧道,请删除通往 6to4 中继路由器的隧道:


    # /usr/sbin/6to4relay -d
    
  4. (可选)使通往 6to4 中继路由器的隧道在重新引导过程中持续保留。

    您的站点可能迫切要求通往 6to4 中继路由器的隧道在 6to4 路由器每次重新引导时都进行恢复。要支持此方案,必须执行下列操作:

    1. 编辑 /etc/default/inetinit 文件。

      需要修改的行位于该文件的末尾。

    2. ACCEPT6TO4RELAY=NO 行中的 "NO" 值更改为 "YES"。

    3. (可选)创建通往特定 6to4 中继路由器的隧道,该隧道在重新引导过程中持续保留。

      对于 RELAY6TO4ADDR 参数,请将 192.88.99.1 地址更改为要使用的 6to4 中继路由器的 IPv4 地址。


示例 7–14 获取有关 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