IPv6 rapid deployment(6rd)(RFC 5969)是一种无状态隧道机制,它容许一个服务商在不要求升级已存在的IPv4接入网络基础设施的状况下,轻巧安全的快速部署IPv6。固然这里有一系列方法经过IPv4来承载IPv6,6rd的方式尤为成功,其主要在于他的实施是一个轻巧、天然地可扩展、有弹性且易于配置的无感知模式。6rd提供的服务是生产质量,使得全部的客户和整个Internet看起彷佛是原生的本地IPv6网络。linux
图 1提供一个6rd做业的视图
6rd由两个主要的硬件组件组成,CE(Customer Equipment)路由器和BR(Border Relay)路由器。ios
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地址将被用做封装做报文的目的地址。api
图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地址经过如下规则来获取:ide
本地路由用于同一6rd域的CE和BR路由器之间。为了实现高可用性,能够配置一个以上的BR路由器。为了达到这个目的,BR路由器必须使用在IPv4内部网关协议(IGP)中通告IPv4任播地址,致使6rd域中有多个6rd BR路由器。CE路由器将会基于IGP的选举规则使用最近的BR路由器。
服务提供商必须向IPv6 Internet宣布已注册的IPv6地址范围(第6个委托前缀),以实现全球可达性。oop
本节逐步说明数据包如何从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