HCIE-IPv6过渡技术

IPv6过渡技术

IPv6过渡技术简介

  • 当前世界上不同地区对部署IPv6的需求强烈程度不一,且当前IPv4网络仍然占主流地位,因此短时间内IPv6和IPv4将会共存,可以借助双栈技术、隧道技术、转换技术,实现IPv4/IPv6共存业务的互通。

隧道技术:IPv6 over IPv4

  • IPv6 over IPv4是通过隧道技术,使IPv6报文在IPv4网络中传输,实现IPv6网络之间的孤岛互连。
  • IPv6 over IPv4隧道原理:
  • IPv6 over IPv4隧道分类:
  • IPv6 over IPv4隧道的源IPv4地址必须为手工配置,而目的IPv4地址有手工配置和自动获取两种方式。根据隧道目的IPv4地址的获取方式不同可以将IPv6 over IPv4隧道分为手动隧道和自动隧道

手动隧道

  • 手动隧道即边界设备不能自动获得隧道目的IPv4地址,需要手工配置,报文才能正确发送至隧道终点。

实验

自动隧道

  • 自动隧道中,用户仅需要配置设备隧道的源IPv4地址,隧道的目的IPv4地址由设备自动生成。为了使设备能够自动产生目的IPv4地址,隧道接口的IPv6地址采用内嵌IPv4地址的特殊IPv6地址形式。设备从IPv6报文中的目的IPv6地址中解析出IPv4地址,然后以这个IPv4地址代表的节点作为隧道的终点。
  • IPv4兼容IPv6自动隧道数据转发流程:
    • IPv6报文到达R1后,以目的地址::A01:102查找IPv6路由,发现路由的下一跳为虚拟的Tunnel口。
    • R1对IPv6报文进行了封装。封装的时候,IPv6报文被封装为IPv4报文,IPv4报文中的源地址为隧道的源IPv4地址10.1.1.1,而目的IPv4地址直接从IPv4兼容IPv6地址::A01:102的后32位拷贝过来即10.1.1.2。
    • 这个报文被路由器从隧道口发出后,在IPv4的网络中被路由转发到目的地10.1.1.2,也就是R2。R2收到报文后,进行解封装,把其中的IPv6报文取出,送给IPv6协议栈进行处理。
    • R2返回R1的报文也是按照这个过程来进行的。
  • 6to4隧道:
    • 6to4地址的网络前缀长度为64 bit:
      • 前48 bit(2002: a.b.c.d)被分配给路由器上的IPv4地址决定了,用户不能改变。
      • 后16位(SLA)是由用户自己定义的。
    • 6to4地址解释:
      • FP(Format Prefix):可聚合全球单播地址的格式前缀,其值为001。
      • TLA(Top Level Aggregator):顶级聚合标识符,其值为0x0002。
      • SLA(Site Level Aggregator):站点级聚合标识符。

实验

隧道技术:6VPE

  • 6PE技术本质上相当于将所有通过6PE连接的IPv6业务都放在一个VPN内,无法做逻辑隔离,因此只能用于开放的、无保护的IPv6网络互联,如果需对所连接的IPv6业务做逻辑隔离,即实现IPv6 VPN,则需要借助于6VPE(IPv6 VPN Provider Edge, IPv6 VPN供应商边缘路由器)技术。

  • 6VPE技术是基于BGP/MPLS IPv6 VPN的扩展技术,在IPv4 MPLS骨干网上承载IPv6的VPN业务。

  • 与6PE技术相比,6VPE技术通过MP-BGP在IPv4 MPLS骨干网发布VPNv6路由,通过MPLS分配标签来标识IPv6报文,并使用LSP、MPLS TE等隧道机制在骨干网上实现私网数据的传送。

    在骨干网络是IPv4的情况下,PE之间使用IPv4地址建立VPNv6邻居,传递VPNv6路由,VPNv6路由可以选择骨干网中的IPv4隧道来承载IPv6 VPN业务。

  • 6VPE除PE和CE之间运行的路由协议与IPv4 VPN不同外,其它所有特性原理都与IPv4 VPN相同。

