17-隧道配置
本章节下载: 17-隧道配置 (921.32 KB)
目 录
2.3.3 IPv6 over IPv4手动隧道典型配置举例
3.4.1 IPv4 over IPv4隧道基本组网配置举例
4.2.3 IPv4 over IPv6手动隧道典型配置举例
5.6.1 IPv6 over IPv6隧道基本组网配置举例
本章仅介绍隧道接口的配置,有关隧道模式的介绍请参见后续章节。
隧道技术是一种封装技术,即一种网络协议将其他网络协议的数据报文封装在自己的报文中,然后在网络中传输。封装后的数据报文在网络中传输的路径,称为隧道。隧道是一条虚拟的点对点连接,隧道的两端需要对数据报文进行封装及解封装。隧道技术就是指包括数据封装、传输和解封装在内的全过程。
目前支持的隧道技术包括:
· ADVPN(Auto Discovery Virtual Private Network,自动发现虚拟专用网络)隧道,ADVPN的相关介绍和配置请参见“三层技术-IP业务配置指导”中的“ADVPN”。
· GRE(Generic Routing Encapsulation,通用路由封装)隧道,GRE的相关介绍和配置请参见“三层技术-IP业务配置指导”中的“GRE”。
· MPLS TE(Multiprotocol Label Switching Traffic Engineering,多协议标记交换流量工程)隧道,MPLS TE的相关介绍和配置请参见“MPLS配置指导”中的“MPLS TE”。
· IPsec(IP Security,IP安全)隧道,IPsec的相关介绍和配置请参见“安全配置指导”中的“IPsec”。
· VXLAN(Virtual eXtensible LAN,可扩展虚拟局域网络)隧道,VXLAN的相关介绍和配置请参见“VXLAN配置指导”中的“VXLAN”。
· IPv6 over IPv4隧道、IPv4 over IPv4隧道、IPv4 over IPv6隧道和IPv6 over IPv6隧道。
主备倒换或备用主控板拔出时,建立在主控板或备用主控板上的隧道接口不会被删除,若再配置相同的隧道接口,系统会提示隧道接口已经存在。如果需要删除隧道接口,请使用undo interface tunnel命令。
同一台设备上,多个Tunnel接口不要同时配置完全相同的目的端地址和源端地址。
对于任意类型的隧道报文进行多次嵌套封装时,建议嵌套封装不超过5层,否则会造成隧道相关字段过长,设备将无法处理。
隧道两端的设备上,需要创建虚拟的三层接口,即Tunnel接口,以便隧道两端的设备利用Tunnel接口发送报文、识别并处理来自隧道的报文。
Tunnel接口配置任务如下:
(1) 创建Tunnel接口
(2) (可选)配置处理接口流量的slot
(3) (可选)配置封装后隧道报文的属性
(4) (可选)配置隧道目的端地址所属的VPN实例
(5) (可选)恢复当前Tunnel接口的缺省配置
(6) (可选)配置指定发送隧道报文的出接口
(7) (可选)开启隧道的路径MTU学习功能
(1) 进入系统视图。
system-view
(2) 创建Tunnel接口,指定隧道模式,并进入Tunnel接口视图。
interface tunnel number mode { advpn { gre | udp } [ ipv6 ] | ds-lite-aftr | gre [ ipv6 ] | gre-p2mp [ ipv6 ] | ipsec [ ipv6 ] | ipv4-ipv4 | ipv4-ipv6 | ipv6-ipv4 [ 6rd | 6to4 | auto-tunnel | isatap ] | ipv6-ipv6 | mgre | mpls-te | sr ipv6 | vxlan [ ipv6 ] }
在隧道的两端应配置相同的隧道模式,否则可能造成报文传输失败。
(3) 设置隧道的源端地址或源接口。
source { ipv4-address | ipv6-address | interface-type interface-number }
缺省情况下,未设置隧道的源端地址和源接口。
如果设置的是隧道的源端地址,则该地址将作为封装后隧道报文的源IP地址;如果设置的是隧道的源接口,则该接口的主IP地址将作为封装后隧道报文的源IP地址。
(4) 设置隧道的目的端地址。
destination { ipv4-address | ipv6-address | dhcp-alloc interface-type interface-number }
缺省情况下,未设置隧道的目的端地址。
隧道的目的端地址是对端接收报文的接口的地址,该地址将作为封装后隧道报文的目的地址。
(5) (可选)配置接口描述信息。
description text
缺省情况下,接口描述信息为“该接口的接口名 Interface”。
(6) (可选)配置Tunnel接口的MTU值。
mtu size
缺省情况下,隧道接口的状态始终为Down时,隧道的MTU值为1500;隧道接口的状态当前为Up时,隧道的MTU值为根据隧道目的地址查找路由而得到的出接口的MTU值减隧道封装报文头长度。
(7) (可选)配置Tunnel接口的期望带宽。
bandwidth bandwidth-value
缺省情况下,接口的期望带宽=接口的最大速率÷1000(kbps)。
期望带宽供业务模块使用,不会对接口实际带宽造成影响。
(8) (可选)开启Tunnel接口。
undo shutdown
缺省情况下,Tunnel接口不处于Administratively DOWN状态。
当要求同一个Tunnel接口的流量必须在同一个slot上进行处理时,可以在Tunnel接口下配置处理接口流量的slot。
为提高当前接口处理流量的可靠性,可以通过service命令和service standby命令为接口分别指定一个主用slot和一个备用slot进行流量处理。
接口上同时配置了主用slot和备用slot时,流量处理的机制如下:
· 当主用slot不可用时,流量由备用slot处理。之后,即使主用slot恢复可用,流量也继续由备用slot处理;仅当备用slot不可用时,流量才切换到主用slot。
· 当主用slot和备用slot均不可用时,流量由接收报文的slot处理;之后,主用slot和备用slot谁先恢复可用,流量就由谁处理。
如果接口上未配置主用slot和备用slot,则业务处理在接收报文的slot上进行。
为避免不必要的流量切换,建议配置主用slot后,再配置备用slot。如果先配置备用slot,则流量由备用slot处理;在配置主用slot后,流量将会从备用slot切换到主用slot。
(1) 进入系统视图。
system-view
(2) 进入Tunnel接口视图。
interface tunnel number
(3) 配置处理接口流量的主用slot。
(独立运行模式)
service slot slot-number
(IRF模式)
service chassis chassis-number slot slot-number
缺省情况下,未配置处理接口流量的主用slot。
(4) 配置处理接口流量的备用slot。
(独立运行模式)
service standby slot slot-number
(IRF模式)
service standby chassis chassis-number slot slot-number
缺省情况下,未配置处理接口流量的备用slot。
(1) 进入系统视图。
system-view
(2) 进入Tunnel接口视图。
interface tunnel number
(3) 设置封装后隧道报文的ToS。
tunnel tos { copy-inner-tos | tos-value }
缺省情况下,对于VXLAN隧道,封装后隧道报文的ToS值为0;对于非VXLAN隧道,封装后隧道报文的ToS值与封装前原始报文的ToS值相同。
仅VXLAN隧道支持copy-inner-tos参数。
(4) 设置封装后隧道报文的TTL值。
tunnel ttl ttl-value
缺省情况下,封装后隧道报文的TTL值为255。
隧道的源端地址和目的端地址必须属于相同的VPN实例,否则隧道接口链路状态无法UP。在隧道的源接口上通过ip binding vpn-instance命令可以指定隧道源端地址所属的VPN实例。ip binding vpn-instance命令的详细介绍,请参见“MPLS命令参考”中的“MPLS L3VPN”。
(1) 进入系统视图。
system-view
(2) 进入Tunnel接口视图。
interface tunnel number
(3) 配置隧道目的端地址所属的VPN实例。
tunnel vpn-instance vpn-instance-name
缺省情况下,隧道目的端地址属于公网,设备查找公网路由表转发隧道封装后的报文。
接口下的某些配置恢复到缺省情况后,会对设备上当前运行的业务产生影响。建议您在执行本配置前,完全了解其对网络产生的影响。
您可以在执行default命令后通过display this命令确认执行效果。对于未能成功恢复缺省的配置,建议您查阅相关功能的命令手册,手工执行恢复该配置缺省情况的命令。如果操作仍然不能成功,您可以通过设备的提示信息定位原因。
(1) 进入系统视图。
system-view
(2) 进入Tunnel接口视图。
interface tunnel number
(3) 恢复当前接口的缺省配置。
default
缺省情况下,当发送隧道报文到对端地址存在多条等价路径时,系统会随机选择一个出接口发送隧道报文,导致转发路径不可控,此时可以指定发送隧道报文的出接口。
指定发送隧道报文的出接口必须是处于UP状态、已配置IP地址、且路由可达的接口,否则报文会被丢弃,不能发送出去。
本功能只支持在隧道模式为IPv4 ADVPN隧道、IPv6 ADVPN隧道、GRE over IPv4隧道、GRE over IPv6隧道和VXLAN隧道的Tunnel接口下配置。
(1) 进入系统视图。
system-view
(2) 进入Tunnel接口视图。
interface tunnel number
(3) 指定发送隧道报文的出接口。
tunnel out-interface interface-type interface-number
缺省情况下,未指定发送隧道报文的出接口时,如果存在多条等价路径,随机选择一个出接口发送隧道报文。
如果隧道发送端向隧道接收端发送的隧道报文的大小超过了隧道经过节点的中间路径MTU值,报文会被丢弃,同时隧道源端将接收到ICMP目标不可达消息。开启隧道的路径MTU学习功能后,隧道源端会根据ICMP消息中的MTU值调整Tunnel接口的MTU值,保证隧道报文能够正常转发。
在GRE over IPv4隧道接口下开启路径MTU学习功能,且GRE隧道承载报文为IPv6报文时,应避免出现隧道中间节点转发接口的最小MTU值小于1312,否则会导致转发失败。
在GRE over IPv6隧道接口下开启路径MTU学习功能,且GRE隧道承载报文为IPv6报文时,应避免出现隧道中间节点转发接口的最小MTU值小于1332,否则会导致转发失败。
本命令与隧道接口下的mtu命令不能同时配置。
本命令只支持在隧道模式为GRE over IPv4隧道、GRE over IPv6隧道和VXLAN隧道的Tunnel接口下配置。
(1) 进入系统视图。
system-view
(2) 进入Tunnel接口视图。
interface tunnel number
(3) 开启隧道的路径MTU学习功能。
tunnel path-mtu enable
缺省情况下,隧道的路径MTU学习功能处于关闭状态。
在任意视图下执行display命令可以显示隧道配置后的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除Tunnel接口的统计信息。
表1-1 隧道显示和维护
操作 |
命令 |
显示Tunnel接口的相关信息 |
display interface [ tunnel [ number ] ] [ brief [ description | down ] ] |
显示Tunnel接口的IPv6相关信息(本命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“IPv6基础”) |
display ipv6 interface [ tunnel [ number ] ] [ brief ] |
清除Tunnel接口的统计信息 |
reset counters interface [ tunnel [ number ] ] |
清除Tunnel接口的IPv6统计信息(本命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“IPv6基础”) |
(独立运行模式) reset ipv6 statistics [ slot slot-number ] (IRF模式) reset ipv6 statistics [ chassis chassis-number slot slot-number ] |
在Tunnel接口上配置了相关的参数后(例如隧道的源端地址、目的端地址和隧道模式),Tunnel接口仍未处于up状态。
Tunnel接口未处于up状态的原因可能是隧道起点的物理接口没有处于up状态,或隧道的目的端地址不可达。
使用display interface和display ipv6 interface命令查看隧道起点的物理接口状态为up还是down。如果物理接口状态是down的,请检查网络连接。
使用display ipv6 routing-table和display ip routing-table命令查看是否目的端地址通过路由可达。如果路由表中没有保证隧道通讯的路由表项,请配置相关路由。
如图2-1所示,IPv6 over IPv4隧道是在IPv6数据报文前封装上IPv4的报文头,通过隧道使IPv6报文穿越IPv4网络,实现隔离的IPv6网络互通。IPv6 over IPv4隧道两端的设备必须支持IPv4/IPv6双协议栈,即同时支持IPv4协议和IPv6协议。
图2-1 IPv6 over IPv4隧道原理图
IPv6 over IPv4隧道对报文的处理过程如下:
(1) IPv6网络中的主机发送IPv6报文,该报文到达隧道的源端设备Device A。
(2) Device A根据路由表判定该报文要通过隧道进行转发后,在IPv6报文前封装上IPv4的报文头,通过隧道的实际物理接口将报文转发出去。IPv4报文头中的源IP地址为隧道的源端地址,目的IP地址为隧道的目的端地址。
(3) 封装报文通过隧道到达隧道目的端设备(或称隧道终点)Device B,Device B判断该封装报文的目的地是本设备后,将对报文进行解封装。
(4) Device B根据解封装后的IPv6报文的目的地址处理该IPv6报文。如果目的地就是本设备,则将IPv6报文转给上层协议处理;否则,查找路由表转发该IPv6报文。
根据隧道终点的IPv4地址的获取方式不同,隧道分为“配置隧道”和“自动隧道”。
· 如果IPv6 over IPv4隧道终点的IPv4地址不能从IPv6报文的目的地址中自动获取,需要进行手工配置,这样的隧道称为“配置隧道”。
· 如果IPv6报文的目的地址中嵌入了IPv4地址,则可以从IPv6报文的目的地址中自动获取隧道终点的IPv4地址,这样的隧道称为“自动隧道”。
根据对IPv6报文的封装方式的不同,IPv6 over IPv4隧道分为以下几种模式。
IPv6 over IPv4手动隧道是点到点之间的链路。建立手动隧道需要在隧道两端手工指定隧道的源端和目的端地址。
手动隧道可以建立在连接IPv4网络和IPv6网络的两个边缘路由器之间,实现隔离的IPv6网络跨越IPv4网络通信;也可以建立在边缘路由器和IPv4/IPv6双栈主机之间,实现隔离的IPv6网络跨越IPv4网络与双栈主机通信。
IPv4兼容IPv6自动隧道是点到多点的链路。隧道两端采用特殊的IPv6地址:IPv4兼容IPv6地址,其格式为:0:0:0:0:0:0:a.b.c.d/96,其中a.b.c.d是IPv4地址。通过这个嵌入的IPv4地址可以自动确定隧道的目的端地址。
IPv4兼容IPv6自动隧道的建立非常方便。但是,由于它使用IPv4兼容IPv6地址,采用IPv4兼容IPv6自动隧道通信的主机和路由器必须具有全球唯一的IPv4地址,无法解决IPv4地址空间耗尽的问题,存在一定的局限性。
· 普通6to4隧道
6to4隧道是点到多点的自动隧道,主要建立在边缘路由器之间,用于通过IPv4网络连接多个IPv6孤岛。
6to4隧道两端采用特殊的6to4地址,其格式为:2002:abcd:efgh:子网号::接口ID/48。其中:2002表示固定的IPv6地址前缀;abcd:efgh为用16进制表示的IPv4地址(如1.1.1.1可以表示为0101:0101),用来唯一标识一个6to4网络(如果IPv6孤岛中的主机都采用6to4地址,则该IPv6孤岛称为6to4网络),6to4网络的边缘路由器上连接IPv4网络的接口地址需要配置为此IPv4地址;子网号用来在6to4网络内划分子网;子网号和接口ID共同标识了一个主机在6to4网络内的位置。通过6to4地址中嵌入的IPv4地址可以自动确定隧道的终点,使隧道的建立非常方便。
6to4地址中采用一个全球唯一的IPv4地址标识了一个6to4网络,克服了IPv4兼容IPv6自动隧道的局限性。
· 6to4中继
6to4隧道只能用于前缀为2002::/16的6to4网络之间的通信,但在IPv6网络中也会使用像2001::/16这样的IPv6网络地址。为了实现6to4网络和其它IPv6网络的通信,必须有一台6to4路由器作为网关转发到IPv6网络的报文,这台路由器就叫做6to4中继(6to4 relay)路由器。
如下图所示,在6to4网络的边缘路由器Device A上配置一条到达IPv6网络(非6to4网络)的静态路由,下一跳地址指向6to4中继路由器Device C的6to4地址,这样,所有去往该IPv6网络的报文都会被转发到6to4中继路由器,之后再由6to4中继路由器转发到IPv6网络中,从而实现6to4网络与IPv6网络的互通。
图2-2 6to4隧道和6to4中继原理图
ISATAP隧道是点到多点的自动隧道技术,为IPv6主机通过IPv4网络接入IPv6网络提供了一个较好的解决方案。
使用ISATAP隧道时,IPv6报文的目的地址要采用特殊的ISATAP地址。ISATAP地址格式为:Prefix:0:5EFE:abcd:efgh/64。其中,64位的Prefix为任何合法的IPv6单播地址前缀;abcd:efgh为用16进制表示的32位IPv4地址(如1.1.1.1可以表示为0101:0101),该IPv4地址不要求全球唯一。通过ISATAP地址中嵌入的IPv4地址可以自动确定隧道的终点,使隧道的建立非常方便。
ISATAP隧道主要用于跨越IPv4网络在IPv6主机与边缘路由器之间、两个边缘路由器之间建立连接。
图2-3 ISATAP隧道原理图
· 普通6RD隧道
6RD隧道是点到多点的自动隧道技术,是对6to4隧道的扩展。相对于6to4网络,6RD网络的IPv6地址前缀不再局限于2002::/16,而是由运营商分配,并且不再要求将整个32位的IPv4地址都嵌入到IPv6地址中,可以只是嵌入一部分。
图2-4 6RD网络的IPv6地址格式
6RD网络的IPv6地址格式如图2-4所示,其中:6RD prefix表示运营商的IPv6地址前缀,长度为n bits;IPv4 address表示部分或完整的隧道源端的IPv4地址,长度为o bits,用16进制表示(如配置IPv4前缀长度为8 bits、后缀长度为8 bits,那么1.2.3.4地址的前缀为01,后缀为04,IPv4 address为0203);6RD prefix和IPv4 address共同构成6RD Delegated Prefix(6RD授权前缀),用来唯一标识一个6RD网络(如果IPv6孤岛中的主机都采用6RD地址,则该IPv6孤岛称为6RD网络);子网号用来在6RD网络内划分子网;子网号和接口ID共同标识了一个主机在6RD网络内的位置。通过6RD地址中嵌入的IPv4地址以及6RD前缀、IPv4前缀和后缀可以自动确定隧道的终点,使隧道的建立非常方便。
· 6RD中继
普通6RD隧道只能用于前缀为6RD授权前缀的6RD网络之间的通信,但在IPv6网络中也会存在未采用6RD授权前缀的地址。为了实现6RD网络和非6RD网络通信,必须有一台6RD路由器作为网关转发到非6RD网络的报文,这台路由器就叫做6RD中继(6RD Border Relay,简称BR)路由器,而6RD网络的边缘路由器叫做6RD用户侧(6RD Customer Edge,简称CE)路由器。
如图2-5所示,在6RD用户侧路由器Device A上配置一条到达非6RD网络的静态路由,下一跳地址指向6RD中继路由器Device C的6RD地址,这样,所有去往该网络的报文都会被转发到6RD中继路由器,之后再由6RD中继路由器转发到非6RD网络中,从而实现6RD网络与非6RD网络的互通。
图2-5 6RD隧道和6RD中继原理图
IPv6 over IPv4隧道配置任务如下:
(1) 配置IPv6 over IPv4隧道
请选择以下一项任务进行配置:
¡ 配置6to4隧道
¡ 配置6RD隧道
(2) (可选)配置丢弃含有IPv4兼容IPv6地址的IPv6报文
(3) (可选)开启隧道报文的分片检查功能
· 在本端设备上为隧道指定的目的端地址,应该与在对端设备上为隧道指定的源端地址相同;在本端设备上为隧道指定的源端地址,应该与在对端设备上为隧道指定的目的端地址相同。
· 在同一台设备上,隧道模式相同的Tunnel接口建议不要同时配置完全相同的源端地址和目的端地址。
· 如果封装前IPv6报文的目的IPv6地址与Tunnel接口的IPv6地址不在同一个网段,则必须配置通过Tunnel接口到达目的IPv6地址的转发路由,以便需要进行封装的报文能正常转发。用户可以配置静态路由,指定到达目的IPv6地址的路由出接口为本端Tunnel接口或下一跳为对端Tunnel接口地址。用户也可以配置动态路由,在Tunnel接口使能动态路由协议。在隧道的两端都要进行此项配置,配置的详细情况请参见“三层技术-IP路由配置指导”中的“IPv6静态路由”或其他路由协议配置。
(1) 进入系统视图。
system-view
(2) 进入模式为IPv6 over IPv4手动隧道的Tunnel接口视图。
interface tunnel number [ mode ipv6-ipv4 ]
(3) 设置Tunnel接口的IPv6地址。
详细配置方法,请参见“三层技术-IP业务配置指导”中的“IPv6基础”。
(4) 设置隧道的源端地址或源接口。
source { ipv4-address | interface-type interface-number }
缺省情况下,未设置隧道的源端地址和源接口。
如果设置的是隧道的源端地址,则该地址将作为封装后隧道报文的源IP地址;如果设置的是隧道的源接口,则该接口的主IP地址将作为封装后隧道报文的源IP地址。
(5) 设置隧道的目的端地址。
destination ipv4-address
缺省情况下,未设置隧道的目的端地址。
隧道的目的端地址是对端接收报文的接口的地址,该地址将作为封装后隧道报文的目的地址。
(6) (可选)设置封装后隧道报文的DF(Don’t Fragment,不分片)标志。
tunnel dfbit enable
缺省情况下,未设置隧道报文的不分片标志,即转发隧道报文时允许分片。
如图2-6所示,两个IPv6网络分别通过Router A和Router B与IPv4网络连接,要求在Router A和Router B之间建立IPv6 over IPv4隧道,使两个IPv6网络可以互通。由于隧道终点的IPv4地址不能从IPv6报文的目的地址中自动获取,因此,需要配置IPv6 over IPv4手动隧道。
图2-6 IPv6 over IPv4手动隧道组网图
在开始下面的配置之前,请确保Router A和Router B之间IPv4报文路由可达。
(1) 配置Router A
# 配置接口GigabitEthernet2/0/2的地址。
<RouterA> system-view
[RouterA] interface gigabitethernet 2/0/2
[RouterA-GigabitEthernet2/0/2] ip address 192.168.100.1 255.255.255.0
[RouterA-GigabitEthernet2/0/2] quit
# 配置接口GigabitEthernet2/0/1的IPv6地址。
[RouterA] interface gigabitethernet 2/0/1
[RouterA-GigabitEthernet2/0/1] ipv6 address 3002::1 64
[RouterA-GigabitEthernet2/0/1] quit
# 创建模式为IPv6 over IPv4手动隧道的接口Tunnel0。
[RouterA] interface tunnel 0 mode ipv6-ipv4
# 配置Tunnel0接口的IPv6地址。
[RouterA-Tunnel0] ipv6 address 3001::1/64
# 配置Tunnel0接口的源接口为GigabitEthernet2/0/2。
[RouterA-Tunnel0] source gigabitethernet 2/0/2
# 配置Tunnel0接口的目的端地址(Router B的GigabitEthernet2/0/2的IP地址)。
[RouterA-Tunnel0] destination 192.168.50.1
[RouterA-Tunnel0] quit
# 配置从Router A经过Tunnel0接口到IPv6 network 2的静态路由。
[RouterA] ipv6 route-static 3003:: 64 tunnel 0
(2) 配置Router B
# 配置接口GigabitEthernet2/0/2的地址。
<RouterB> system-view
[RouterB] interface gigabitethernet 2/0/2
[RouterB-GigabitEthernet2/0/2] ip address 192.168.50.1 255.255.255.0
[RouterB-GigabitEthernet2/0/2] quit
# 配置接口GigabitEthernet2/0/1的IPv6地址。
[RouterB] interface gigabitethernet 2/0/1
[RouterB-GigabitEthernet2/0/1] ipv6 address 3003::1 64
[RouterB-GigabitEthernet2/0/1] quit
# 创建模式为IPv6 over IPv4手动隧道的接口Tunnel0。
[RouterB] interface tunnel 0 mode ipv6-ipv4
# 配置Tunnel0接口的IPv6地址。
[RouterB-Tunnel0] ipv6 address 3001::2/64
# 配置Tunnel0接口的源接口为GigabitEthernet2/0/2。
[RouterB-Tunnel0] source gigabitethernet 2/0/2
# 配置Tunnel0接口的目的端地址(Router A的GigabitEthernet2/0/2的IP地址)。
[RouterB-Tunnel0] destination 192.168.100.1
[RouterB-Tunnel0] quit
# 配置从Router B经过Tunnel0接口到IPv6 network 1的静态路由。
[RouterB] ipv6 route-static 3002:: 64 tunnel 0
# 完成上述配置后,在Router A和Router B上分别执行display ipv6 interface命令,可以看出Tunnel0接口处于up状态。(具体显示信息略)
# 从Router A和Router B上可以Ping通对端的GigabitEthernet2/0/1接口的IPv6地址。下面仅以Router A为例。
[RouterA] ping ipv6 3003::1
Ping6(56 data bytes) 3001::1 --> 3003::1, press CTRL_C to break
56 bytes from 3003::1, icmp_seq=0 hlim=64 time=45.000 ms
56 bytes from 3003::1, icmp_seq=1 hlim=64 time=10.000 ms
56 bytes from 3003::1, icmp_seq=2 hlim=64 time=4.000 ms
56 bytes from 3003::1, icmp_seq=3 hlim=64 time=10.000 ms
56 bytes from 3003::1, icmp_seq=4 hlim=64 time=11.000 ms
--- Ping6 statistics for 3003::1 ---
5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss
round-trip min/avg/max/std-dev = 4.000/16.000/45.000/14.711 ms
· IPv4兼容IPv6自动隧道不需要配置隧道的目的端地址,因为隧道的目的端地址可以通过IPv4兼容IPv6地址中嵌入的IPv4地址自动获得。
· 对于自动隧道,隧道模式相同的Tunnel接口建议不要同时配置完全相同的源端地址。
(1) 进入系统视图。
system-view
(2) 进入模式为IPv4兼容IPv6自动隧道的Tunnel接口视图。
interface tunnel number [ mode ipv6-ipv4 auto-tunnel ]
(3) 设置Tunnel接口的IPv6地址。
详细配置方法,请参见“三层技术-IP业务配置指导”中的“IPv6基础”。
(4) 设置隧道的源端地址或源接口。
source { ipv4-address | interface-type interface-number }
缺省情况下,未设置隧道的源端地址和源接口。
如果设置的是隧道的源端地址,则该地址将作为封装后隧道报文的源IP地址;如果设置的是隧道的源接口,则该接口的主IP地址将作为封装后隧道报文的源IP地址。
(5) (可选)设置封装后隧道报文的DF(Don’t Fragment,不分片)标志。
tunnel dfbit enable
缺省情况下,未设置隧道报文的不分片标志,即转发隧道报文时允许分片。
如图2-7所示,两台具有双协议栈的路由器Router A和Router B通过IPv4网络连接。网络管理员希望建立IPv4兼容IPv6自动隧道,使得这两台设备能够通过IPv6协议互通。
图2-7 IPv4兼容IPv6自动隧道组网图
在开始下面的配置之前,请确保Router A和Router B之间IPv4报文路由可达。
(1) 配置Router A
# 配置接口GigabitEthernet2/0/1的地址。
<RouterA> system-view
[RouterA] interface gigabitethernet 2/0/1
[RouterA-GigabitEthernet2/0/1] ip address 192.168.100.1 255.255.255.0
[RouterA-GigabitEthernet2/0/1] quit
# 创建模式为IPv4兼容IPv6自动隧道的接口Tunnel0。
[RouterA] interface tunnel 0 mode ipv6-ipv4 auto-tunnel
# 配置Tunnel0接口的IPv6地址为IPv4兼容IPv6地址::192.168.100.1/96。
[RouterA-Tunnel0] ipv6 address ::192.168.100.1/96
# 配置Tunnel0接口的源接口为GigabitEthernet2/0/1。
[RouterA-Tunnel0] source gigabitethernet 2/0/1
(2) 配置Router B
# 配置接口GigabitEthernet2/0/1的地址。
<RouterB> system-view
[RouterB] interface gigabitethernet 2/0/1
[RouterB-GigabitEthernet2/0/1] ip address 192.168.50.1 255.255.255.0
[RouterB-GigabitEthernet2/0/1] quit
# 创建模式为IPv4兼容IPv6自动隧道的接口Tunnel0。
[RouterB] interface tunnel 0 mode ipv6-ipv4 auto-tunnel
# 配置Tunnel0接口的IPv6地址为IPv4兼容IPv6地址::192.168.50.1/96。
[RouterB-Tunnel0] ipv6 address ::192.168.50.1/96
# 配置Tunnel0接口的源接口为GigabitEthernet2/0/1。
[RouterB-Tunnel0] source gigabitethernet 2/0/1
# 完成上述配置后,在Router A和Router B上分别执行display ipv6 interface命令,可以看出Tunnel0接口处于up状态。(具体显示信息略)
# 从Router A和Router B上可以Ping通对端的IPv4兼容IPv6地址。下面仅以Router A为例。
[RouterA-Tunnel0] ping ipv6 ::192.168.50.1
Ping6(56 data bytes) ::192.168.100.1 --> ::192.168.50.1, press CTRL_C to break
56 bytes from ::192.168.50.1, icmp_seq=0 hlim=64 time=17.000 ms
56 bytes from ::192.168.50.1, icmp_seq=1 hlim=64 time=9.000 ms
56 bytes from ::192.168.50.1, icmp_seq=2 hlim=64 time=11.000 ms
56 bytes from ::192.168.50.1, icmp_seq=3 hlim=64 time=9.000 ms
56 bytes from ::192.168.50.1, icmp_seq=4 hlim=64 time=11.000 ms
--- Ping6 statistics for ::192.168.50.1 ---
5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss
round-trip min/avg/max/std-dev = 9.000/11.400/17.000/2.939 ms
· 6to4隧道不需要配置隧道的目的端地址,因为隧道的目的端地址可以通过6to4 IPv6地址中嵌入的IPv4地址自动获得。
· 对于自动隧道,隧道模式相同的Tunnel接口建议不要同时配置完全相同的源端地址。
· 如果封装前IPv6报文的目的IPv6地址与Tunnel接口的IPv6地址不在同一个网段,则必须配置通过Tunnel接口到达目的IPv6地址的转发路由,以便需要进行封装的报文能正常转发。对于自动隧道,用户只能配置静态路由,指定到达目的IPv6地址的路由出接口为本端Tunnel接口或下一跳为对端Tunnel接口地址,不支持动态路由。在隧道的两端都要进行转发路由的配置,配置的详细情况请参见“三层技术-IP路由配置指导”中的“IPv6静态路由”。
(1) 进入系统视图。
system-view
(2) 进入模式为6to4隧道的Tunnel接口视图。
interface tunnel number [ mode ipv6-ipv4 6to4 ]
(3) 设置Tunnel接口的IPv6地址。
详细配置方法,请参见“三层技术-IP业务配置指导”中的“IPv6基础”。
(4) 设置隧道的源端地址或源接口。
source { ipv4-address | interface-type interface-number }
缺省情况下,未设置隧道的源端地址和源接口。
如果设置的是隧道的源端地址,则该地址将作为封装后隧道报文的源IP地址;如果设置的是隧道的源接口,则该接口的主IP地址将作为封装后隧道报文的源IP地址。
(5) (可选)设置封装后隧道报文的DF(Don’t Fragment,不分片)标志。
tunnel dfbit enable
缺省情况下,未设置隧道报文的不分片标志,即转发隧道报文时允许分片。
如图2-8所示,两个6to4网络通过网络边缘6to4 router(Router A和Router B)与IPv4网络相连。在Router A和Router B之间建立6to4隧道,实现6to4网络中的主机Host A和Host B之间的互通。
图2-8 6to4隧道组网图
为了实现6to4网络之间的互通,除了配置6to4隧道外,还需要为6to4网络内的主机及6to4 router配置6to4地址。
· Router A上接口GigabitEthernet2/0/2的IPv4地址为2.1.1.1/24,转换成6to4地址后的前缀为2002:0201:0101::/48,Host A的地址必须使用该前缀。
· Router B上接口GigabitEthernet2/0/2的IPv4地址为5.1.1.1/24,转换成6to4地址后的前缀为2002:0501:0101::/48,Host B的地址必须使用该前缀。
在开始下面的配置之前,请确保Router A和Router B之间IPv4报文路由可达。
(1) 配置Router A
# 配置接口GigabitEthernet2/0/2的地址。
<RouterA> system-view
[RouterA] interface gigabitethernet 2/0/2
[RouterA-GigabitEthernet2/0/2] ip address 2.1.1.1 24
[RouterA-GigabitEthernet2/0/2] quit
# 配置接口GigabitEthernet2/0/1的地址为6to4地址2002:0201:0101:1::1/64。
[RouterA] interface gigabitethernet 2/0/1
[RouterA-GigabitEthernet2/0/1] ipv6 address 2002:0201:0101:1::1/64
[RouterA-GigabitEthernet2/0/1] quit
# 创建模式为6to4隧道的接口Tunnel0。
[RouterA] interface tunnel 0 mode ipv6-ipv4 6to4
# 配置Tunnel0接口的IPv6地址。
[RouterA-Tunnel0] ipv6 address 3001::1/64
# 配置Tunnel0接口的源接口为GigabitEthernet2/0/2。
[RouterA-Tunnel0] source gigabitethernet 2/0/2
[RouterA-Tunnel0] quit
# 配置到目的地址2002::/16,下一跳为Tunnel接口的静态路由。
[RouterA] ipv6 route-static 2002:: 16 tunnel 0
(2) 配置Router B
# 配置接口GigabitEthernet2/0/2的地址。
<RouterB> system-view
[RouterB] interface gigabitethernet 2/0/2
[RouterB-GigabitEthernet2/0/2] ip address 5.1.1.1 24
[RouterB-GigabitEthernet2/0/2] quit
# 配置接口GigabitEthernet2/0/1的地址为6to4地址2002:0501:0101:1::1/64。
[RouterB] interface gigabitethernet 2/0/1
[RouterB-GigabitEthernet2/0/1] ipv6 address 2002:0501:0101:1::1/64
[RouterB-GigabitEthernet2/0/1] quit
# 创建模式为6to4隧道的接口Tunnel0。
[RouterB] interface tunnel 0 mode ipv6-ipv4 6to4
# 配置Tunnel0接口的IPv6地址。
[RouterB-Tunnel0] ipv6 address 3002::1/64
# 配置Tunnel0接口的源接口为GigabitEthernet2/0/2。
[RouterB-Tunnel0] source gigabitethernet 2/0/2
[RouterB-Tunnel0] quit
# 配置到目的地址2002::/16,下一跳为Tunnel接口的静态路由。
[RouterB] ipv6 route-static 2002:: 16 tunnel 0
完成以上配置之后,Host A与Host B可以互相Ping通。
D:\>ping6 -s 2002:201:101:1::2 2002:501:101:1::2
Pinging 2002:501:101:1::2
from 2002:201:101:1::2 with 32 bytes of data:
Reply from 2002:501:101:1::2: bytes=32 time=13ms
Reply from 2002:501:101:1::2: bytes=32 time=1ms
Reply from 2002:501:101:1::2: bytes=32 time=1ms
Reply from 2002:501:101:1::2: bytes=32 time<1ms
Ping statistics for 2002:501:101:1::2:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 13ms, Average = 3ms
如图2-9所示,Router A为6to4路由器,其IPv6侧的网络使用6to4地址。Router B作为6to4中继路由器,它和IPv6网络(2001::/16)相连。要求在Router A和Router B之间配置6to4隧道,使得6to4网络中的主机与IPv6网络中的主机互通。
图2-9 6to4中继组网图
6to4中继路由器的配置与6to4路由器的配置相同,但为实现6to4网络与IPv6网络的互通,需要在6to4路由器上配置到IPv6网络的路由,下一跳指向6to4中继路由器的6to4地址。6to4中继路由器上接口GigabitEthernet2/0/2的IPv4地址为6.1.1.1/24,转换成6to4地址后的前缀为2002:0601:0101::/48,6to4路由器上配置的到IPv6网络的路由下一跳可以是符合该前缀的任意一个地址。
在开始下面的配置之前,请确保Router A和Router B之间IPv4报文路由可达。
(1) 配置Router A
# 配置接口GigabitEthernet2/0/2的地址。
<RouterA> system-view
[RouterA] interface gigabitethernet 2/0/2
[RouterA-GigabitEthernet2/0/2] ip address 2.1.1.1 255.255.255.0
[RouterA-GigabitEthernet2/0/2] quit
# 配置接口GigabitEthernet2/0/1的地址为6to4地址2002:0201:0101:1::1/64。
[RouterA] interface gigabitethernet 2/0/1
[RouterA-GigabitEthernet2/0/1] ipv6 address 2002:0201:0101:1::1/64
[RouterA-GigabitEthernet2/0/1] quit
# 创建模式为6to4隧道的接口Tunnel0。
[RouterA] interface tunnel 0 mode ipv6-ipv4 6to4
# 配置Tunnel0接口的IPv6地址。
[RouterA-Tunnel0] ipv6 address 2002::1/64
# 配置Tunnel0接口的源接口为GigabitEthernet2/0/2。
[RouterA-Tunnel0] source gigabitethernet 2/0/2
[RouterA-Tunnel0] quit
# 配置到6to4中继的静态路由。
[RouterA] ipv6 route-static 2002:0601:0101:: 64 tunnel 0
# 配置到纯IPv6网络的缺省路由,指定路由的下一跳地址为6to4中继路由器的6to4地址。
[RouterA] ipv6 route-static :: 0 2002:0601:0101::1
(2) 配置Router B
# 配置接口GigabitEthernet2/0/2的地址。
<RouterB> system-view
[RouterB] interface gigabitethernet 2/0/2
[RouterB-GigabitEthernet2/0/2] ip address 6.1.1.1 255.255.255.0
[RouterB-GigabitEthernet2/0/2] quit
# 配置接口GigabitEthernet2/0/1的地址。
[RouterB] interface gigabitethernet 2/0/1
[RouterB-GigabitEthernet2/0/1] ipv6 address 2001::1/16
[RouterB-GigabitEthernet2/0/1] quit
# 创建模式为6to4隧道的接口Tunnel0。
[RouterB] interface tunnel 0 mode ipv6-ipv4 6to4
# 配置Tunnel0接口的IPv6地址。
[RouterB-Tunnel0] ipv6 address 2003::1/64
# 配置Tunnel0接口的源接口为GigabitEthernet2/0/2。
[RouterB-Tunnel0] source gigabitethernet 2/0/2
[RouterB-Tunnel0] quit
# 配置到目的地址2002::/16,下一跳为Tunnel接口的静态路由。
[RouterB] ipv6 route-static 2002:: 16 tunnel 0
完成以上配置之后,Host A与Host B可以互相Ping通。
D:\>ping6 -s 2002:201:101:1::2 2001::2
Pinging 2001::2
from 2002:201:101:1::2 with 32 bytes of data:
Reply from 2001::2: bytes=32 time=13ms
Reply from 2001::2: bytes=32 time=1ms
Reply from 2001::2: bytes=32 time=1ms
Reply from 2001::2: bytes=32 time<1ms
Ping statistics for 2001::2:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 13ms, Average = 3ms
· ISATAP隧道不需要配置隧道的目的端地址,因为隧道的目的端地址可以通过ISATAP地址中嵌入的IPv4地址自动获得。
· 对于自动隧道,隧道模式相同的Tunnel接口建议不要同时配置完全相同的源端地址。
· 如果封装前IPv6报文的目的IPv6地址与Tunnel接口的IPv6地址不在同一个网段,则必须配置通过Tunnel接口到达目的IPv6地址的转发路由,以便需要进行封装的报文能正常转发。对于自动隧道,用户只能配置静态路由,指定到达目的IPv6地址的路由出接口为本端Tunnel接口或下一跳为对端Tunnel接口地址,不支持动态路由。在隧道的两端都要进行转发路由的配置,配置的详细情况请参见“三层技术-IP路由配置指导”中的“IPv6静态路由”。
(1) 进入系统视图。
system-view
(2) 进入模式为ISATAP隧道的Tunnel接口视图。
interface tunnel number [ mode ipv6-ipv4 isatap ]
(3) 设置Tunnel接口的IPv6地址。
详细配置方法,请参见“三层技术-IP业务配置指导”中的“IPv6基础”。
(4) 设置隧道的源端地址或源接口。
source { ipv4-address | interface-type interface-number }
缺省情况下,未设置隧道的源端地址和源接口。
如果设置的是隧道的源端地址,则该地址将作为封装后隧道报文的源IP地址;如果设置的是隧道的源接口,则该接口的主IP地址将作为封装后隧道报文的源IP地址。
(5) (可选)设置封装后隧道报文的DF(Don’t Fragment,不分片)标志。
tunnel dfbit enable
缺省情况下,未设置隧道报文的不分片标志,即转发隧道报文时允许分片。
如图2-10所示,IPv6网络和IPv4网络通过ISATAP路由器相连,在IPv4网络侧分布着一些IPv6主机。要求将IPv4网络中的IPv6主机通过ISATAP隧道接入到IPv6网络。
图2-10 ISATAP隧道组网图
(1) 配置Router
# 配置接口GigabitEthernet2/0/2的地址。
<Router> system-view
[Router] interface gigabitethernet 2/0/2
[Router-GigabitEthernet2/0/2] ipv6 address 3001::1/64
[Router-GigabitEthernet2/0/2] quit
# 配置接口GigabitEthernet2/0/1的地址。
[Router] interface gigabitethernet 2/0/1
[Router-GigabitEthernet2/0/1] ip address 1.1.1.1 255.0.0.0
[Router-GigabitEthernet2/0/1] quit
# 创建模式为ISATAP隧道的接口Tunnel0。
[Router] interface tunnel 0 mode ipv6-ipv4 isatap
# 配置Tunnel0接口采用EUI-64格式形成IPv6地址。
[Router-Tunnel0] ipv6 address 2001:: 64 eui-64
# 配置Tunnel0接口的源接口为GigabitEthernet2/0/1。
[Router-Tunnel0] source gigabitethernet 2/0/1
# 取消对RA消息发布的抑制,使主机可以通过路由器发布的RA消息获取地址前缀等信息。
[Router-Tunnel0] undo ipv6 nd ra halt
[Router-Tunnel0] quit
(2) 配置ISATAP主机
ISATAP主机上的具体配置与主机的操作系统有关,下面仅以Windows XP操作系统为例进行说明。
# 在主机上安装IPv6协议。
C:\>ipv6 install
# 在Windows XP上,ISATAP接口通常为接口2,查看这个ISATAP接口的信息。
C:\>ipv6 if 2
Interface 2: Automatic Tunneling Pseudo-Interface
Guid {48FCE3FC-EC30-E50E-F1A7-71172AEEE3AE}
does not use Neighbor Discovery
does not use Router Discovery
routing preference 1
EUI-64 embedded IPv4 address: 0.0.0.0
router link-layer address: 0.0.0.0
preferred link-local fe80::5efe:1.1.1.2, life infinite
link MTU 1280 (true link MTU 65515)
current hop limit 128
reachable time 42500ms (base 30000ms)
retransmission interval 1000ms
DAD transmits 0
default site prefix length 48
# 配置ISATAP路由器的IPv4地址。
C:\>netsh interface ipv6 isatap set router 1.1.1.1
# 完成上述配置后,再来查看ISATAP接口的信息。
C:\>ipv6 if 2
Interface 2: Automatic Tunneling Pseudo-Interface
Guid {48FCE3FC-EC30-E50E-F1A7-71172AEEE3AE}
does not use Neighbor Discovery
uses Router Discovery
routing preference 1
EUI-64 embedded IPv4 address: 1.1.1.2
router link-layer address: 1.1.1.1
preferred global 2001::5efe:1.1.1.2, life 29d23h59m46s/6d23h59m46s (public)
preferred link-local fe80::5efe:1.1.1.2, life infinite
link MTU 1500 (true link MTU 65515)
current hop limit 255
reachable time 42500ms (base 30000ms)
retransmission interval 1000ms
DAD transmits 0
default site prefix length 48
对比前后的接口信息,我们可以看到主机获取了2001::/64的前缀,自动生成全球单播地址2001::5efe:1.1.1.2,同时还有一行信息“uses Router Discovery”表明主机启用了路由器发现。
# 查看主机上的IPv6路由信息。
C:\>ipv6 rt
2001::/64 -> 2 pref 1if+8=9 life 29d23h59m43s (autoconf)
::/0 -> 2/fe80::5efe:1.1.1.1 pref 1if+256=257 life 29m43s (autoconf)
(3) 配置IPv6主机
# 配置一条到边界路由器隧道的路由。
C:\>netsh interface ipv6 set route 2001::/64 5 3001::1
# 在ISATAP主机上Ping IPv6主机的地址,可以Ping通,表明ISATAP隧道已经成功建立,ISATAP主机可访问IPv6网络中的主机。
C:\>ping 3001::2
Pinging 3001::2 with 32 bytes of data:
Reply from 3001::2: time=1ms
Reply from 3001::2: time=1ms
Reply from 3001::2: time=1ms
Reply from 3001::2: time=1ms
Ping statistics for 3001::2:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 1ms, Maximum = 1ms, Average = 1ms
· 6RD隧道不需要配置隧道的目的端地址,因为隧道的目的端地址可以通过6RD地址中嵌入的IPv4地址自动获得。
· 对于自动隧道,隧道模式相同的Tunnel接口建议不要配置完全相同的源端地址。
· 如果封装前IPv6报文的目的IPv6地址与Tunnel接口的IPv6地址不在同一个网段,则必须配置通过Tunnel接口到达目的IPv6地址的转发路由,以便需要进行封装的报文能正常转发。
· 转发路由不支持动态路由。用户只能配置静态路由,指定到达目的IPv6地址的路由出接口为本端Tunnel接口或下一跳为对端Tunnel接口地址。配置的详细情况请参见“三层技术-IP路由配置指导”中的“IPv6静态路由”。
· 在隧道的两端都要进行转发路由的配置。
(1) 进入系统视图。
system-view
(2) 进入模式为6RD隧道的Tunnel接口视图。
interface tunnel number mode ipv6-ipv4 6rd
(3) 设置Tunnel接口的IPv6地址。
详细配置方法,请参见“三层技术-IP业务配置指导”中的“IPv6基础”。
(4) 设置隧道的源端地址或源接口。
source { ipv4-address | interface-type interface-number }
缺省情况下,未设置隧道的源端地址和源接口。
如果设置的是隧道的源端地址,则该地址将作为封装后隧道报文的源IP地址;如果设置的是隧道的源接口,则该接口的主IP地址将作为封装后隧道报文的源IP地址。
(5) 配置6RD隧道的6RD前缀。
tunnel 6rd prefix ipv6-prefix/prefix-length
缺省情况下,未配置6RD隧道的6RD前缀。
(6) (可选)配置6RD隧道的IPv4前缀长度和后缀长度。
tunnel 6rd ipv4 { prefix-length length | suffix-length length } *
缺省情况下,整个32位的隧道源接口的IPv4地址都用于构造6RD授权前缀。
(7) (可选)设置6RD隧道的BR地址。
tunnel 6rd br ipv4-address
缺省情况下,未设置6RD隧道的BR地址。
(8) (可选)设置封装后隧道报文的DF(Don’t Fragment,不分片)标志。
tunnel dfbit enable
缺省情况下,未设置隧道报文的不分片标志,即转发隧道报文时允许分片。
在任意视图下执行display命令可以显示隧道配置后的运行情况,通过查看显示信息验证配置的效果。
表2-1 6RD隧道显示和维护
操作 |
命令 |
显示6RD隧道接口的信息 |
display 6rd [ interface tunnel number ] |
显示指定6RD授权前缀对应的隧道目的端地址 |
display 6rd destination prefix ipv6-prefix interface tunnel number |
显示指定隧道目的端地址对应的6RD授权前缀 |
display 6rd prefix destination ipv4-address interface tunnel number |
如图2-11所示,两个6RD网络通过Router A和Router B与IPv4网络相连。在Router A和Router B之间建立6RD隧道,实现6RD网络中的主机Host A和Host B之间的互通。
图2-11 6RD隧道组网图
为了实现6RD网络之间的互通,除了配置6RD隧道外,还需要为6RD网络内的主机及Router A和Router B配置6RD地址。
· 配置6RD网络的6RD前缀为2001:B000::/32,IPv4前缀长度为16,IPv4后缀长度为8。
· Router A上接口GigabitEthernet2/0/2的IPv4地址为10.1.1.1/16,IPv4前缀为10.1.0.0/16,IPv4后缀为0.0.0.1/8,将该IPv4地址转换成6RD地址后的前缀为2001:B000:100::/40,Host A的地址必须使用该前缀。
· Router B上接口GigabitEthernet2/0/2的IPv4地址为10.1.2.1/16,IPv4前缀为10.1.0.0/16,IPv4后缀为0.0.0.1/8,将该IPv4地址转换成6RD地址后的前缀为2001:B000:200::/40,Host B的地址必须使用该前缀。
在开始下面的配置之前,请确保Router A和Router B之间IPv4报文路由可达。
(1) 配置Router A
# 配置接口GigabitEthernet2/0/2的地址。
<RouterA> system-view
[RouterA] interface gigabitethernet 2/0/2
[RouterA-GigabitEthernet2/0/2] ip address 10.1.1.1 16
[RouterA-GigabitEthernet2/0/2] quit
# 配置接口GigabitEthernet2/0/1的地址为6RD地址2001:B000:0100::1/40。
[RouterA] interface gigabitethernet 2/0/1
[RouterA-GigabitEthernet2/0/1] ipv6 address 2001:b000:0100::1/40
[RouterA-GigabitEthernet2/0/1] quit
# 创建模式为6RD隧道的接口Tunnel0。
[RouterA] interface tunnel 0 mode ipv6-ipv4 6rd
# 配置Tunnel0接口的IPv6地址。
[RouterA-Tunnel0] ipv6 address 3001::1/64
# 配置Tunnel0接口的源接口为GigabitEthernet2/0/2。
[RouterA-Tunnel0] source gigabitethernet 2/0/2
# 配置Tunnel0接口的6RD前缀为2001:B000::/32。
[RouterA-Tunnel0] tunnel 6rd prefix 2001:b000::/32
# 配置Tunnel0接口的IPv4前缀长度为16,后缀长度为8。
[RouterA-Tunnel0] tunnel 6rd ipv4 prefix-len 16 suffix-len 8
[RouterA-Tunnel0] quit
# 配置到目的地址2001:B000::/32,下一跳为Tunnel接口的静态路由。
[RouterA] ipv6 route-static 2001:b000:: 32 tunnel 0
(2) 配置Router B
# 配置接口GigabitEthernet2/0/2的地址。
<RouterB> system-view
[RouterB] interface gigabitethernet 2/0/2
[RouterB-GigabitEthernet2/0/2] ip address 10.1.2.1 16
[RouterB-GigabitEthernet2/0/2] quit
# 配置接口GigabitEthernet2/0/1的地址为6RD地址2001:B000:0200::1/40。
[RouterB] interface gigabitethernet 2/0/1
[RouterB-GigabitEthernet2/0/1] ipv6 address 2001:b000:0200::1/40
[RouterB-GigabitEthernet2/0/1] quit
# 创建模式为6RD隧道的接口Tunnel0。
[RouterB] interface tunnel 0 mode ipv6-ipv4 6rd
# 配置Tunnel0接口的IPv6地址。
[RouterB-Tunnel0] ipv6 address 3002::1/64
# 配置Tunnel0接口的源接口为GigabitEthernet2/0/2。
[RouterB-Tunnel0] source gigabitethernet 2/0/2
# 配置Tunnel0接口的6RD前缀为2001:B000::/32。
[RouterB-Tunnel0] tunnel 6rd prefix 2001:b000::/32
# 配置Tunnel0接口的IPv4前缀长度为16,后缀长度为8。
[RouterB-Tunnel0] tunnel 6rd ipv4 prefix-len 16 suffix-len 8
[RouterB-Tunnel0] quit
# 配置到目的地址2001:B000::/32,下一跳为Tunnel接口的静态路由。
[RouterB] ipv6 route-static 2001:b000:: 32 tunnel 0
完成以上配置之后,Host A与Host B可以互相Ping通。
D:\>ping6 -s 2001:b000:0100::2 2001:b000:0200::2
Pinging 2001:B000:0200::2
from 2001:B000:0100::2 with 32 bytes of data:
Reply from 2001:B000:0200::2: bytes=32 time=13ms
Reply from 2001:B000:0200::2: bytes=32 time=1ms
Reply from 2001:B000:0200::2: bytes=32 time=1ms
Reply from 2001:B000:0200::2: bytes=32 time<1ms
Ping statistics for 2001:B000:0200::2:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 13ms, Average = 3ms
如图2-12所示,Router A为6RD CE,其IPv6侧的网络使用6RD地址。Router B作为6RD BR,它和一个非6RD网络的IPv6网络(2222::/16)相连。要求在Router A和Router B之间配置6RD隧道,使得6RD网络中的主机与非6RD网络中的主机互通。
图2-12 6RD中继组网图
为了实现6RD网络中的主机与非6RD网络中的主机互通,除了配置6RD隧道外,还需要完成如下配置:
· 配置6RD网络的6RD前缀为2001:B000::/32,IPv4前缀长度为16,IPv4后缀长度为8。
· Router A上接口GigabitEthernet2/0/2的IPv4地址为10.1.1.1/16,IPv4前缀为10.1.0.0/16,IPv4后缀为0.0.0.1/8,将该IPv4地址转换成6RD地址后的6RD授权前缀为2001:B000:100::/40,Host A的地址必须使用该前缀。
· Router B的配置与Router A的配置相同,但为实现6RD网络与非6RD网络的互通,需要在Router A上配置到非6RD网络的路由,下一跳指向Router B的6RD地址。Router B上接口GigabitEthernet2/0/2的IPv4地址为10.1.4.1/16,转换成6RD地址后的6RD授权前缀为2001:B000:0400::/40,Router A上配置的到IPv6网络的路由下一跳可以是符合该前缀的任意一个地址。
在开始下面的配置之前,请确保Router A和Router B之间IPv4报文路由可达。
(1) 配置Router A
# 配置接口GigabitEthernet2/0/2的地址。
<RouterA> system-view
[RouterA] interface gigabitethernet 2/0/2
[RouterA-GigabitEthernet2/0/2] ip address 10.1.1.1 16
[RouterA-GigabitEthernet2/0/2] quit
# 配置接口GigabitEthernet2/0/1的地址为6RD地址2001:B000:0100::1/40。
[RouterA] interface gigabitethernet 2/0/1
[RouterA-GigabitEthernet2/0/1] ipv6 address 2001:b000:0100::1/40
[RouterA-GigabitEthernet2/0/1] quit
# 创建模式为6RD隧道的接口Tunnel0。
[RouterA] interface tunnel 0 mode ipv6-ipv4 6rd
# 配置Tunnel0接口的IPv6地址。
[RouterA-Tunnel0] ipv6 address 3001::1/64
# 配置Tunnel0接口的源接口为GigabitEthernet2/0/2。
[RouterA-Tunnel0] source gigabitethernet 2/0/2
# 配置Tunnel0接口的6RD前缀为2001:B000::/32。
[RouterA-Tunnel0] tunnel 6rd prefix 2001:b000::/32
# 配置Tunnel0接口的IPv4前缀长度为16,后缀长度为8。
[RouterA-Tunnel0] tunnel 6rd ipv4 prefix-len 16 suffix-len 8
# 配置Tunnel0接口的BR地址为10.1.4.1。
[RouterA-Tunnel0] tunnel 6rd br 10.1.4.1
[RouterA-Tunnel0] quit
# 配置到非6RD网络的缺省路由,指定路由的下一跳地址为Router B的6RD地址。
[RouterA] ipv6 route-static :: 0 2001:b000:0400::1
# 配置到目的地址2001:B000::/32的下一跳为Tunnel接口的静态路由。
[RouterA] ipv6 route-static 2001:b000:: 32 tunnel 0
(2) 配置Router B
# 配置接口GigabitEthernet2/0/2的地址。
<RouterB> system-view
[RouterB] interface gigabitethernet 2/0/2
[RouterB-GigabitEthernet2/0/2] ip address 10.1.4.1 16
[RouterB-GigabitEthernet2/0/2] quit
# 配置接口GigabitEthernet2/0/1的地址为2222::1/64。
[RouterB] interface gigabitethernet 2/0/1
[RouterB-GigabitEthernet2/0/1] ipv6 address 2222::1/64
[RouterB-GigabitEthernet2/0/1] quit
# 创建模式为6RD隧道的接口Tunnel0。
[RouterB] interface tunnel 0 mode ipv6-ipv4 6rd
# 配置Tunnel0接口的IPv6地址。
[RouterB-Tunnel0] ipv6 address 3002::1/64
# 配置Tunnel0接口的源接口为GigabitEthernet2/0/2。
[RouterB-Tunnel0] source gigabitethernet 2/0/2
# 配置Tunnel0接口的6RD前缀为2001:B000::/32。
[RouterB-Tunnel0] tunnel 6rd prefix 2001:b000::/32
# 配置Tunnel0接口的IPv4前缀长度为16,后缀长度为8。
[RouterB-Tunnel0] tunnel 6rd ipv4 prefix-len 16 suffix-len 8
[RouterB-Tunnel0] quit
# 配置到目的地址2001:B000::/32的下一跳为Tunnel接口的静态路由。
[RouterB] ipv6 route-static 2001:b000:: 32 tunnel 0
完成以上配置之后,Host A与Host B可以互相Ping通。
D:\>ping6 -s 2001:b000:0100::2 2222::2
Pinging 2001::2
from 2001:B000:0100::2 with 32 bytes of data:
Reply from 2222::2: bytes=32 time=13ms
Reply from 2222::2: bytes=32 time=1ms
Reply from 2222::2: bytes=32 time=1ms
Reply from 2222::2: bytes=32 time<1ms
Ping statistics for 2222::2:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 13ms, Average = 3ms
IPv4兼容IPv6自动隧道不支持配置丢弃含有IPv4兼容IPv6地址的IPv6报文。
(1) 进入系统视图。
system-view
(2) 配置丢弃含有IPv4兼容IPv6地址的IPv6报文。
tunnel discard ipv4-compatible-packet
缺省情况下,不会丢弃含有IPv4兼容IPv6地址的IPv6报文。
(1) 进入系统视图。
system-view
(2) 开启隧道报文的分片检查功能。
tunnel ipv6-fragmentation-check enable
缺省情况下,隧道报文的分片检查功能处于关闭状态。
IPv4 over IPv4隧道(RFC 1853)是对IPv4报文进行封装,使得一个IPv4网络的报文能够在另一个IPv4网络中传输。例如,运行IPv4协议的两个子网位于不同的区域,并且这两个子网都使用私网地址时,可以通过建立IPv4 over IPv4隧道,实现两个子网的互联。
图3-1 IPv4 over IPv4隧道原理图
报文在隧道中传输经过封装与解封装两个过程,以图3-1为例说明这两个过程:
· 封装过程
Device A连接IPv4主机所在子网的接口收到IPv4报文后,首先交由IPv4协议栈处理。IPv4协议栈根据IPv4报文头中的目的地址判断该报文需要通过隧道进行转发,则将此报文发给Tunnel接口。
Tunnel接口收到此报文后,在IPv4报文外再封装一个IPv4报文头,封装的报文头中源IPv4地址为隧道的源端地址,目的IPv4地址为隧道的目的端地址。封装完成后将报文重新交给IPv4协议栈处理,IPv4协议栈根据添加的IPv4报文头查找路由表,转发报文。
· 解封装过程
解封装过程和封装过程相反。Device B从接口收到IPv4报文后,将其送到IPv4协议栈处理。IPv4协议栈检查接收到的IPv4报文头中的协议号。如果协议号为4(表示封装的报文为IPv4报文),则将此IPv4报文发送到隧道模块进行解封装处理。解封装之后的IPv4报文将重新被送到IPv4协议栈进行二次路由处理。
· 在本端设备上为隧道指定的目的端地址,应该与在对端设备上为隧道指定的源端地址相同;在本端设备上为隧道指定的源端地址,应该与在对端设备上为隧道指定的目的端地址相同。
· 在同一台设备上,隧道模式相同的Tunnel接口建议不要同时配置完全相同的源端地址和目的端地址。
· 本端隧道接口的IPv4地址与隧道的目的端地址不能在同一个网段内。
· 如果封装前IPv4报文的目的IPv4地址与Tunnel接口的IPv4地址不在同一个网段,则必须配置通过Tunnel接口到达目的IPv4地址的转发路由,以便需要进行封装的报文能正常转发。用户可以配置静态路由,指定到达目的IPv4地址的路由出接口为本端Tunnel接口或下一跳为对端Tunnel接口地址。用户也可以配置动态路由,在Tunnel接口使能动态路由协议。在隧道的两端都要进行转发路由的配置,配置的详细情况请参见“三层技术-IP路由配置指导”中的“静态路由”或其他路由协议配置。
· 配置经过隧道接口的路由时,路由的目的地址不能与该隧道的目的端地址在同一个网段内。
(1) 进入系统视图。
system-view
(2) 进入模式为IPv4 over IPv4隧道的Tunnel接口视图。
interface tunnel number [ mode ipv4-ipv4 ]
(3) 设置Tunnel接口的IPv4地址。
ip address ip-address { mask | mask-length } [ sub ]
(4) 设置隧道的源端地址或源接口。
source { ipv4-address | interface-type interface-number }
缺省情况下,未设置隧道的源端地址和源接口。
如果设置的是隧道的源端地址,则该地址将作为封装后隧道报文的源IP地址;如果设置的是隧道的源接口,则该接口的主IP地址将作为封装后隧道报文的源IP地址。
(5) 设置隧道的目的端地址。
destination ipv4-address
缺省情况下,未设置隧道的目的端地址。
隧道的目的端地址是对端接收报文的接口的地址,该地址将作为封装后隧道报文的目的地址。
(6) (可选)设置封装后隧道报文的DF(Don’t Fragment,不分片)标志。
tunnel dfbit enable
缺省情况下,未设置隧道报文的不分片标志,即转发隧道报文时允许分片。
运行IP协议的两个子网Group 1和Group 2位于不同的区域,这两个子网都使用私网地址。通过在路由器Router A和路由器Router B之间建立IPv4 over IPv4隧道,实现两个子网的互联。
图3-2 IPv4 over IPv4隧道组网图
在开始下面的配置之前,请确保Router A和Router B之间IPv4报文路由可达。
(1) 配置Router A
# 配置接口GigabitEthernet2/0/1的地址。
<RouterA> system-view
[RouterA] interface gigabitethernet 2/0/1
[RouterA-GigabitEthernet2/0/1] ip address 10.1.1.1 255.255.255.0
[RouterA-GigabitEthernet2/0/1] quit
# 配置接口Serial2/1/0(隧道的实际物理接口)的地址。
[RouterA] interface serial 2/1/0
[RouterA-Serial2/1/0] ip address 2.1.1.1 255.255.255.0
[RouterA-Serial2/1/0] quit
# 创建模式为IPv4 over IPv4隧道的接口Tunnel1。
[RouterA] interface tunnel 1 mode ipv4-ipv4
# 配置Tunnel1接口的IP地址。
[RouterA-Tunnel1] ip address 10.1.2.1 255.255.255.0
# 配置Tunnel1接口的源端地址(Serial2/1/0的IP地址)。
[RouterA-Tunnel1] source 2.1.1.1
# 配置Tunnel1接口的目的端地址(RouterB的Serial2/1/1的IP地址)。
[RouterA-Tunnel1] destination 3.1.1.1
[RouterA-Tunnel1] quit
# 配置从Router A经过Tunnel1接口到Group 2的静态路由。
[RouterA] ip route-static 10.1.3.0 255.255.255.0 tunnel 1
(2) 配置Router B
# 配置接口GigabitEthernet2/0/1的地址。
<RouterB> system-view
[RouterB] interface gigabitethernet 2/0/1
[RouterB-GigabitEthernet2/0/1] ip address 10.1.3.1 255.255.255.0
[RouterB-GigabitEthernet2/0/1] quit
# 配置接口Serial2/1/1(隧道的实际物理接口)的地址。
[RouterB] interface serial 2/1/1
[RouterB-Serial2/1/1] ip address 3.1.1.1 255.255.255.0
[RouterB-Serial2/1/1] quit
# 创建模式为IPv4 over IPv4隧道的接口Tunnel2。
[RouterB] interface tunnel 2 mode ipv4-ipv4
# 配置Tunnel2接口的IP地址。
[RouterB-Tunnel2] ip address 10.1.2.2 255.255.255.0
# 配置Tunnel2接口的源端地址(Serial2/1/1的IP地址)。
[RouterB-Tunnel2] source 3.1.1.1
# 配置Tunnel2接口的目的端地址(Router A的Serial2/1/0的IP地址)。
[RouterB-Tunnel2] destination 2.1.1.1
[RouterB-Tunnel2] quit
# 配置从Router B经过Tunnel2接口到Group 1的静态路由。
[RouterB] ip route-static 10.1.1.0 255.255.255.0 tunnel 2
# 完成上述配置后,在Router A和Router B上分别执行display interface tunnel命令,可以看出Tunnel接口处于up状态。(具体显示信息略)
# 从Router A和Router B上可以Ping通对端的GigabitEthernet2/0/1接口的IPv4地址。下面仅以Router A为例。
[RouterA] ping -a 10.1.1.1 10.1.3.1
Ping 10.1.3.1 (10.1.3.1) from 10.1.1.1: 56 data bytes, press CTRL_C to break
56 bytes from 10.1.3.1: icmp_seq=0 ttl=255 time=2.000 ms
56 bytes from 10.1.3.1: icmp_seq=1 ttl=255 time=1.000 ms
56 bytes from 10.1.3.1: icmp_seq=2 ttl=255 time=0.000 ms
56 bytes from 10.1.3.1: icmp_seq=3 ttl=255 time=1.000 ms
56 bytes from 10.1.3.1: icmp_seq=4 ttl=255 time=1.000 ms
--- Ping statistics for 10.1.3.1 ---
5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss
round-trip min/avg/max/std-dev = 0.000/1.000/2.000/0.632 ms
随着IPv6网络的广泛部署,IPv6网络将逐渐取代IPv4网络,占据主导地位。尚未被IPv6网络取代的IPv4网络将形成孤岛,需要通过IPv6网络互通。IPv4 over IPv6隧道在IPv4报文上封装IPv6的报文头,通过隧道使IPv4报文穿越IPv6网络,从而实现通过IPv6网络连接隔离的IPv4网络孤岛。
图4-1 IPv4 over IPv6隧道原理图
IPv4报文在隧道中传输经过封装与解封装两个过程,以图4-1为例说明这两个过程:
· 封装过程
Device A连接IPv4网络的接口收到IPv4报文后,首先交由IPv4协议栈处理。IPv4协议栈根据IPv4报文头中的目的地址判断该报文需要通过隧道进行转发,则将此报文发给Tunnel接口。
Tunnel接口收到此报文后添加IPv6报文头,IPv6报文头中源IPv6地址为隧道的源端地址,目的IPv6地址为隧道的目的端地址。封装完成后将报文交给IPv6模块处理。IPv6协议模块根据IPv6报文头的目的地址重新确定如何转发此报文。
· 解封装过程
解封装过程和封装过程相反。从连接IPv6网络的接口接收到IPv6报文后,将其送到IPv6协议模块。IPv6协议模块检查IPv6报文封装的协议类型。若封装的协议为IPv4,则报文进入隧道处理模块进行解封装处理。解封装之后的IPv4报文被送往IPv4协议模块进行二次路由处理。
IPv4 over IPv6隧道分为IPv4 over IPv6手动隧道和DS-Lite隧道两种。
IPv4 over IPv6手动隧道需要手动配置隧道的源和目的IPv6地址,以便根据配置的地址在IPv4报文上封装IPv6报文头,使报文能通过隧道穿越IPv6网络。IPv4 over IPv6手动隧道是一种点到点的虚拟链路。
DS-Lite(Dual Stack Lite,轻量级双协议栈)技术综合了IPv4 over IPv6隧道技术和NAT(Network Address Translation,网络地址转换)技术,利用隧道技术实现通过IPv6网络连接隔离的IPv4网络,利用NAT技术实现不同的用户网络共享相同的IPv4地址空间,减缓IPv4地址的耗尽速度。
图4-2 DS-Lite组网图
如图4-2所示,DS-Lite网络主要由几个部分组成:
· DS-Lite隧道
DS-Lite隧道是B4设备和AFTR之间的IPv4 over IPv6隧道,用来实现IPv4报文跨越IPv6网络传输。
· B4(Basic Bridging BroadBand,基本桥接宽带)设备
B4设备是位于用户网络侧、用来连接ISP(Internet Service Provider,互联网服务提供商)网络的设备,通常为用户网络的网关。B4设备作为DS-Lite隧道的一个端点,负责将用户网络的IPv4报文封装成IPv6报文发送给隧道的另一个端点,同时将从隧道接收到的IPv6报文解封装成IPv4报文发送给用户网络。
某些用户网络的主机也可以作为B4设备,直接连接到ISP网络,这样的主机称为DS-Lite主机。
· AFTR(Address Family Transition Router,地址族转换路由器)
AFTR是ISP网络中的设备。AFTR同时作为DS-Lite隧道端点和NAT网关设备。
AFTR从DS-Lite隧道接收到B4设备发送的IPv6报文后,为该B4设备分配Tunnel ID,并记录B4设备的IPv6地址(报文中的源IPv6地址)与Tunnel ID的对应关系。AFTR对IPv6报文进行解封装,将解封装后的用户网络报文的源IPv4地址(私网地址)转换为公网地址,并将转换后的报文发送给目的IPv4主机。AFTR进行NAT转换时,同时记录NAT映射关系和Tunnel ID,以便实现不同B4设备连接的用户网络地址可以重叠。
AFTR接收到目的IPv4主机返回的应答报文后,将目的IPv4地址(公网地址)转换为对应的私网地址,并根据记录的Tunnel ID获取对应的B4设备的IPv6地址,作为封装后IPv6报文的目的地址。AFTR将NAT转换后的报文封装成IPv6报文通过隧道发送给B4设备。
DS-Lite只支持用户网络内的IPv4主机主动访问公网上的IPv4主机;公网上的IPv4主机不能主动访问用户网络内的IPv4主机。
图4-3 DS-Lite报文转发流程
采用独立的网关设备作为B4设备时,报文转发过程中源和目的IP地址、源和目的端口号的变化如图4-3所示。报文转发过程的关键步骤为:
· B4设备和AFTR对报文进行封装和解封装。
· AFTR对IPv4报文进行NAT转换。
图4-3所示为PAT模式的动态地址转换。使用静态地址转换时不同B4设备连接的用户网络地址不能重叠,因此DS-Lite隧道一般使用动态地址转换。有关NAT的详细介绍,请参见“三层技术-IP业务配置指导”中的“NAT”。
· 在本端设备上为隧道指定的目的端地址,应该与在对端设备上为隧道指定的源端地址相同;在本端设备上为隧道指定的源端地址,应该与在对端设备上为隧道指定的目的端地址相同。
· 在同一台设备上,隧道模式相同的Tunnel接口建议不要同时配置完全相同的源端地址和目的端地址。
· 如果封装前IPv4报文的目的IPv4地址与Tunnel接口的IPv4地址不在同一个网段,则必须配置通过Tunnel接口到达目的IPv4地址的转发路由,以便需要进行封装的报文能正常转发。用户可以配置静态路由,指定到达目的IPv4地址的路由出接口为本端Tunnel接口或下一跳为对端Tunnel接口地址。用户也可以配置动态路由,在Tunnel接口使能动态路由协议。在隧道的两端都要进行转发路由的配置,配置的详细情况请参见“三层技术-IP路由配置指导”中的“静态路由”或其他路由协议配置。
(1) 进入系统视图。
system-view
(2) 进入模式为IPv4 over IPv6隧道的Tunnel接口视图。
interface tunnel number [ mode ipv4-ipv6 ]
(3) 设置Tunnel接口的IPv4地址。
ip address ip-address { mask | mask-length } [ sub ]
(4) 设置隧道的源端地址或源接口。
source { ipv6-address | interface-type interface-number }
缺省情况下,未设置隧道的源端地址和源接口。
如果设置的是隧道的源端地址,则该地址将作为封装后隧道报文的源IPv6地址;如果设置的是隧道的源接口,则该接口下的最小地址将作为封装后隧道报文的源IPv6地址。
(5) 设置隧道的目的端地址。
destination ipv6-address
缺省情况下,未设置隧道的目的端地址。
隧道的目的端地址是对端接收报文的接口的地址,该地址将作为封装后隧道报文的目的IPv6地址。
两个IPv4网络分别通过Router A和Router B与IPv6网络连接。通过在Router A和Router B之间建立IPv4 over IPv6手动隧道,实现两个IPv4网络穿越IPv6网络互联。
图4-4 IPv4 over IPv6手动隧道组网图
在开始下面的配置之前,请确保Router A和Router B之间IPv6报文路由可达。
(1) 配置Router A
# 配置接口GigabitEthernet2/0/1的地址。
<RouterA> system-view
[RouterA] interface gigabitethernet 2/0/1
[RouterA-GigabitEthernet2/0/1] ip address 30.1.1.1 255.255.255.0
[RouterA-GigabitEthernet2/0/1] quit
# 配置接口Serial2/1/0(隧道的实际物理接口)的地址。
[RouterA] interface serial 2/1/0
[RouterA-Serial2/1/0] ipv6 address 2001::1:1 64
[RouterA-Serial2/1/0] quit
# 创建模式为IPv4 over IPv6隧道的接口Tunnel1。
[RouterA] interface tunnel 1 mode ipv4-ipv6
# 配置Tunnel1接口的IP地址。
[RouterA-Tunnel1] ip address 30.1.2.1 255.255.255.0
# 配置Tunnel1接口的源端地址(Serial2/1/0的IP地址)。
[RouterA-Tunnel1] source 2001::1:1
# 配置Tunnel1接口的目的端地址(Router B的Serial2/1/1的IP地址)。
[RouterA-Tunnel1] destination 2002::2:1
[RouterA-Tunnel1] quit
# 配置从Router A经过Tunnel1接口到IPv4 network 2的静态路由。
[RouterA] ip route-static 30.1.3.0 255.255.255.0 tunnel 1
(2) 配置Router B
# 配置接口GigabitEthernet2/0/1的地址。
<RouterB> system-view
[RouterB] interface gigabitethernet 2/0/1
[RouterB-GigabitEthernet2/0/1] ip address 30.1.3.1 255.255.255.0
[RouterB-GigabitEthernet2/0/1] quit
# 配置接口Serial2/1/1(隧道的实际物理接口)的地址。
[RouterB] interface serial 2/1/1
[RouterB-Serial2/1/1] ipv6 address 2002::2:1 64
[RouterB-Serial2/1/1] quit
# 创建模式为IPv4 over IPv6隧道的接口Tunnel2。
[RouterB] interface tunnel 2 mode ipv4-ipv6
# 配置Tunnel2接口的IP地址。
[RouterB-Tunnel2] ip address 30.1.2.2 255.255.255.0
# 配置Tunnel2接口的源端地址(Serial2/1/1的IP地址)。
[RouterB-Tunnel2] source 2002::2:1
# 配置Tunnel2接口的目的端地址(Router A的Serial2/1/0的IP地址)。
[RouterB-Tunnel2] destination 2001::1:1
[RouterB-Tunnel2] quit
# 配置从Router B经过Tunnel2接口到IPv4 network 1的静态路由。
[RouterB] ip route-static 30.1.1.0 255.255.255.0 tunnel 2
# 完成上述配置后,在Router A和Router B上分别执行display interface tunnel命令,可以看出Tunnel接口处于up状态。(具体显示信息略)
# 从Router A和Router B可以Ping通对端的GigabitEthernet2/0/1接口的IPv4地址。下面仅以Router A为例。
[RouterA] ping -a 30.1.1.1 30.1.3.1
Ping 30.1.3.1 (30.1.3.1) from 30.1.1.1: 56 data bytes, press CTRL_C to break
56 bytes from 30.1.3.1: icmp_seq=0 ttl=255 time=3.000 ms
56 bytes from 30.1.3.1: icmp_seq=1 ttl=255 time=1.000 ms
56 bytes from 30.1.3.1: icmp_seq=2 ttl=255 time=0.000 ms
56 bytes from 30.1.3.1: icmp_seq=3 ttl=255 time=1.000 ms
56 bytes from 30.1.3.1: icmp_seq=4 ttl=255 time=1.000 ms
--- Ping statistics for 30.1.3.1 ---
5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss
round-trip min/avg/max/std-dev = 0.000/1.200/3.000/0.980 ms
· 如果需要B4设备与AFTR端自动建立DS-Lite隧道,在B4设备上需正确配置DHCPv6客户端、静态域名解析或IPv6 DNS客户端(使用动态域名解析),以及destination dhcp-alloc命令。除此之外,还需在任意设备上完成DHCPv6服务器、IPv6 DNS服务器(在使用动态域名解析的情况下)的配置。关于DHCPv6服务器及客户端配置的详细介绍,请参见“三层技术-IP业务配置指导”中的“DHCPv6”;关于IPv6 DNS配置的详细介绍,请参见“三层技术-IP业务配置指导”中的“域名解析”。
· 在同一台设备上,隧道模式相同的Tunnel接口建议不要同时配置完全相同的源端地址。
· 在B4设备上为隧道指定的目的端地址,应该与在AFTR设备上为隧道指定的源端地址相同。
· 在AFTR端不能配置DS-Lite隧道的目的端地址。AFTR从隧道上接收到报文后,记录该报文的源IPv6地址(即B4设备的地址),将此地址作为隧道目的端的IPv6地址。
· B4设备上的一个Tunnel接口只能和一个AFTR建立隧道连接;AFTR上的一个Tunnel接口可以和多个B4设备建立隧道连接。
· 在B4端,如果封装前IPv4报文的目的IPv4地址与Tunnel接口的IPv4地址不在同一个网段,则必须配置通过Tunnel接口到达目的IPv4地址的转发路由,以便需要进行封装的报文能正常转发。用户可以配置静态路由,指定到达目的IPv4地址的路由出接口为本端Tunnel接口或下一跳为对端Tunnel接口地址。用户也可以配置动态路由,在Tunnel接口使能动态路由协议。配置的详细情况请参见“三层技术-IP路由配置指导”中的“静态路由”或其他路由协议配置。
· 在AFTR端,不需要配置通过Tunnel接口到达目的IPv4地址的转发路由。
· AFTR连接IPv4公网的接口上需要配置NAT。
(1) 进入系统视图。
system-view
(2) 进入模式为IPv4 over IPv6隧道的Tunnel接口视图。
interface tunnel number [ mode ipv4-ipv6 ]
(3) 设置Tunnel接口的IPv4地址。
ip address ip-address { mask | mask-length } [ sub ]
(4) 设置隧道的源端地址或源接口。
source { ipv6-address | interface-type interface-number }
缺省情况下,未设置隧道的源端地址和源接口。
如果设置的是隧道的源端地址,则该地址将作为封装后隧道报文的源IPv6地址;如果设置的是隧道的源接口,则该接口下的最小地址将作为封装后隧道报文的源IPv6地址。
(5) 设置隧道的目的端地址。
destination { ipv6-address | dhcp-alloc interface-type interface-number }
缺省情况下,未设置隧道的目的端地址。
隧道的目的端地址是对端接收报文的接口的地址,该地址将作为封装后隧道报文的目的IPv6地址。
参数 |
说明 |
ipv6-address |
该地址需要指定为AFTR的源端地址,即采用AFTR的源端地址作为隧道目的端地址 |
dhcp-alloc interface-type interface-number |
指定接收DHCPv6报文的接口,通过动态获得AFTR端IPv6地址的方式自动建立DS-Lite隧道 |
(1) 进入系统视图。
system-view
(2) 进入模式为AFTR端DS-Lite隧道的Tunnel接口视图。
interface tunnel number [ mode ds-lite-aftr ]
(3) 设置Tunnel接口的IPv4地址。
ip address ip-address { mask | mask-length } [ sub ]
(4) 设置隧道的源端地址或源接口。
source { ipv6-address | interface-type interface-number }
缺省情况下,未设置隧道的源端地址和源接口。
如果设置的是隧道的源端地址,则该地址将作为封装后隧道报文的源IPv6地址;如果设置的是隧道的源接口,则该接口下的最小地址将作为封装后隧道报文的源IPv6地址。
(5) 退回系统视图。
quit
(6) 进入AFTR连接IPv4公网的接口视图。
interface interface-type interface-number
(7) 开启接口的DS-Lite隧道功能。
ds-lite enable
缺省情况下,接口的DS-Lite隧道功能处于关闭状态。
只有开启该功能后,AFTR从IPv4公网接口接收到的IPv4报文才能够通过DS-Lite隧道正确地转发到B4设备。
(8) 在AFTR端显示已连接的B4设备的信息。
display ds-lite b4 information
运行IPv4协议的私网Private IPv4 network和公网IPv4 network通过IPv6网络相连。通过在B4设备(Router A)和AFTR(Router B)之间建立DS-Lite隧道,并在AFTR连接IPv4 network接口上配置NAT,实现IPv4私网主机穿越IPv6网络访问IPv4公网。
图4-5 DS-Lite隧道组网图
在开始下面的配置之前,请确保Router A和Router B之间IPv6报文路由可达。
(1) 配置B4设备Router A
# 配置接口GigabitEthernet2/0/1的地址。
<RouterA> system-view
[RouterA] interface gigabitethernet 2/0/1
[RouterA-GigabitEthernet2/0/1] ip address 10.0.0.2 255.255.255.0
[RouterA-GigabitEthernet2/0/1] quit
# 配置接口GigabitEthernet2/0/2(隧道的实际物理接口)的地址。
[RouterA] interface gigabitethernet 2/0/2
[RouterA-GigabitEthernet2/0/2] ipv6 address 1::1 64
[RouterA-GigabitEthernet2/0/2] quit
# 创建模式为IPv4 over IPv6隧道的接口Tunnel1。
[RouterA] interface tunnel 1 mode ipv4-ipv6
# 配置Tunnel1接口的IP地址。
[RouterA-Tunnel1] ip address 30.1.2.1 255.255.255.0
# 配置Tunnel1接口的源端地址(GigabitEthernet2/0/2的地址)。
[RouterA-Tunnel1] source 1::1
# 配置Tunnel1接口的目的端地址(Router B的GigabitEthernet2/0/2的地址)。
[RouterA-Tunnel1] destination 2::2
[RouterA-Tunnel1] quit
# 配置从Router A经过Tunnel1接口到公网IPv4 network的静态路由。
[RouterA] ip route-static 20.1.1.0 255.255.255.0 tunnel 1
(2) 配置AFTR端Router B
# 配置接口GigabitEthernet2/0/1的地址。
<RouterB> system-view
[RouterB] interface gigabitethernet 2/0/1
[RouterB-GigabitEthernet2/0/1] ip address 20.1.1.1 24
[RouterB-GigabitEthernet2/0/1] quit
# 配置接口GigabitEthernet2/0/2(隧道的实际物理接口)的地址。
[RouterB] interface gigabitethernet 2/0/2
[RouterB-GigabitEthernet2/0/2] ipv6 address 2::2 64
[RouterB-GigabitEthernet2/0/2] quit
# 创建模式为AFTR端DS-Lite隧道的接口Tunnel2。
[RouterB] interface tunnel 2 mode ds-lite-aftr
# 配置Tunnel2接口的IP地址。
[RouterB-Tunnel2] ip address 30.1.2.2 255.255.255.0
# 配置Tunnel2接口的源接口为GigabitEthernet2/0/2。
[RouterB-Tunnel2] source gigabitethernet 2/0/2
[RouterB-Tunnel2] quit
# 在接口GigabitEthernet2/0/1上开启DS-Lite隧道功能。
[RouterB] interface gigabitethernet 2/0/1
[RouterB-GigabitEthernet2/0/1] ds-lite enable
# 在接口GigabitEthernet2/0/1上配置NAT,使用接口GigabitEthernet2/0/1的IP地址作为转换后的IP地址。
[RouterB-GigabitEthernet2/0/1] nat outbound
[RouterB-GigabitEthernet2/0/1] quit
(3) 配置IPv4 host A
配置IPv4 host A的地址为10.0.0.1,并在该主机上配置到达20.1.1.0/24网段的路由,路由下一跳为10.0.0.2。(具体配置过程略)
(4) 配置IPv4 host B
配置IPv4 host B的地址为20.1.1.2。(具体配置过程略)
# 完成上述配置后,在Router A和Router B上分别执行display interface tunnel命令,可以看出Tunnel接口处于up状态。(具体显示信息略)
# 从IPv4 host A上可以ping通IPv4 host B。
C:\> ping 20.1.1.2
Pinging 20.1.1.2 with 32 bytes of data:
Reply from 20.1.1.2: bytes=32 time=51ms TTL=255
Reply from 20.1.1.2: bytes=32 time=44ms TTL=255
Reply from 20.1.1.2: bytes=32 time=1ms TTL=255
Reply from 20.1.1.2: bytes=32 time=1ms TTL=255
Ping statistics for 20.1.1.2:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 1ms, Maximum = 51ms, Average = 24ms
IPv6 over IPv6隧道(RFC 2473)是对IPv6报文进行封装,使这些被封装的报文能够在另一个IPv6网络中传输,封装后的报文即IPv6隧道报文。例如,如果运行IPv6协议的两个子网的网络地址不希望泄露到IPv6网络中,则可以通过建立IPv6 over IPv6隧道,实现在两个子网的网络地址不被泄露的情况下,使两个子网互通。
图5-1 IPv6 over IPv6隧道原理图
IPv6报文在隧道中传输经过封装与解封装两个过程,以图5-1为例说明这两个过程:
· 封装过程
Device A连接网络A的接口收到IPv6报文后,首先交由IPv6协议模块处理。IPv6协议模块根据报文的目的IPv6地址判断该报文需要通过隧道进行转发,则将此报文发给Tunnel接口。
Tunnel接口收到此报文后,为IPv6报文再封装一个IPv6报文头,封装的IPv6报文头中源IPv6地址为隧道的源端地址,目的IPv6地址为隧道的目的端地址。封装完成后将报文交给IPv6模块处理。IPv6协议模块根据添加的IPv6报文头的目的地址重新确定如何转发此报文。
· 解封装过程
解封装过程和封装过程相反。从IPv6网络接口接收的报文被送到IPv6协议模块。IPv6协议模块检查IPv6报文封装的协议类型。若封装的协议为IPv6,则报文进入隧道处理模块进行解封装处理;解封装之后的报文被送往相应的协议模块进行二次路由处理。
· 在本端设备上为隧道指定的目的端地址,应该与在对端设备上为隧道指定的源端地址相同;在本端设备上为隧道指定的源端地址,应该与在对端设备上为隧道指定的目的端地址相同。
· 在同一台设备上,隧道模式相同的Tunnel接口建议不要同时配置完全相同的源端地址和目的端地址。
· 本端隧道接口的IPv6地址与隧道的目的端地址不能在同一个网段内。
· 如果封装前IPv6报文的目的IPv6地址与Tunnel接口的IPv6地址不在同一个网段,则必须配置通过Tunnel接口到达目的IPv6地址的转发路由,以便需要进行封装的报文能正常转发。用户可以配置静态路由,指定到达目的IPv6地址的路由出接口为本端Tunnel接口或下一跳为对端Tunnel接口地址。用户也可以配置动态路由,在Tunnel接口使能动态路由协议。在隧道的两端都要进行转发路由的配置,配置的详细情况请参见“三层技术-IP路由配置指导”中的“IPv6静态路由”或其他路由协议配置。
· 配置经过隧道接口的路由时,路由的目的地址不能与该隧道的目的端地址在同一个网段内。
IPv6 over IPv6隧道配置任务如下:
(2) (可选)配置丢弃含有IPv4兼容IPv6地址的IPv6报文
(1) 进入系统视图。
system-view
(2) 进入模式为IPv6 over IPv6隧道的Tunnel接口视图。
interface tunnel number [ mode ipv6-ipv6 ]
(3) 设置Tunnel接口的IPv6地址。
详细配置方法,请参见“三层技术-IP业务配置指导”中的“IPv6基础”。
(4) 设置隧道的源端地址或源接口。
source { ipv6-address | interface-type interface-number }
缺省情况下,未设置隧道的源端地址和源接口。
如果设置的是隧道的源端地址,则该地址将作为封装后隧道报文的源IPv6地址;如果设置的是隧道的源接口,则该接口下的最小地址将作为封装后隧道报文的源IPv6地址。
(5) 设置隧道的目的端地址。
destination ipv6-address
缺省情况下,未设置隧道的目的端地址。
隧道的目的端地址是对端接收报文的接口的地址,该地址将作为封装后隧道报文的目的IPv6地址。
(6) (可选)设置隧道允许的最大嵌套封装次数。
encapsulation-limit number
缺省情况下,不限制隧道的最大嵌套封装次数。
(1) 进入系统视图。
system-view
(2) 配置丢弃含有IPv4兼容IPv6地址的IPv6报文。
tunnel discard ipv4-compatible-packet
缺省情况下,不会丢弃含有IPv4兼容IPv6地址的IPv6报文。
运行IPv6协议的两个子网Group 1和Group 2的网络地址不希望泄露到IPv6网络中。网络管理员通过在路由器Router A和路由器Router B之间建立IPv6 over IPv6隧道,实现在Group 1和Group 2的网络地址不被泄露的情况下,确保Group 1和Group 2互通。
图5-2 IPv6 over IPv6隧道组网图
在开始下面的配置之前,请确保Router A和Router B之间IPv6报文路由可达。
(1) 配置Router A
# 配置接口GigabitEthernet2/0/1的地址。
<RouterA> system-view
[RouterA] interface gigabitethernet 2/0/1
[RouterA-GigabitEthernet2/0/1] ipv6 address 2002:1::1 64
[RouterA-GigabitEthernet2/0/1] quit
# 配置接口Serial2/1/0(隧道的实际物理接口)的地址。
[RouterA] interface serial 2/1/0
[RouterA-Serial2/1/0] ipv6 address 2001::11:1 64
[RouterA-Serial2/1/0] quit
# 创建模式为IPv6 over IPv6隧道的接口Tunnel1。
[RouterA] interface tunnel 1 mode ipv6-ipv6
# 配置Tunnel1接口的IP地址。
[RouterA-Tunnel1] ipv6 address 3001::1:1 64
# 配置Tunnel1接口的源端地址(Serial2/1/0的IP地址)。
[RouterA-Tunnel1] source 2001::11:1
# 配置Tunnel1接口的目的端地址(Router B的Serial2/1/1的IP地址)。
[RouterA-Tunnel1] destination 2002::22:1
[RouterA-Tunnel1] quit
# 配置从Router A经过Tunnel1接口到Group 2的静态路由。
[RouterA] ipv6 route-static 2002:3:: 64 tunnel 1
(2) 配置Router B
# 配置接口GigabitEthernet2/0/1的地址。
<RouterB> system-view
[RouterB] interface gigabitethernet 2/0/1
[RouterB-GigabitEthernet2/0/1] ipv6 address 2002:3::1 64
[RouterB-GigabitEthernet2/0/1] quit
# 配置接口Serial2/1/1(隧道的实际物理接口)的地址。
[RouterB] interface serial 2/1/1
[RouterB-Serial2/1/1] ipv6 address 2002::22:1 64
[RouterB-Serial2/1/1] quit
# 创建模式为IPv6 over IPv6隧道的接口Tunnel2。
[RouterB] interface tunnel 2 mode ipv6-ipv6
# 配置Tunnel2接口的IP地址。
[RouterB-Tunnel2] ipv6 address 3001::1:2 64
# 配置Tunnel2接口的源端地址(Serial2/1/1的IP地址)。
[RouterB-Tunnel2] source 2002::22:1
# 配置Tunnel2接口的目的端地址(Router A的Serial2/1/0的IP地址)。
[RouterB-Tunnel2] destination 2001::11:1
[RouterB-Tunnel2] quit
# 配置从Router B经过Tunnel2接口到Group 1的静态路由。
[RouterB] ipv6 route-static 2002:1:: 64 tunnel 2
# 完成上述配置后,在Router A和Router B上分别执行display ipv6 interface命令,可以看出Tunnel接口处于up状态。(具体显示信息略)
# 从Router A和Router B上可以Ping通对端的GigabitEthernet2/0/1接口的IPv6地址。下面仅以Router A为例。
[RouterA] ping ipv6 -a 2002:1::1 2002:3::1
Ping6(56 data bytes) 2002:1::1 --> 2002:3::1, press CTRL_C to break
56 bytes from 2002:3::1, icmp_seq=0 hlim=64 time=9.000 ms
56 bytes from 2002:3::1, icmp_seq=1 hlim=64 time=1.000 ms
56 bytes from 2002:3::1, icmp_seq=2 hlim=64 time=0.000 ms
56 bytes from 2002:3::1, icmp_seq=3 hlim=64 time=0.000 ms
56 bytes from 2002:3::1, icmp_seq=4 hlim=64 time=0.000 ms
--- Ping6 statistics for 2002:3::1 ---
5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss
round-trip min/avg/max/std-dev = 0.000/2.000/9.000/3.521 ms
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!