JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris 管理:IP 服务     Oracle Solaris 11 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

第 1 部分TCP/IP 管理

1.  规划网络部署

2.  使用 IPv6 地址的注意事项

3.  配置 IPv4 网络

4.  在网络上启用 IPv6

5.  管理 TCP/IP 网络

6.  配置 IP 隧道

IP 隧道概述

此 Oracle Solaris 发行版中的 IP 隧道管理

隧道类型

IPv6 和 IPv4 的组合网络环境中的隧道

6to4 隧道

6to4 隧道的拓扑

通过 6to4 隧道的包流

6to4 中继路由器隧道的注意事项

部署隧道

创建隧道的要求

隧道和 IP 接口的要求

使用 dladm 命令进行隧道配置和管理

dladm 子命令

配置隧道(任务列表)

如何创建和配置 IP 隧道

如何配置 6to4 隧道

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

如何修改 IP 隧道配置

如何显示 IP 隧道的配置

如何显示 IP 隧道的属性

如何删除 IP 隧道

7.  对网络问题进行故障排除

8.  IPv4 参考

9.  IPv6 引用

第 2 部分DHCP

10.  关于 DHCP(概述)

11.  管理 ISC DHCP 服务

12.  配置和管理 DHCP 客户机

13.  DHCP 命令和文件(参考)

第 3 部分IP 安全性

14.  IP 安全体系结构(概述)

15.  配置 IPsec(任务)

16.  IP 安全体系结构(参考)

17.  Internet 密钥交换(概述)

18.  配置 IKE(任务)

19.  Internet 密钥交换(参考资料)

20.  Oracle Solaris 中的 IP 过滤器(概述)

21.  IP 过滤器(任务)

第 4 部分网络性能

22.  集成负载平衡器概述

23.  配置集成负载平衡器(任务)

24.  虚拟路由器冗余协议(概述)

25.  VRRP 配置(任务)

26.  实施拥塞控制

第 5 部分IP 服务质量 (IP Quality of Service, IPQoS)

27.  IPQoS 介绍(概述)

28.  规划启用了 IPQoS 的网络(任务)

29.  创建 IPQoS 配置文件(任务)

30.  启动和维护 IPQoS(任务)

31.  使用流记帐和统计信息收集功能(任务)

32.  IPQoS 的详细介绍(参考)

词汇表

索引

使用 dladm 命令进行隧道配置和管理

本节介绍使用 dladm 命令配置隧道的过程。

dladm 子命令

从此 Oracle Solaris 发行版开始,隧道管理将与 IP 接口配置分开。IP 隧道的数据链路方面现在使用 dladm 命令管理。此外,IP 接口配置(包括 IP 隧道接口)现在使用 ipadm 命令执行。

将使用 dladm 的下列子命令配置 IP 隧道:

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


注 - IP 隧道管理与 IPsec 配置紧密相关。例如,IPsec 虚拟专用网络 (virtual private network, VPN) 是主要使用 IP 隧道的网络之一。有关 Oracle Solaris 中的安全性的更多信息,请参见第 3 部分, IP 安全性。要配置 IPsec,请参见第 15 章


配置隧道(任务列表)

任务
说明
参考
创建 IP 隧道。
配置要用于网络之间通信的隧道。
修改隧道的配置。
更改隧道的原始参数,例如隧道的源地址或目标地址。
显示隧道配置。
显示特定隧道或系统的所有 IP 隧道的配置信息。
删除隧道。
删除隧道配置。

