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
相关推荐
No0d1es几秒前
2024年12月青少年软件编程(C语言/C++)等级考试试卷(三级)
c语言·开发语言·青少年编程·电子学会·三级
犬余5 分钟前
《Java源力物语》-4.集合府邸的新秀
java·开发语言
yuanbenshidiaos5 分钟前
QT-------认识QT
开发语言·qt
看星猩的柴狗11 分钟前
密码学原理技术-第二章-Stream Ciphers
服务器·网络·密码学
海螺姑娘的小魏12 分钟前
Effective C++ 条款 16:成对使用 `new` 和 `delete` 时要采取相同形式
开发语言·c++
neter.asia31 分钟前
C# 窗体应用程序嵌套web网页,基于谷歌浏览器内核(含源码)
开发语言·c#
2301_809177471 小时前
sqoop,flume草稿
开发语言
潜意识起点1 小时前
Java数组:静态初始化与动态初始化详解
java·开发语言·python
anddddoooo1 小时前
Kerberoasting 离线爆破攻击
网络·数据库·安全·microsoft·网络安全
点云SLAM1 小时前
C++创建文件夹和文件夹下相关操作
开发语言·c++·算法