实验

  • 注:要完成次实验PE设备必须使用Router设备,其他普通路由器不支持vpnv6功能

6VPE配置举例

  • 配置需求:
    • 不同用户站点希望通过公网进行IPv6的数据通信,而又不希望公网感知到站点内部的路由信息,且希望实现业务隔离。
    • 如图所示,CE1和CE2属于vpna。希望通过配置6VPE,使得vpna的内部站点可以通过MPLS骨干网互相访问,同时希望PE与CE之间采用静态路由的方式来交换路由。
  • 1、配置各接口的IPv4和IPv6地址。(略)
  • 2、配置PE1和PE2之间的IS-IS路由协议,使PE之间可以互相学习到去往对方Loopback0的路由。(略)
  • 3、骨干网上使能MPLS、MPLS LDP,PE之间建立LDP LSP。
javascript 复制代码
[PE1] mpls lsr-id 2.2.2.2
[PE1] mpls
[PE1-mpls] quit
[PE1] mpls ldp
[PE1-mpls-ldp] quit
[PE1] interface GigabitEthernet0/0/2
[PE1-GigabitEthernet2/0/0] mpls
[PE1-GigabitEthernet2/0/0] mpls ldp
  • 4、PE上创建支持IPv6地址族的VPN实例,并将PE连接CE的接口与VPN实例绑定。
javascript 复制代码
[PE1] ip vpn-instance vpna
[PE1-vpn-instance-vpna] ipv6-family
[PE1-vpn-instance-vpna-af-ipv6] route-distinguisher 100:1
[PE1-vpn-instance-vpna-af-ipv6] vpn-target 22:22 both

[PE1] interface GigabitEthernet0/0/1
[PE1-GigabitEthernet0/0/1] ip binding vpn-instance vpna
[PE1-GigabitEthernet0/0/1] ipv6 enable
[PE1-GigabitEthernet0/0/1] ipv6 address 2001:DB8:1::2 64
  • 5、PE之间建立VPNv6对等体关系。
javascript 复制代码
[PE1] bgp 200
[PE1-bgp] peer 3.3.3.3 as-number 200
[PE1-bgp] peer 3.3.3.3 connect-interface loopback 0
[PE1-bgp] ipv6-family vpnv6
[PE1-bgp-af-vpnv6] peer 3.3.3.3 enable

[PE2] bgp 200
[PE2-bgp] peer 2.2.2.2 as-number 200
[PE2-bgp] peer 2.2.2.2 connect-interface loopback 0
[PE2-bgp] ipv6-family vpnv6
[PE2-bgp-af-vpnv6] peer 2.2.2.2 enable
  • 6、在PE和CE上配置静态路由,并在PE上将静态路由引入到BGP-VPN实例IPv6地址族路由表中。
javascript 复制代码
[PE1] ipv6 route-static vpn-instance vpna 2001:DB8:5:: 64 2001:DB8:1::1
[PE1] bgp 200
[PE1-bgp] ipv6-family vpn-instance vpna
[PE1-bgp6-vpna] import-route static

[CE1] ipv6 route-static :: 0 2001:DB8:1::2

[PE2] ipv6 route-static vpn-instance vpna 2001:DB8:6:: 64 2001:DB8:2::1
[PE2] bgp 200
[PE2-bgp] ipv6-family vpn-instance vpna
[PE2-bgp6-vpna] import-route static

[CE2] ipv6 route-static :: 0 2001:DB8:2::2
  • 7、查看配置结果
    1. 在PE上查看VPNv6对等体的建立情况。
javascript 复制代码
[PE1]display bgp vpnv6 all peer
 BGP local router ID : 10.0.0.1
 Local AS number : 200
 Total number of peers : 1                 Peers in established state : 1

  Peer	V     AS	MsgRcvd	MsgSent	OutQ	Up/Down	State	PrefRcv
  3.3.3.3	4     200	19       	19     	 0 	00:12:25 	Established    1
    1. CE1可以Ping通CE2的Loopback1地址。