如何创建和配置 IP 隧道

  1. 创建隧道。
    # dladm create-iptun [-t] -T type -a [local|remote]=addr,... tunnel-link

    此命令可使用以下选项或参数:

    -t

    创建临时隧道。缺省情况下,该命令将创建一个持久性隧道。


    注 - 如果要在隧道中配置一个持久性 IP 接口,则必须创建一个持久性隧道并且不使用 -t 选项。


    -T type

    指定要创建的隧道的类型。创建所有隧道类型都需要此参数。

    -a [local|remote]=address,...

    指定对应于本地地址和远程隧道地址的字面值 IP 地址或主机名。这些地址必须有效并且已在系统中创建。取决于隧道的类型,仅指定一个地址或同时指定本地和远程地址。如果指定本地和远程地址,则必须使用逗号分隔这两个地址。

    • IPv4 隧道要求运行本地和远程 IPv4 地址。

    • IPv6 隧道要求运行本地和远程 IPv4 地址。

    • 6to4 隧道要求运行本地 IPv4 地址。


    注 - 对于持久性 IP 隧道数据链路配置,如果对地址使用主机名,这些主机名将保存在配置存储中。在后续系统引导期间,如果名称解析到的 IP 地址不同于创建隧道时使用的 IP 地址,则隧道将获取新配置。


    tunnel-link

    指定 IP 隧道链路。如果网络链路管理中支持有意义的名称,则隧道名称不再限制为要创建的隧道类型。而是,可以为隧道指定任何通过管理方式选择的名称。隧道名称由字符串和物理连接点 (physical point of attachment, PPA) 编号组成,例如 mytunnel0。有关管理有意义名称的指定的规则,请参阅《Oracle Solaris 管理:网络接口和网络虚拟化》中的"有效链路名称的规则"

    如果未指定隧道链路,则会根据以下命名约定自动提供该名称:

    • 对于 IPv4 隧道:ip.tun#

    • 对于 IPv6 隧道:ip6.tun#

    • 对于 6to4 隧道:ip.6to4tun#

    # 是所要创建的隧道类型的最低可用 PPA 编号。

  2. (可选)设置跃点限制或封装限制的值。
    # dladm set-linkprop -p [hoplimit=value] [encaplimit=value] tunnel-link
    hoplimit

    指定 IPv6 上隧道的隧道接口的跃点限制。hoplimit 与 IPv4 上隧道的 IPv4 生存时间 (time to live, TTL) 字段等效。

    encaplimit

    指定包允许的嵌套隧道的级数。此选项仅适用于 IPv6 隧道。

    指定包允许的嵌套隧道的级数。此选项仅适用于 IPv6 隧道。


    注 - hoplimit encaplimit 设置的值必须处于可接受的范围内。hoplimitencaplimit 为隧道链路属性。因此,与其他链路属性一样,这些属性通过相同的 dladm 子命令管理。这些子命令为 dladm set-linkpropdladm reset-linkpropdladm show-linkprop。有关与 dladm 命令配合使用以管理链路的其他子命令,请参阅 dladm(1M) 手册页。


  3. 创建隧道上的 IP 接口。
    # ipadm create-ip tunnel-interface

    其中,tunnel-interface 使用与隧道链路相同的名称。

  4. 为隧道接口指定本地和远程 IP 地址。
    # ipadm create-addr [-t] -T static -a local=address,remote=address addrobj
    -t

    指示临时 IP 配置而不是隧道上的持久性 IP 配置。如果不使用此选项,则 IP 接口配置为持久性配置。

    -T static

    指示将使用静态 IP 地址而不是动态 IP 过程。

    -a local=address ,remote=address

    指定隧道接口的 IP 地址。需要同时指定源和目标 IP 地址,分别由 localremote 表示。本地和远程地址可以是 IPv4 或 IPv6 地址。

    addrobj

    指定拥有本地和远程地址的地址对象。addrobj 必须使用格式 interface /user-specified-stringuser-specified-string 引用以字母字符开头的字母数字字符串,最大长度为 32 个字符。

    有关配置 IP 接口(包括隧道接口)的 ipadm 命令和不同选项的更多信息,请参见 ipadm(1M) 手册页和《Oracle Solaris 管理:网络接口和网络虚拟化》中的第 II 部分, "数据链路和接口配置"

  5. 将隧道配置信息添加到 /etc/hosts 文件。
  6. (可选)验证隧道的 IP 接口配置的状态。
    # ipadm show-addr interface

示例 6-1 在 IPv4 隧道上创建 IPv6 接口

以下示例说明如何在 IPv4 隧道上创建持久性 IPv6。

# dladm create-iptun -T ipv4 -a local=63.1.2.3,remote=192.4.5.6 private0
# dladm set-linkprop -p hoplimit=200 private0
# ipadm create-ip private0
# ipadm create-addr -T addrconf private0/v6
# ipadm show-addr private/
ADDROBJ       TYPE     STATE   ADDR
private0/v6   static   ok      fe80::a08:392e/10 --> fe80::8191:9a56

要添加替代地址,请使用相同的语法,并对 addrobj 使用不同的 user-specified-string。例如,可以按如下所示添加全局地址:

# ipadm create-addr -T static -a local=2001:db8:4728::1, \
remote=2001:db8:4728::2 private0/global
# ipadm show-addr private0/
ADDROBJ          TYPE       STATE   ADDR
private0/v6      addrconf   ok      fe80::a08:392e/10 --> fe80::8191:9a56
private0/global  static     ok      2001:db8:4728::1 --> 2001:db8:4728::2

