跳过导航链接 | |
退出打印视图 | |
配置和管理 Oracle Solaris 11.1 网络 Oracle Solaris 11.1 Information Library (简体中文) |
本节介绍使用 dladm 命令配置隧道的过程。
从此 Oracle Solaris 发行版开始,隧道管理将与 IP 接口配置分开。IP 隧道的数据链路方面现在使用 dladm 命令管理。此外,IP 接口配置(包括 IP 隧道接口)现在使用 ipadm 命令执行。
将使用 dladm 的下列子命令配置 IP 隧道:
create-iptun
modify-iptun
show-iptun
delete-iptun
set-linkprop
有关 dladm 命令的详细信息,请参阅 dladm(1M) 手册页。
注 - IP 隧道管理与 IPsec 配置密切相关。例如,IPsec 虚拟专用网络 (virtual private network, VPN) 是主要使用 IP 隧道的网络之一。有关 Oracle Solaris 中的安全性的更多信息,请参见《在 Oracle Solaris 11.1 中保护网络安全》中的第 6 章 "IP 安全体系结构(概述)"。要配置 IPsec,请参见《在 Oracle Solaris 11.1 中保护网络安全》中的第 7 章 "配置 IPsec(任务)"。
|
# dladm create-iptun [-t] -T type -a [local|remote]=addr,... tunnel-link
此命令可使用以下选项或参数:
创建临时隧道。缺省情况下,该命令将创建一个持久性隧道。
注 - 如果要在隧道中配置一个持久性 IP 接口,则必须创建一个持久性隧道并且不使用 -t 选项。
指定要创建的隧道的类型。创建所有隧道类型都需要此参数。
指定对应于本地地址和远程隧道地址的字面值 IP 地址或主机名。这些地址必须有效并且已在系统中创建。取决于隧道的类型,仅指定一个地址或同时指定本地和远程地址。如果指定本地和远程地址,则必须使用逗号分隔这两个地址。
IPv4 隧道需要有本地和远程 IPv4 地址才能正常工作。
IPv6 隧道需要有本地和远程 IPv6 地址才能正常工作。
6to4 隧道需要有本地 IPv4 地址才能正常工作。
注 - 对于持久性 IP 隧道数据链路配置,如果对地址使用主机名,这些主机名将保存在配置存储中。在后续系统引导期间,如果名称解析到的 IP 地址不同于创建隧道时使用的 IP 地址,则隧道将获取新配置。
指定 IP 隧道链路。如果网络链路管理中支持有意义的名称,则隧道名称不再限制为要创建的隧道类型。而是,可以为隧道指定任何通过管理方式选择的名称。隧道名称由字符串和物理连接点 (physical point of attachment, PPA) 编号组成,例如 mytunnel0。有关指定有意义名称的管理规则,请参阅《Oracle Solaris 11 联网介绍》中的"有效链路名称的规则"。
如果未指定隧道链路,则会根据以下命名约定自动提供该名称:
对于 IPv4 隧道:ip.tun#
对于 IPv6 隧道:ip6.tun#
对于 6to4 隧道:ip.6to4tun#
# 是所要创建的隧道类型的最低可用 PPA 编号。
# dladm set-linkprop -p [hoplimit=value] [encaplimit=value] tunnel-link
指定 IPv6 上隧道的隧道接口的跃点限制。hoplimit 与 IPv4 上隧道的 IPv4 生存时间 (time to live, TTL) 字段等效。
指定包允许的嵌套隧道的级数。此选项仅适用于 IPv6 隧道。
注 - 为 hoplimit 和 encaplimit 设置的值必须处于可接受的范围内。hoplimit 和 encaplimit 为隧道链路属性。因此,与其他链路属性一样,这些属性通过相同的 dladm 子命令管理。这些子命令为 dladm set-linkprop、dladm reset-linkprop 和 dladm show-linkprop。有关与 dladm 命令配合使用以管理链路的其他子命令,请参阅 dladm(1M) 手册页。
# ipadm create-ip tunnel-interface
其中,tunnel-interface 使用与隧道链路相同的名称。
# ipadm create-addr [-t] -a local=address,remote=address interface
指示临时 IP 配置而不是隧道上的持久性 IP 配置。如果不使用此选项,则 IP 接口配置为持久性配置。
指定隧道接口的 IP 地址。需要同时指定源和目标 IP 地址,分别由 local 和 remote 表示。本地和远程地址可以是 IPv4 或 IPv6 地址。
指定隧道接口。
有关 ipadm 命令和配置 IP 接口(包括隧道接口)的不同选项的更多信息,请参见ipadm(1M) 手册页和《在 Oracle Solaris 11.1 中使用固定网络配置连接系统》。
# ipadm show-addr interface
示例 6-1 在 IPv4 隧道上创建 IPv6 接口
以下示例说明了如何创建持久性的 IPv6 over IPv4 隧道。
# 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 # ipadm show-addr private/ ADDROBJ TYPE STATE ADDR private0/v6 static ok fe80::a08:392e/10 --> fe80::8191:9a56
要添加备用地址,请使用相同语法。例如,可以按如下所示添加全局地址:
# ipadm create-addr -a local=2001:db8:4728::1, \ remote=2001:db8:4728::2 private0 # ipadm show-addr private0/ ADDROBJ TYPE STATE ADDR private0/v6 addrconf ok fe80::a08:392e/10 --> fe80::8191:9a56 private0/v6a static ok 2001:db8:4728::1 --> 2001:db8:4728::2
请注意,IPv6 地址的前缀 2001:db8 为特殊的 IPv6 前缀,专门用于文档示例。
示例 6-2 在 IPv4 隧道上创建 IPv4 接口
以下示例说明了如何创建持久性的 IPv4 over 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 -a local=10.0.0.1,remote=10.0.0.2 vpn0 # 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 配置的信息,请参见《在 Oracle Solaris 11.1 中保护网络安全》中的第 7 章 "配置 IPsec(任务)"。
示例 6-3 在 IPv6 隧道上创建 IPv6 接口
以下示例说明了如何创建持久性的 IPv6 over 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 # 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 \ -a local=2001:db8::4728:56bc,remote=2001:db8::1428:57ab tun0 # ipadm show-addr tun0 ADDROBJ TYPE STATE ADDR tun0/v6 addrconf ok 2001:db8:feed::1234 --> 2001:db8:beef::4321 tun0/v6a static ok 2001:db8::4728:56bc --> 2001:db8::1428:57ab
在 6to4 隧道中,6to4 路由器必须充当网络的 6to4 站点中节点的 IPv6 路由器。因此,当配置 6to4 路由器时,还必须在其物理接口上将该路由器配置为 IPv6 路由器。有关 IPv6 路由的更多信息,请参见IPv6 路由。
# dladm create-iptun -T 6to4 -a local=address tunnel-link
此命令可使用以下选项或参数:
指定隧道本地地址,该地址必须是系统中已存在的有效地址。
指定 IP 隧道链路。如果网络链路管理中支持有意义的名称,则隧道名称不再限制为要创建的隧道类型。相反,可以为隧道指定任何通过管理方式选择的名称。隧道名称由字符串和 PPA 编号组成,例如 mytunnel0。有关指定有意义名称的管理规则,请参阅《Oracle Solaris 11 联网介绍》中的"有效链路名称的规则"。
# ipadm create-ip tunnel-interface
其中,tunnel-interface 使用与隧道链路相同的名称。
if subnet-interface AdvSendAdvertisements 1 IPv6-address subnet-interface
第一行指定接收通告的子网。subnet-interface 是指子网所连接到的链路。第二行中的 IPv6 地址必须具有 6to4 前缀 2000,该前缀用于 6to4 隧道中的 IPv6 地址。
有关 ndpd.conf 文件的详细信息,请参阅 ndpd.conf(4) 手册页。
# ipadm set-prop -p forwarding=on ipv6
或者,可以向 /etc/inet/in.ndpd 守护进程发出 sighup,以便开始发送路由器通告。要接收 6to4 前缀的每个子网上的 IPv6 节点现在可以使用 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 net0/v4 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 -a 2002:c0a8:230a::2/16 tun0 # ipadm create-addr -a 2002:c0a8:230a::3/16 tun0 # ipadm show-addr tun0 ADDROBJ TYPE STATE ADDR lo0/v4 static ok 127.0.0.1/8 net0/v4 static ok 192.168.35.10/24 lo0/v6 static ok ::1/128 tun0/_a static ok 2002:c0a8:57bc::1/64 tun0/v6 static ok 2002:c0a8:230a::2/16 tun0/v6a 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。
注意 - 由于 6to4 中继路由器存在重要的安全问题,因此,在缺省情况下,Oracle Solaris 中会禁用 6to4 中继路由器支持。请参见《Troubleshooting Network Issues》中的"Security Issues When Tunneling to a 6to4 Relay Router"。 |
开始之前
在启用通往 6to4 中继路由器的隧道之前,必须先完成下列任务:
按照如何创建和配置 IP 隧道中的说明在站点上配置了 6to4 路由器。
检查建立通往 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"(RFC 3068,6to4 中继路由器的任播前缀)。
启用通往特定 6to4 中继路由器的隧道。
# /usr/sbin/6to4relay -e -a relay-router-address
-a 选项表示后面将跟有一个特定路由器地址。请将 relay-router-address 替换为用以启用隧道的特定 6to4 中继路由器的 IPv4 地址。
除非删除 6to4 隧道的伪接口,否则通往 6to4 中继路由器的隧道将一直保持活动状态。
# /usr/sbin/6to4relay -d
您的站点可能迫切要求通往 6to4 中继路由器的隧道在 6to4 路由器每次重新引导时都进行恢复。要支持此方案,必须执行下列操作:
示例 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
# dladm modify-iptun -a [local|remote]=addr,... tunnel-link
无法修改现有隧道的类型。因此,不允许对此命令使用 -T type 选项。只能修改以下隧道参数:
指定对应于本地地址和远程隧道地址的字面值 IP 地址或主机名。取决于隧道的类型,仅指定一个地址或同时指定本地和远程地址。如果指定本地和远程地址,则必须使用逗号分隔这两个地址。
IPv4 隧道需要有本地和远程 IPv4 地址才能正常工作。
IPv6 隧道需要有本地和远程 IPv6 地址才能正常工作。
6to4 隧道需要有本地 IPv4 地址才能正常工作。
对于持久性 IP 隧道数据链路配置,如果对地址使用主机名,这些主机名将保存在配置存储中。在后续系统引导期间,如果名称解析到的 IP 地址不同于创建隧道时使用的 IP 地址,则隧道将获取新配置。
如果要更改隧道的本地和远程地址,请确保这些地址与要修改的隧道类型一致。
注 - 如果要更改隧道链路的名称,不要使用 modify-iptun 子命令,应使用 dladm rename-link。
# dladm rename-link old-tunnel-link new-tunnel-link
类似地,不要使用 modify-iptun 命令更改隧道属性,例如 hoplimit 或 encaplimit,应使用 dladm set-linkprop 命令设置这些属性的值。
示例 6-6 修改隧道的地址和属性
此示例由两个过程组成。首先,临时更改 IPv4 隧道 vpn0 的本地和远程地址。以后重新引导系统时,隧道将恢复为使用原始地址。第二个过程将 vpn0 的 hoplimit 更改为 60。
# dladm modify-iptun -t -a local=10.8.48.149,remote=192.1.2.3 vpn0 # dladm set-linkprop -p hoplimit=60 vpn0
# dladm show-iptun [-p] -o fields [tunnel-link]
可以将以下选项与该命令配合使用:
显示计算机可解析格式的信息。此参数是可选的。
显示提供特定隧道信息的选定字段。
指定要显示其配置信息的隧道。此参数是可选的。如果省略隧道名称,该命令将显示有关系统中所有隧道的信息。
示例 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
# dladm show-linkprop [-c] [-o fields] [tunnel-link]
可以将以下选项与该命令配合使用:
显示计算机可解析格式的信息。此参数是可选的。
显示提供有关链路属性的特定信息的选定字段。
指定要显示其属性信息的隧道。此参数是可选的。如果省略隧道名称,该命令将显示有关系统中所有隧道的信息。
示例 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
# ipadm delete-ip tunnel-link
注 - 要成功删除隧道,隧道上应检测不到 IP 接口。
# dladm delete-iptun tunnel-link
此命令的唯一选项是 -t,将导致隧道被临时删除。重新引导系统后,将恢复该隧道。
示例 6-10 删除为 IPv6 接口配置的 IPv6 隧道
在以下示例中,永久删除了持久性隧道。
# ipadm delete-ip ip6.tun0 # dladm delete-iptun ip6.tun0