IPv6 rapid deployment(6rd)(RFC 5969)是一种无状态隧道机制,它允许一个服务商在不要求升级已存在的IPv4接入网络基础设施的情况下,轻巧安全的快速部署IPv6。当然这里有一系列方法通过IPv4来承载IPv6,6rd的方式尤其成功,其主要在于他的实施是一个轻巧、自然地可扩展、有弹性且易于配置的无感知模式。6rd提供的服务是生产质量,使得所有的客户和整个Internet看起似乎是原生的本地IPv6网络。
图 1提供一个6rd作业的视图
6rd由两个主要的硬件组件组成,CE(Customer Equipment)路由器和BR(Border Relay)路由器。
CE路由器位置在服务商提供IPv4接入基础设施的边缘和为这些终端用户网络提供IPv6通信。来自于这些终端用户的原生IPv6流量通过CE路由器封装成IPv4,隧道连接到BR路由器和或直接送到相同6rd域的其他CE路由器。反过来,通过BR路由器从Internet网接收到的封装的6rd流量和来自其他CE路由器的6rd流量将会被解封装后,并转发到最终用户节点。
BR路由器提供CE路由器和IPv6网络(公有网络或私有网络)两者之间的通信。CE和BR路由两者都是双栈(IPv4和IPv6)设备,在BR和CE两者之间可以仅是IPv4。
在CE路由器,如果IPv6报文的目的地址和本地配置的6rd前缀匹配,这个报文会被认为是本地6rd域的一部分,需要被转发到其他CE路由器。在这种情况下,IPv4地址嵌入在IPv6的目的地址中,作为6rd隧道的目的地址使用。本地WAN接口的IPv4地址将被用作6rd隧道的源地址,这个IPv6报文直接封装成IPv4。如果IPv6目的地址和本地配置的6rd前缀不匹配就另说,如果这个报文不属于本地6rd域,这个报文将会通过6rd隧道隧穿到BR路由器。在这种情况下,在CE路由器本地配置的BR IPv4地址将被用作封装作报文的目的地址。
图2展示的网络中,CE路由器给他的网站提供一个范围的前缀。这些前缀称作6rd委托前缀和IPv6域主机配置协议(DHCPv6)的PD前缀相似。一个6rd委托前缀有以下几个元素组成:
示例2:
很常见的是挑战服务提供商受限于现有服务提供者,导致在6rd地址空间压缩IPv4地址是不行的。因为这个,整个IPv4地址的32bit需要插入6rd IPv6地址,如下图4所示:
区域注册机构(RIPE、ARIN等)正在研究一种模型,其中一个服务提供商通过6rd提供IPv6服务可以获得一个/29的IPv6地址分配,来替代小于 /32的地址分配。这将为每位终点用户网提供3bit用于分割本地网络,从而为每个终点用户提供8个子网。
6rd地址隧道终点的确定:
当目的地是6rd域地址的本机IPv6报文到达一个6rd CE路由器,它将被送到适当的目标CE路由器。6rd隧道的目的IPv4地址通过以下规则来获取:
本地路由用于同一6rd域的CE和BR路由器之间。为了实现高可用性,可以配置一个以上的BR路由器。为了达到这个目的,BR路由器必须使用在IPv4内部网关协议(IGP)中通告IPv4任播地址,导致6rd域中有多个6rd BR路由器。CE路由器将会基于IGP的选举规则使用最近的BR路由器。
服务提供商必须向IPv6 Internet宣布已注册的IPv6地址范围(第6个委托前缀),以实现全球可达性。
本节逐步说明数据包如何从CE路由器发送到另一个CE路由器或IPv6 Internet并返回(图7)。
如果IPv6目标地址落在本地配置的6rd域前缀的范围内,然后需要转发到另一个6rd CE路由器,则将在面向客户的接口上本地接收IPv6流量(图8)。
这个IPv6报文封装在IPv4标记头中。嵌入的IPv4地址复制到IPv4目的地址中。本地配置的隧道源地址复制为IPv4源地址。IPv4的隧道头的协议字段的类型被设置为41(IPv6 in IPv4)。
隧道化IPv6数据包的IPv4数据包通过遵循IPv4路由表的IPv4域转发到目标CE路由器。
目的CE路由器接收这个隧道化的IPv6报文,然后将IPv4头移除。出于安全措施,IPv4头中的源地址将要和嵌入在IPv6头中的IPv4地址做比较。如果不匹配,报文将会被丢弃。如果匹配,这个IPv6报文将会被视为一个本地IPv6报文转发到CE LAN侧的IPv6目标地址去。
在CE到IPv6 Internet的场景中,IPv6流量在面向用户侧的接口时本地接收的。IPv6目的地址没有填入本地配置的6rd前缀的范围,这意味着它不针对本地6rd域内的目标。在这种情况下,报文需要被转发到6rd BR路由器。
在CE到CE的场景中,IPv6头封装在IPv4头中。然而,不同之处在于本地配置的BR IPv4地址复制到IPv4的目的地址。此外,本地配置的隧道源地址复制到IPv4源地址。协议字段设置为41(IPv4中的IPv6),然后,按照正常的IPv4路由表将封装的数据包通过IPv4域转发到BR路由器。
BR路由器接收IPv4数据包并删除IPv4标头封装。 将IPv4标头源地址与嵌入在IPv6源地址中的IPv4地址进行比较。 如果地址不匹配,则丢弃该数据包。 否则,IPv6数据包将本地转发到IPv6目标地址。
在从IPv6 Internet到CE的场景中,BR路由器从其面向IPv6网络的接口之一接收本地IPv6数据包。 IPv6目标地址属于本地配置的6rd前缀的范围,这意味着它以本地第6个域内的目标为目标。 在这种情况下,需要将数据包转发到适当的CE路由器(图9)。
6rd BR路由器会将IPv6数据包封装在IPv4标头中。 IPv6标头中嵌入的IPv4地址用作IPv4目标地址。 隧道的源地址将是在6rd BR路由器的6rd隧道接口上配置的IPv4地址。 标头中的IPv4数据包的协议字段设置为41(IPv4中的IPv6)。 然后,数据包由第六BR路由器使用传统的IPv4转发路径转发到第六CE路由器。
当CE路由器接收到隧道化的6rd IPv4报文,为了暴露封装的IPv6报文将会移除IPv4头。首先,IPv4头源地址将和本地配置的6rd BR IPv4地址进行比较。如果地址不匹配报文将被丢弃。如果匹配,则6rd CE路由器通过IPv6将IPv6报文本地转发到IPv6目标地址。
6rd CE路由器委派的IPv6地址是从本地WAN接口IPv4地址与第六个前缀组合得出的。 可以手动配置地址。但是,通常会通过DHCPv4从连接的服务提供商接收IPv4地址。
除了此IPv4地址,还必须配置其他信息。
BR Router
IPv6 general-prefix DELEGATED_PREFIX 6rd Tunnel0
interface Loopback0
ip address 10.0.0.1 255.255.255.0
!
interface Tunnel0
tunnel source Loopback0
tunnel mode IPv6ip 6rd
tunnel6rd IPv4 prefix-len 8
tunnel6rd prefix 2001:db80::/32
IPv6 address DELEGATED_PREFIX::/128 anycast
!
IPv6 route 2001:db80::/32 Tunnel0
IPv6 route ::/0 2001:babe::1
CE Router
IPv6 general-prefix DELEGATED_PREFIX6rd Tunnel0
interface Dialer0
ip address dhcp ! (10.1.1.1)
!
interface Tunnel0
tunnel source Dialer0
tunnel mode IPv6ip 6rd
tunnel 6rd IPv4 prefix-len 8
tunnel 6rd prefix 2001:db80::/32
tunnel 6rd br 10.1.3.1
IPv6 address DELEGATED_PREFIX ::/128 anycast
!
interface Ethernet0
IPv6 address DELEGATED_PREFIX ::/64 eui-64
!
IPv6 route 2001:db80::/28 Tunnel0
IPv6 route ::/0 Tunnel0, 2001:db80:a000:0010::
IPv6 route 2001:db80:0:A00::/56 Null0
三台Linux虚拟构建网络拓扑。
#配置CE设备
ip address add 192.168.110.27 dev eth0
ip link set eth0 up
ip tunnel add kali006rd mode sit local 192.168.110.27
ip tunnel 6rd dev kali006rd 6rd-prefix 2012:db8::/32 6rd-relay_prefix 192.168.147.136/32
ip link set kali006rd up
ip -6 addr add 2012:db8:c0a8:6e1b::1/64 dev kali006rd
ip -6 route add 2012:db8::/32 dev kali006rd
ip -6 route add default via ::192.168.147.136
#配置ISP
ip address add 192.168.147.1 dev eth0
ip link set eth0 up
ip address add 192.168.110.1 dev eth1
ip link set eth1 up
#配置BR设备
ip address add 192.168.147.136 dev eth0
ip link set eth0 up
ip tunnel add kali006rd mode sit local 192.168.147.136
ip tunnel 6rd dev kali006rd 6rd-prefix 2012:db8::/32
ip link set kali006rd up
ip -6 addr add 2012:db8:c0a8:9388::1/64 dev kali006rd
ip -6 route add 2012:db8::/32 dev kali006rd
#在CE设备测试连通性:
root@kalimk:~# ping6 2012:db8:c0a8:9388::1 -c 5
PING 2012:db8:c0a8:9388::1(2012:db8:c0a8:9388::1) 56 data bytes
64 bytes from 2012:db8:c0a8:9388::1: icmp_seq=1 ttl=64 time=0.759 ms
64 bytes from 2012:db8:c0a8:9388::1: icmp_seq=2 ttl=64 time=1.64 ms
64 bytes from 2012:db8:c0a8:9388::1: icmp_seq=3 ttl=64 time=0.769 ms
64 bytes from 2012:db8:c0a8:9388::1: icmp_seq=4 ttl=64 time=0.606 ms
64 bytes from 2012:db8:c0a8:9388::1: icmp_seq=5 ttl=64 time=0.710 ms
--- 2012:db8:c0a8:9388::1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4065ms
rtt min/avg/max/mdev = 0.606/0.897/1.642/0.376 ms
#在BR设备创建一个IPv6/IPv4 Internet
ip link del kaliBr0
ip link add dev kaliBr0 type bridge
ip link set kaliBr0 up
ip -6 addr add 2233:ccc::1/64 dev kaliBr0
#在CE设备测试连通性:
root@kalimk:~# ping6 2233:ccc::1
PING 2233:ccc::1(2233:ccc::1) 56 data bytes
64 bytes from 2233:ccc::1: icmp_seq=1 ttl=64 time=0.723 ms
64 bytes from 2233:ccc::1: icmp_seq=2 ttl=64 time=0.424 ms
64 bytes from 2233:ccc::1: icmp_seq=3 ttl=64 time=0.722 ms
64 bytes from 2233:ccc::1: icmp_seq=4 ttl=64 time=1.69 ms
64 bytes from 2233:ccc::1: icmp_seq=5 ttl=64 time=0.887 ms
64 bytes from 2233:ccc::1: icmp_seq=6 ttl=64 time=1.62 ms
64 bytes from 2233:ccc::1: icmp_seq=7 ttl=64 time=0.603 ms
64 bytes from 2233:ccc::1: icmp_seq=8 ttl=64 time=0.642 ms
64 bytes from 2233:ccc::1: icmp_seq=9 ttl=64 time=0.596 ms
64 bytes from 2233:ccc::1: icmp_seq=10 ttl=64 time=0.677 ms
--- 2233:ccc::1 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9138ms
rtt min/avg/max/mdev = 0.424/0.858/1.687/0.413 ms
注意:CE和BR之间,只能存在IPv4网络,需要将网卡的IPv6都禁用掉。
我的环境是KaliLinux:
参考链接:
https://blog.51cto.com/enderjoe/2367434?source=dra
https://blog.csdn.net/qq_39628285/article/details/105230013?utm_medium=distribute.pc_relevant
IPv6 Rapid Deployment, IPv6 6rd初探
原文:https://www.cnblogs.com/kingpop/p/14054321.html