请注意,IPv6 地址的前缀 2001:db8 为特殊的 IPv6 前缀,专门用于文档示例。有关 IPv6 地址和格式的说明,请参见《系统管理指南:IP 服务》中的"IPv6 寻址概述"

示例 6-2 在 IPv4 隧道上创建 IPv4 接口

以下示例说明如何在 IPv4 隧道上创建持久性 IPv4。

# dladm create-iptun -T ipv4 -a local=63.1.2.3,remote=192.4.5.6 vpn0
# ipadm create-ip vpn0
# ipadm create-addr -T static -a local=10.0.0.1,remote=10.0.0.2 vpn0/v4
# ipadm show-addr
ADDROBJ   TYPE     STATE   ADDR
lo0/v4    static   ok      127.0.0.1
vpn0/v4   static   ok      10.0.0.1-->10.0.0.2

您可以进一步配置 IPsec 策略来为流经此隧道的包提供安全连接。有关 IPsec 配置的信息,请参见第 15 章

示例 6-3 在 IPv6 隧道上创建 IPv6 接口

以下示例说明如何在 IPv6 隧道上创建持久性 IPv6。

# dladm create-iptun -T ipv6 -a local=2001:db8:feed::1234,remote=2001:db8:beef::4321 \
tun0
# ipadm create-ip tun0
# ipadm create-addr -T addrconf tun0/v6
# ipadm show-addr
ADDROBJ   TYPE       STATE   ADDR
lo0/v6    static     ok      ::1/128
tun0/v6   addrconf   ok      2001:db8:feed::1234 --> 2001:db8:beef::4321

要添加地址,如全局地址或替代本地和远程地址,请按如下所示使用 ipadm 命令:

# ipadm create-addr -T static \
-a local=2001:db8::4728:56bc,remote=2001:db8::1428:57ab tun0/alt
# ipadm show-addr tun0/
ADDROBJ    TYPE      STATE ADDR
tun0/v6    addrconf  ok    2001:db8:feed::1234 --> 2001:db8:beef::4321
tun0/alt   static    ok    2001:db8::4728:56bc --> 2001:db8::1428:57ab

如何配置 6to4 隧道

在 6to4 隧道中,6to4 路由器必须充当网络的 6to4 站点中节点的 IPv6 路由器。因此,当配置 6to4 路由器时,还必须在其物理接口上将该路由器配置为 IPv6 路由器。有关 IPv6 路由的更多信息,请参见IPv6 路由

  1. 创建 6to4 隧道。
    # dladm create-iptun -T 6to4 -a local=address tunnel-link

    此命令可使用以下选项或参数:

    -a local=address

    指定隧道本地地址,该地址必须是系统中已存在的有效地址。

    tunnel-link

    指定 IP 隧道链路。如果网络链路管理中支持有意义的名称,则隧道名称不再限制为要创建的隧道类型。相反,可以为隧道指定任何通过管理方式选择的名称。隧道名称由字符串和 PPA 编号组成,例如 mytunnel0。有关管理有意义名称的指定的规则,请参阅《Oracle Solaris 管理:网络接口和网络虚拟化》中的"有效链路名称的规则"

  2. 创建隧道 IP 接口。
    # ipadm create-ip tunnel-interface

    其中,tunnel-interface 使用与隧道链路相同的名称。

  3. (可选)为所使用的隧道添加替代 IPv6 地址。
  4. 编辑 /etc/inet/ndpd.conf 文件并添加以下两行以通告 6to4 路由:
    if subnet-interface AdvSendAdvertisements 1
    IPv6-address subnet-interface

    第一行指定接收通告的子网。subnet-interface 是指子网所连接到的链路。第二行中的 IPv6 地址必须具有 6to4 前缀 2000,该前缀用于 6to4 隧道中的 IPv6 地址。

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

  5. 启用 IPv6 转发。
    # ipadm set-prop -p forwarding=on ipv6
  6. 重新引导路由器。

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

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

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

示例 6-4 创建 6to4 隧道

在此示例中,子网接口为 bge0/etc/inet/ndpd.conf 将在相应步骤中引用该接口。

以下示例说明如何创建 6to4 隧道。请注意,在 6to4 隧道上只能配置 IPv6 接口。