javascript 复制代码
[CE1]ping ipv6 -a 2001:db8:5::5 2001:db8:6::6
  PING 2001:db8:6::6 : 56  data bytes, press CTRL_C to break
    Request time out
    Reply from 2001:DB8:6::6 
    bytes=56 Sequence=2 hop limit=62  time = 50 ms
    Reply from 2001:DB8:6::6 
    bytes=56 Sequence=3 hop limit=62  time = 40 ms
    Reply from 2001:DB8:6::6 
    bytes=56 Sequence=4 hop limit=62  time = 30 ms
    Reply from 2001:DB8:6::6 
    bytes=56 Sequence=5 hop limit=62  time = 30 ms

  --- 2001:db8:6::6 ping statistics ---
    5 packet(s) transmitted
    4 packet(s) received
    20.00% packet loss
    round-trip min/avg/max = 30/37/50 ms

转换技术:NAT64

  • NAT64是一种将IPv6网络地址转换成IPv4网络地址的NAT(Net Address Translation,网络地址转换)技术。

  • 当IPv4网络的节点需要直接与IPv6网络的节点进行通信时,默认情况下是行不通的,因为两个协议栈无法兼容。但是借助一台设备,由该设备来实现IPv6与IPv4的互转,那么上述通信就可以实现了。

  • IPv6网络用户访问IPv4网络服务器的应用场景。

    • 在向IPv6网络演进的前期,运营商为用户提供IPv6单栈接入能力,而很多Internet服务器还是IPv4的,不具备双栈能力。这种情况下,运营商提供NAT64设备,使IPv6单栈用户可以访问IPv4服务器。
    • 该场景下,运营商只为用户分配IPv6地址,NAT64设备支持双栈,纯IPv6的访问通过IPv6路由来实现;而IPv6访问IPv4业务通过NAT64映射技术来完成。
    • 当IPv6用户较少且IP地址固定时,可以通过静态NAT64映射实现IPv6访问IPv4业务;当网络中存在大量IPv6用户且IP地址不固定时,可以通过动态NAT64映射实现IPv6访问IPv4业务。
  • IPv4网络用户访问IPv6网络服务器的应用场景。

    • 在向IPv6网络演进的后期,许多服务提供商已经开始提供IPv6服务。而Internet上还有很多IPv4单栈用户存在,为了保留住用户,服务提供商提供NAT64设备,使IPv4单栈用户可以访问服务器。
    • 该场景下,服务提供商只为服务器分配IPv6地址,接入设备不需要升级。NAT64设备部署在出口,必须支持双栈,其中纯IPv6的访问通过IPv6路由来实现;而IPv4对IPv6的访问通过静态NAT64映射技术来完成。

NAT64前缀

  • 设备通过判断IPv6报文的目的地址中是否包含NAT64前缀来初步判断是否对该IPv6报文进行NAT64处理。
  • NAT64前缀分为两种形式:
    • 知名前缀:即64:FF9B::/96,缺省情况下已存在,无需配置。
    • 自定义前缀:前缀长度为32、40、48、56、64或96。
  • 根据前缀长度不同,IPv4地址嵌入IPv6地址时,嵌入的位置存在差异,具体差异如图所示。
    • PL(Prefix Length)表示前缀长度;Suffix表示后缀,可以任意取值,设备不处理该字段;U为保留位,8 bit,取值必须为0。
  • NAT64分类:
    • 基于PAT方式的NAT64转换:NAT64过程中对于地址和端口同时进行转换操作,[IPv6地址,端口]与[IPv4地址,端口]相互映射。即,转换前后的地址是多对一的关系,多个IPv6地址可以转换成同一个IPv4地址(映射关系通过端口的不同来区分)。该方式是常用的NAT64转换方式。
    • 基于NO-PAT方式的NAT64转换:NAT64过程中对于地址进行转换操作,不对端口进行转换操作,[IPv6地址]与[IPv4地址]相互映射。即,转换前后的地址是一对一的关系。

动态NAT64映射

  • 当网络中存在大量IPv6用户且IP地址不固定时,IPv6用户访问IPv4 Server,报文到达设备后,设备会将IPv6地址动态转换为地址池中的IPv4地址,并将IPv6报文转换为IPv4报文,发送给IPv4 Server,实现IPv6用户访问IPv4业务。
  • 在此场景中NAT64设备通过IPv6到IPv4的流量触发创建会话表,并记录地址映射关系;IPv4到IPv6的流量匹配会话表后,查找地址映射关系进行反向回复。

