IPv6

作者: songtianyi 2020-06-17

图片来自网络

为什么会有ipv6等基本信息就不提了,网上资料很多。相对IPV4,v6地址数量更多(8 * 4 --> 16 * 8),协议格式也做了简化。

image

IPv6地址使用128比特进行标识,每16个比特划分为一段,使用16进制数字表示,共8段,并且使用冒号隔开。如2001:0000:130F:120E:02C0:06E0:175A:180B。但有时候书写起来比较麻烦,所以有了IPv6的压缩格式,每段前面的0都可以省略,比如前面的IPv6地址,可以表示为2001:0000:130F:120E:2C0:6E0:175A:180B。如果IPv6的地址中包含的连续两个或多个均为0的段,可以用双冒号“::”来代替。比如2001:0000:0000:120E:02C0:06E0:175A:180B,可以压缩为2001::120E:02C0:06E0:175A:180B。但是我们同时规定,一个IPv6的地址中只能使用一次双冒号,因为如果使用多次,恢复成128位完整的格式的时候,会无法确定知道每段的0的个数,两个常用地址的v6压缩格式

0.0.0.0 --> ::/128 127.0.0.1 --> ::1/128

ipv4地址分为网络号和主机号,v6分为网络前缀和接口标识,其实是对应的,但ipv6没有子网掩码一说。接口标识可以手工配置,就像我们给主机分配ip地址一样,或者系统通过软件自动生成,或者根据IEEE EUI-64规范自动生成。IEEE EUI-64规范是根据接口的MAC地址生成IPv6的接口标识。网络前缀地址由管理机构定义和分配。

IPv6地址分三种类型:

地址辅助工具

相比v4 , v6没有广播(broadcast)的概念,用组播实现广播的功能。v6新增了任播地址

任播技术是一种新的网络应用,它能够支持把同样的地址可以分配给多个节点去提供特定服务的以服务导向的地址,而带有任播目的地地址的数据报能够使用相同的任播地址并被传给众多节点中的任意一个。因特网研究任务组(IRTF)在1993年到RFC 1546中已经定义了任播技术的作用:“主机向一个任播地址发送数据报,网络负责尽力将数据报传递到至少一个,最好也是一个,按任播地址接收数据的服务器上。"采用任播机制的初衷是彻底去简化在互联网中寻找合适服务器的任务;任播通信的基本概念是从物理主机设备中分离出的逻辑服务标识符,任播地址可以根据服务类型来分配,使得网络服务担当一个逻辑主机的角色。

ipv6单播地址又分为以下几种

既然IPv6的地址空间那么大,可以为每一个网络节点分配公网IPv6的节点,那为什么IPv6还需要支持私网?在IPv4中,利用NAT技术,私网内的网络节点可以使用统一的公网出口访问互联网资源,大大节省了IPv4公网地址的消耗(IPv6推进缓慢的原因之一)。另一方面,由于默认情况下私网内节点与外界通信的发起是单向的,网络访问仅仅能从私网内发起,外部发起的请求会被统一网关或者防火墙阻隔掉,这样的网络架构很好的保护了私网内的节点安全性和私密性。可以设想一下,如果企业内部每台办公电脑都配置了IPv6的公网地址上网,是多么可怕的事情,每台办公电脑都会面临被黑客入侵的威胁,肉鸡将会泛滥。 因此,在安全性和私密性要求下,IPv6中同样需要支持私网,并且也需要支持NAT。在Linux内核3.7版本开始加入对IPv6 NAT的支持,实现的方式和IPv4下的差别不大。

IPv6地址配置

IPv6一个比IPv4更厉害的方面,就是可以自动配置地址,甚至这个配置过程不需要DHCPv6(在IPv4中是DHCPv4)这样的地址配置协议。最典型的例子就是,只要开启了IPv6协议栈的操作系统,每个接口就能自动配置了链路本地地址,这个是和IPv4最重要的区别之一。

IPv6的地址配置有以下几种:

寻址

在ipv4的体系中,通过arp协议去发现mac地址,而ipv6是通过ND协议,其中,NS(Neighbor Solicitation)报文对应arp请求报文,NA(Neighbor Advertisement)报文对应arp应答报文

域名解析

由于IPv6的地址扩展为128位,比IPv4更难书写和记忆,因此IPv6下的DNS变得尤为重要。IPv6的的DNS资源记录类型为AAAA(又称作4A),用于解析指向IPv6地址的完全有效域名。

下面是一个示例: Hostipv6.example.wechat.com IN AAAA 2001:db8:1::1

IPv6下的域名解析可以认为是IPv4的扩展,详细可以查看RFC3596.

路由

ipv4除了静态路由,还可以通过ICMP路由器请求报文和ICMP路由器通告报文来获取路由信息,同样的,ipv6通过路由器请求报文(Router Solicitation)和路由器通告(Router Advertisement)来获取路由信息。

NAT

为什么ipv6保留了NAT?

NAT-PT(Network Address Translation - Protocol Translation)技术,用于v4和v6的地址映射, 以下是静态NAT-PT示例

ipv6 nat v6v4 source 3001:11:0:1::1 150.11.3.1 ipv6 nat v4v6 source 192.168.30.9 2000::960B:202
动态NAT-PT

在动态NAT-PT中,NAT-PT网关向IPv6网络通告一个96位的地址前缀,并结合主机32位IPv4地址作为对IPv4网络中主机的标识。从IPv6网络中的主机向IPv4网络发送的报文,其目的地址前缀与NAT-PT发布的地址前缀相同,这些报文都被路由到NAT-PT网关,由NAT-PT网关对报文头进行修改,取出其中的IPv4地址信息,替换目的地址。同时,NAT-PT网关定义了IPv4地址池,它从地址池中取出一个地址来替换IPv6报文的源地址,从而完成从IPv6地址到IPv4地址的转换。 动态NAT-PT改进了静态NAT-PT配置复杂、消耗大量IPv4地址池的缺点。由于它采用上层协议映射方法,故只需用很少的IPv4地址就可以支持大量的IPv6到IPv4的转换。但是,动态NAT-PT只能由IPv6一侧首先发起连接,路由器把IPv6地址转换为IPv4地址后,IPv4主机才知道使用哪一个IPv4地址来标识IPv6主机。若从IPv4端首先发起连接,IPv4主机并不知道IPv6主机的IPv4地址,因为这个地址是NAT-PT网关从地址池中随机选择的,连接将无法进行。

NAT-PT has been deemed deprecated by IETF because of its tight coupling with Domain Name System (DNS) and its general limitations in translation, and it has proven as technology to be too complex to maintain scalable translational services. With the deprecation of NAT-PT and the increasing IPv6 transition among users has led to the introduction of NAT64. Refer to these documents for more information on NAT64:

image

静态路由
ipv6 route ::/0 2001:DB8:3002::10
总结下相对于IPV4的变化
  1. ip报文格式
  2. ip表达格式
  3. 地址(接口)配置方式,DHCPv4 --> DHCPv6
  4. ICMP版本变化, ICMPv4 --> ICMPv6
  5. 过渡技术,如nat64

ipv6的普及率目前仍然比较低,虽然上游(操作系统,电信商,电信设备等)都已经支持ipv6,各大网站的主站(bat等等)也已支持,但终端用户仍然基本都是用ipv4,目前是被政策推着向前的状态。