# dladm create-iptun -T 6to4 -a local=192.168.35.10 tun0
# ipadm create-ip tun0
# ipadm show-addr
ADDROBJ       TYPE     STATE   ADDR
lo0/v4        static   ok      127.0.0.1/8
bge0/static   static   ok      192.168.35.10/24
lo0/v6        static   ok      ::1/128
tun0/_a       static   ok      2002:c0a8:57bc::1/64

# ipadm create-addr -T static -a 2002:c0a8:230a::2/16 tun0/a2
# ipadm create-addr -T static -a 2002:c0a8:230a::3/16 tun0/a3
# ipadm show-addr tun0/
ADDROBJ       TYPE     STATE   ADDR
lo0/v4        static   ok      127.0.0.1/8
bge0/static   static   ok      192.168.35.10/24
lo0/v6        static   ok      ::1/128
tun0/_a       static   ok      2002:c0a8:57bc::1/64
tun0/a2       static   ok      2002:c0a8:230a::2/16
tun0/a3       static   ok      2002:c0a8:230a::3/16

# vi /etc/inet/ndpd.conf
if bge0 AdvSendAdvertisements 1
2002:c0a8:57bc::1/64 bge0

# ipadm set-prop -p forwarding=on ipv6

请注意,对于 6to4 隧道,IPv6 地址的前缀为 2002。有关详细说明,请参见《系统管理指南:IP 服务》中的"IPv6 中的前缀"

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


注意

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


开始之前

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

  1. 使用以下格式之一启用通往 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 中继路由器的隧道将一直保持活动状态。

  2. 如果不再需要隧道,请删除通往 6to4 中继路由器的隧道:
    # /usr/sbin/6to4relay -d
  3. (可选)使通往 6to4 中继路由器的隧道在重新引导过程中持续保留。

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

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

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

    2. ACCEPT6TO4RELAY=NO 行中的 "NO" 值更改为 "YES"。
    3. (可选)创建通往特定 6to4 中继路由器的隧道,该隧道在重新引导过程中持续保留。

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

示例 6-5 获取有关 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

如何修改 IP 隧道配置

示例 6-6 修改隧道的地址和属性

此示例由两个过程组成。首先,临时更改 IPv4 隧道 vpn0 的本地和远程地址。以后重新引导系统时,隧道将恢复为使用原始地址。第二个过程将 vpn0hoplimit 更改为 60。

# dladm modify-iptun -t -a local=10.8.48.149,remote=192.1.2.3 vpn0

# dladm set-linkprop -p hoplimit=60 vpn0

如何显示 IP 隧道的配置

示例 6-7 显示有关所有隧道的信息

在以下示例中,系统中仅存在一个隧道。

# dladm show-iptun
LINK     TYPE     FLAGS     LOCAL          REMOTE
tun0     6to4     --       192.168.35.10   --
vpn0     ipv4     --       10.8.48.149     192.1.2.3

示例 6-8 显示计算机可解析格式的选定字段

在以下示例中,仅显示包含隧道信息的特定字段。

# dladm show-iptun -p -o link,type,local
tun0:6to4:192.168.35.10
vpn0:ipv4:10.8.48.149

如何显示 IP 隧道的属性

示例 6-9 显示隧道的属性

以下示例说明如何显示隧道的所有链路属性。

# dladm show-linkprop tun0
LINK     PROPERTY     PERM     VALUE     DEFAULT     POSSIBLE
tun0     autopush     --       --        --          -- 
tun0     zone         rw       --        --          -- 
tun0     state        r-       up        up          up,down 
tun0     mtu          r-       65515     --          576-65495 
tun0     maxbw        rw       --        --          -- 
tun0     cpus         rw       --        --          -- 
tun0     priority     rw       high      high        low,medium,high 
tun0     hoplimit     rw       64        64          1-255

如何删除 IP 隧道

  1. 根据接口类型,使用相应语法取消激活隧道上配置的 IP 接口。
    # ipadm delete-ip tunnel-link

    注 - 要成功删除隧道,隧道上应检测不到 IP 接口。


  2. 删除 IP 隧道。
    # dladm delete-iptun tunnel-link

    此命令的唯一选项是 -t,将导致隧道被临时删除。重新引导系统后,将恢复该隧道。

示例 6-10 删除为 IPv6 接口配置的 IPv6 隧道

在以下示例中,永久删除了持久性隧道。

# ipadm delete-ip ip6.tun0
# dladm delete-iptun ip6.tun0