静态NAT64映射

  • 静态NAT64通过静态配置IPv6和IPv4地址的映射关系,不需要刷新也不老化,一直存在。这样IPv6到IPv4以及IPv4到IPv6的流量都能够触发创建会话表,这不仅可以实现IPv6用户访问IPv4服务器,也为IPv4用户访问IPv6服务器提供了一种方案。
  • IPv6用户访问IPv4业务时,设备将报文的目的IPv6地址静态映射为IPv4地址;IPv4用户访问IPv6业务时,设备将报文的目的IPv4地址静态映射为IPv6地址。

动态NAT64配置举例

  • 配置需求:

    • FW1支持双协议栈,连接IPv6网络以及IPv4网络。
    • 位于IPv6网络中的PC(IP地址不固定且数量较多)通过域名example.huawei.com能够访问位于IPv4网络中的Server。
  • IPv6 PC发出的IPv6报文中的目的地址是NAT64地址:2001:DB8:1::101:102/96。

  • 其他配置:

    • 配置DNS64设备。
      • 配置DNS64设备的IPv6前缀为FW1的NAT64前缀2001:DB8:1::/96。
      • 配置DNS64设备分别与PC和Server路由可达。
    • 配置PC的IPv6地址、路由和DNS server。(IPv6地址和路由的配置方法与PC的操作系统有关,配置方法略。)
      • 配置PC的IPv6地址为2001:DB8::1/64,与FW1的接口GE1/0/1同一网段。
      • 配置PC去往2001:DB8:1::/96网段的路由下一跳为2001:DB8::2。
      • 配置PC的DNS server地址为DNS64设备的IPv6地址。
    • 配置Server的IPv4地址。(IPv4地址的配置方法与Server的操作系统有关,配置方法略。)
      • 配置Server的IPv4地址为1.1.1.2/24,与FW1的接口GE1/0/2同一网段。
  • 1、配置FW1的IPv4和IPv6地址,配置安全区域。自行配置

  • 2、配置安全策略。

javascript 复制代码
[FW1] security-policy
[FW1-policy-security] rule name sec1
[FW1-policy-security-rule-sec1] source-zone untrust
[FW1-policy-security-rule-sec1] destination-zone trust
[FW1-policy-security-rule-sec1] source-address 2001:db8:: 64
[FW1-policy-security-rule-sec1] action permit

3、开启FW1接口GE1/0/1的NAT64功能。

javascript 复制代码
[FW1] interface GigabitEthernet 1/0/1
[FW1-GigabitEthernet1/0/1] nat64 enable

4、配置NAT64的前缀为2001:db8:1::/96(自定义前缀)。

javascript 复制代码
[FW1] nat64 prefix 2001:db8:1:: 96

5、配置NAT64地址池。

javascript 复制代码
[FW1] nat address-group pool1
[FW1-address-group-pool1] mode pat
[FW1-address-group-pool1] section 1 1.1.1.6 1.1.1.10

6、配置NAT64动态映射。

javascript 复制代码
[FW1] nat-policy
[FW1-policy-nat] rule name nat64
[FW1-policy-nat-rule-nat64] nat-type nat64
[FW1-policy-nat-rule-nat64] source-zone untrust
[FW1-policy-nat-rule-nat64] destination-zone trust
[FW1-policy-nat-rule-nat64] source-address 2001:db8:: 64
[FW1-policy-nat-rule-nat64] action source-nat address-group pool1
相关推荐
BingoGo20 小时前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack20 小时前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
BingoGo2 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php
JaguarJack2 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php·服务端
JaguarJack3 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端
BingoGo3 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
php
JaguarJack4 天前
告别 Laravel 缓慢的 Blade!Livewire Blaze 来了,为你的 Laravel 性能提速
后端·php·laravel
郑州光合科技余经理4 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
DianSan_ERP4 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
feifeigo1234 天前
matlab画图工具
开发语言·matlab