在知识扫盲前,首先要知道在IPv4环境下,可以通过https://ipv6proxy.cn 来测试纯IPv6的网站内容。
一、 IPv6是什么?为什么要用IPv6?
1.1 IPv6的定义:
IPv6通俗讲就是,第六代互联网协议。大家应该都知道吧,就是你经常在网卡里设置的ip地址如"192.168.1.2",这个就是IPv4网络地址,那么IPv6的设计目的就是用于替代的下一代IP协议,号称可以为全世界的每一粒沙子编上一个网址。
1.2为什么要用IPv6
大家知道延缓IPv4地址耗尽的短期方案之一为NAT(Network Access Translation)。NAT技术在延缓IPv4地址耗尽问题方面非常成功,在大多数网络设计中已经成为一个标准部分。
NAT技术的缺陷:把原来具有开放、透明、对等特点的Internet变成了看上去更像一个具有客户-服务器(Client-Server)结构的网络的巨大集合。而用户则只在外围连接到Internet的"边缘层",Internet向它们提供服务。用户很少对Internet的整体资源做出贡献。更多的从某种经济的角度看,Internet的用户仅仅成为了消费者,而不是生产者。
推动IPv6发展的两个基本动力:
1、 诸如移动IP协议(Mobile IP)、服务质量保证(QoS)、端到端的安全、网格计算(Grid Computing)、点到点网络互连等核心概念的新型应用。NAT技术遏制了这些领域的创新,因而摒弃NAT技术的惟一手段是提供充足的并且易用使用的公共IP地址。
2、拥有众多人口的国家的快速的现代化发展,例如中国和印度。有些国家不得不继续保留一个具有4~5层NAT技术的网络层次架构,以支持对IPv4地址的需求。
所以可以发现最大的问题在于网络地址资源有限,严重制约了互联网的应用和发展。IPv6的使用,不仅能解决网络地址资源数量的问题,而且也解决了多种接入设备连入互联网的障碍。
原由总结:
1、IPv4地址资源的紧张限制了Internet的进一步发展,移动和宽带技术的发展要求更多的IP地址
2、NAT、CIDR、VLSM等技术的使用仅仅暂时缓解IPv4地址紧张,但不是根本解决办法。
3、路由表急剧膨胀
4、随着因特网的发展,安全问题越来越突出。IPv4协议制定时并没有仔细针对安全性进行设计,因此固有的框架结构并不能支持端到端安全。因此,安全问题也是促使新的IP协议出现的一个动因。
二、 IPv6基础知识体系
2.1 IPV6地址表示
1、ipv6地址长度是128位,基本表达方式是X:X:X:X:X:X:X:X,其中x是一个4位十六进制整数。每一个数字包含4位,每个整数包含4个数字,每个地址包括8个整数,共计128位(4*4*8=128)。
2、某些ipv6地址中可能包含一长串的0,当出现这种情况时,标准种允许用"空隙"来表示这一长串的0。如 2000:0:0:0:0:0:0:1可表示成2000::1。该种方法,只有当16位组全部为0时才会被两个冒号取代,且两个冒号在地址中只能出现一次。
3、要在一个URL中使用文本IPv6地址,文本地址应该用符号"["和"]"来封闭。例如文本IPv6地址
FEDC:BA48:7654:3210:FEDC:BA98:7654:3211写作URL示例为http://[FEDC:BA48:7654:3210:FEDC:BA98:7654:3211]:80/index.html。
4、ipv6地址被分成两个部分-子网前缀和接口标识符,子网前缀类似ipv4地址的掩码。
2.2 IPv6地址分类
ipv6地址有三类,单播、组播和泛播地址。单播和组播地址与ipv4的地址非常类似;但ipv6中不再支持ipv4中的广播地址,而增加了一个泛播地址。
单播:一个单接口的标识符。送往一个单播地址的包将被传送至该地址标识的接口上。
泛播:一组接口(一般属于不同节点)的标识符。送往一个泛播地址的包将被传送至该地址标识的接口之一(根据选路协议对于距离的计算方法选择"最近"的一个)
组播:一组接口(一般属于不同节点)的标识符。送往一个组播地址的包将被传送至该地址标识的所有接口上。
2.2.1单播地址格式:
1、接口标识符
ipv6单播地址的接口标识符基于IEEE EUI-64格式,该格式基于已存在的mac地址来创建64位接口标识符,这样的标识符在本地和全球范围是唯一的。RFC 2373包括的附录解释了如何创建接口标识符。方法如下:
将48位mac地址分成左右各24位,在其中插入0xFFFE,然后将第一个字节的第7位取反,如图所示:
例:
00:1F:9E:FC:7A:D0(MAC) -> FE80::21F:9EFF:FEFC:7AD0(IPV6)
2、特殊地址和保留地址
未指定地址或全0地址(尚未得到一个ipv6地址)
回返地址(在ipv4中回返地址时127.0.0.1,ipv6中的回返地址时::1)
嵌有ipv4地址的ipv6地址(有两类该地址,前80位均为0,低32位包含ipv4地址,当中间的16位为ffff时,表示该地址为ipv4映象的ipv6地址,用于访问只支持ipv4的节点;当中间的16位全0时,表示该地址为ipv4兼容地址,用于通过ipv4路由器以隧道方式传送ipv6包)
3、链路本地地址用于单网络链路上给主机编号,前缀的前10位标识(1111111010)的地址即为链路本地地址。路由器对于源端和目的端具有链路本地地址的包不予处理,因为永远不会转发这些包。
站点本地地址可用于在内联网中传送数据,但不允许从站点直接选路到全球Internet。站点内的路由器只能在站点内转发包,而不能把包转发到站点外去。
4、NSAP和IPX地址分配
2.2.2 泛播地址格式:
泛播地址使用可聚合全球单播地址,也能够使用本地站点或本地链路地址;因而,从语法上,任播地址与单播地址没有区别。被分配具有任播地址的节点必须得到明确的配置,从而知道它是一个任播地址。目前,泛播地址仅被用做目标地址,且仅分配给路由器。
为了更好的理解泛播用下面一段话进行阐述一下:
—个泛播地址(Anycast address,也可称为任播地址或泛播地址)表示的更像一种服务,而不是—台设备,并且相同的地址可以驻留在提供相同服务的一台或多台设备中。如下所示,某些服务是由3台服务器提供的,但却是通过IPv6地址3fe⒓"∶110o∶∶15来进行该服务的所有通告的。
接收到包含该地址通告的路由器不会知遒足由3台不lrll的设备通告给它的。相反,路由器会假定有3条路由到达相同的目的地,并会选择一条代价最低的路由。如图所示,这条路由是到达服务器C的,它的代价是20。
2.2.3组播地址格式:
组播地址只能用作目的地址,没有数据报把组播地址用作源地址。
地址格式如下图所示,其中第一个子节为全'1',标识其为组播地址。组播地址格式中除第一子节外的其余部分,包括如下三个字段:
标志字段:由4个单个位标志组成。目前只指定了第4位,该位用来表示该地址是由Internet编号机构指定的熟知的组播地址,还是特定场合使用的临时组播地址。如果该 标志位为" 0",表示该地址为熟知地址;如果该位为" 1",表示该地址为临时地址。其 他3个标志位保留将来用。
范围字段:长4位,用来表示组播的范围。即,组播组是只包括同一本地网、同一站点、 同一机构中的节点,还是包括ipv6全球地址空间中任何位置的节点。该4位的可能值式0~15,如图所示:
组标识符字段:长112位,用于标识组播组。根据组播地址是临时的还是熟知的以及地址的范围,同一个组播标识符可以表示不同的组。永久组播地址用指定的赋予特殊含义 的组标识符,组中的成员既依赖于组标识符,又依赖于范围。
2.3 IPv6包头格式及扩展头
2.3.1IPv6包头格式
version=6
Traffic Class ---IP V4 TOS
Flow Label用于指示流
Payload Length指示该IP报文负荷长度
Next Header ---IP V4 Protocol
Hop Limit --- IP V4 TTL
Source和Destination地址都是128位
下面附IPv4的格式
IPv4报头与IPv6报头的比较
· 首先,取消了IPv4包头的6个字段:IP包头长度(Header Length)、标识(Identification)、标志(Flag)、标志偏移量(Fragment Offset)及头标校验和(Header Checksum);
· 其次,在IPv6中有三个控制字段重新命名,并在一些条件下重新定义:总长度(Total Length)在IPV6叫负荷长度(Payload Length),和I P v 4 不同, I P v 6 中只包括包头之后Payload的长度,不会计算IPv6包头本身长度(固定40Bytes);
· 服务类型(Service Type)改叫(Traffic Class)、生存时间(Time to Live)改叫跳限制(Hop Limit);
· 最后,增加了一个新的字段:流标识(Flow Label);
2.3.2 IPv6扩展头格式
英文表达如下:
中文表达如下:
逐跳可选项(Hop-By-Hop Options)— —传送必须被转发路径中的每一个节点都检验处理的信息。例如,路由器告警和超大包有效载荷选项等。
路由选择(Routing)——通过列出在到达目的地的路径中数据包所要经过的节点列表来提供源路由选择的功能。
分段(Fragment)— —是指在一个数据包被分段时用来为接收节点重组数据包提供必要的信息。
封装安全有效载荷(ESP)-- 用于有效载荷的加密封装。
认证报头(AH)—用于数据包必须在源与目的节点之间进行认证的情况。
目的地可选项(Destination Options)— —用于传送仅仅被目的节点,或者可能是路由选择报头中列出的节点捡验处理的信息。
2.4 IPV6相关技术和协议
2.4.1 ICMPV6(IPv6因特网控制消息协议)
在IP报头中下一包头的协议号为58,ICMPv6处理与ICMPv4相同的基本错误和信息性消息。ICMPv6为邻居发现协议和组播侦听者协议提供支持。
icmpv6的错误消息类型:
1、目的地址不可达
2、包太大
3、时间超时
4、参数错误
icmpv6信息性消息类型:
1、回射请求
2、回射回复
2.4.2 邻居发现协议(NDP)
NDP(Neighbor Discovery Protocol,邻居发现协议)是IPv6的一个关键协议,它组合了IPv4中的ARP、ICMP路由器发现和ICMP重定向等协议,并对它们作了改进。作为IPv6的基础性协议,NDP还提供了前缀发现、邻居不可达检测、重复地址监测、地址自动配置等功能。
1.地址解析:地址解析是一种确定目的节点的链路层地址的方法。NDP中的地址解析功能不仅替代了原IPv4中的ARP,同时还用邻居不可达检测(NUD)方法来维持邻居节点之间的可达性状态信息。
2.无状态地址配置:NDP中特有的地址自动配置机制,包括一些列相关功能,如路由器发现、接口ID自动生成、重复地址监测等。通过无状态自动配置机制,链路上的节点可以自动获得IPv6全球单播地址。
a)路由器发现:路由器与其他相连的链路上发布网络参数信息,主机捕获此信息后,可以获得全球单播IPv6地址前缀、默认路由、链路参数(链路MTU)等信息。
b)接口ID自动生成:主机根据EUI-64规范或其他方式为接口自动生成接口标识符。
c)重复地址监测(DAD):根据前缀信息生成或手动配置IPv6地址后,为保证该地址的唯一性,在其可以使用之前,主机需要检验它是否已被链路上的其他节点所使用。
d)前缀重新编址:当网络前缀变化时,路由器在与其相连的链路上发布新的网络参数信息,主机捕获这些新信息后,重新配置前缀、链路MTU等地址相关信息。
3.路由重定向:当在本地链路上存在一个更好的到达目的网络的路由器时,路由器需要通告节点来进行相应配置改变。
2.4.3 组播侦听者发现协议(MLDV1/MLDV2)
组播侦听者发现协议是IPv6路由器所使用的一种协议,用以发现在其直连网络上的组播侦听者(即希望接收组播数据的节点)的存在,并且能明确发现这些邻居节点所感兴趣的组播地址。这个协议就是组播侦听发现(MLD ), MLD v1源于IPv4的IGMPv2。二者之间一个比较重要的区别是:MLD使用ICMPv6(IP协议号58)消息类型,不同于IGMP(IP协议号2)消息类型。
MLDv1协议有三类消息类型:
(1)组播征听者查询消息(Type=130)。
a.一般查询消息。用于发现在直连的链路上哪些组播地址有组播征听者。
b.特定组播地址查询消息(Multicast AddressSpecific Query)。用于判断一个特定的组播地址在本地链路上是否有组播征听者。
(2)组播征昕者报告消息(Type=131)。
(3)组播征听者Done消息(Type=132)。
MLDV2协议只有二类消息类型:
(1)组播征听者查询消息(Type=130)。
a. 一般查询消息。用于发现在直连的链路上哪些组播地址有组播征听者。
b.特定组播地址查询消息(Multicast AddressSpecific Query)。用于判断一个特定的组播地址在本地链路上是否有组播征听者。
c.特定组播地址和源地址查询消息(
Multicast-address-and-source-specific query)。用于判断一个特定源的组播地址在本地链路上是否有组播征听者。
(2)组播征昕者报告消息(Type=143)。
2.4.4 地址配置协议
(一)无状态地址自动配置协议(SLAAC)
无状态地址自动配置的核心是不需要额外的服务器管理地址状态,主机可自行计算地址进行地址自动配置,包括4个基本步骤:
1. 链路本地地址配置。主机计算本地地址。
2. 重复地址检测,确定当前地址唯一。
3. 全局前缀获取,主机计算全局地址。
4. 前缀重新编址,主机改变全局地址 [8]
(二)IPv6动态主机配置协议(DHCPv6)
DHCPv6在DHCP的基础上,进行了一定的改进与扩充。其中包含3种角色:DHCPv6客户端,用于动态获取IPv6地址、IPv6前缀或其他网络配置参数;DHCPv6服务器,负责为DHCPv6客户端分配IPv6地址、IPv6前缀和其他配置参数;DHCPv6中继,它是一个转发设备。通常情况下。DHCPv6客户端可以通过本地链路范围内组播地址与DHCPv6服务器进行通信。
三、应用IPv6后可以哪些安全问题又带来了哪些安全隐患
3.1理论上能够解决的信息安全问题
IPv6协议在设计之初就考虑了安全性,其海量的网络地址资源、自动配置机制、集成IPsec协议等特性使IPv6在攻击可溯源性、防攻击、数据传输过程中的完整性和加密性等安全方面有所提高。
1、IPv6拥有巨大的地址空间资源,建立了源地址验证机制,有利于攻击溯源
IPv4没有建立起源地址验证机制,且在IPv4网络中,由于地址空间的不足,普遍部署NAT,一方面破坏了互联网端到端通信的特性,另一方面隐藏了用户的真实IP,导致事前基于过滤类的预防机制和事后追踪溯源变的尤为困难。
IPv4存在的安全隐患
IPv6则建立了可信的地址验证体系,IPv6的地址验证体系结构(SAVA)分为接入网(Access Network)、区域内(Intra-AS)和区域间(Inter-AS)源地址验证三个层次,从主机IP地址、IP地址前缀和自治域三个粒度构成多重监控防御体系,该体系一方面可以有效阻止仿冒源地址类攻击,一方面能够通过监控流量来实现基于真实源地址的计费和网管。
IPv6拥有丰富的地址资源,且可以通过建立的地址验证机制解决网络实名制和用户身份溯源问题,在发生网络攻击事件后有利于追查溯源。同时,安全设备可以通过简单的过滤策略对节点进行安全控制,进一步提高网络安全性。
IPv6建立可信互联网体系
此外,在IPv4网络中,黑客攻击的第一步通常是对目标主机及网络进行扫描搜集数据,以此推断出目标网络的拓扑结构及主机开放的服务、端口等信息从而进行针对性地攻击。在IPv6网络中,网络侦察的难度和代价都大大增加,从而进一步防范了攻击,提高了用户终端的安全性。
2、IPv6协议保证了网络层的数据认证、数据完整性及机密性
IPv6通过集成IPsec实现了IP级的安全,IPSec可以提供访问控制、无连接的完整性、数据源身份认证、防御包重传攻击、业务流保密等安全服务,较大的提升了网络层的数据认证、数据完整性及机密性。
3、IPv6的邻居发现协议(NDP)进一步保障传输安全性
IPv4采用的地址解析协议(ARP),存在ARP欺骗等传输安全问题。IPv6协议中采用邻居发现协议(NDP)取代现有IPv4中ARP及部分ICMP控制功能如路由器发现、重定向等,独立于传输介质,可以更方便地进行功能扩展,并且现有的IP层加密认证机制可以实现对NDP协议的保护,保证了传输的安全性。
4、基于IPv6的新型地址结构为我国建立根服务器提供了契机
互联网的顶级域名解析服务由根服务器完成,它对网络安全、运行稳定至关重要。2013年,中国下一代互联网国家工程中心联合日本、美国相关运营机构和专业人士发起"雪人计划",提出以IPv6为基础、面向新兴应用、自主可控的一整套根服务器解决方案和技术体系。 2016年,"雪人计划"在美国、日本、印度、俄罗斯、德国、法国等全球16个国家完成25台IPv6根服务器架设,其中中国部署4台,打破我国没有根服务器的困境。
3.2 面临的安全隐患有哪些
TCP/IP模型中,网络安全分为四个层次:物理层、网络层、传输层和应用层。IPv6虽然增强了自身的安全机制,但IP协议仅是网络层的协议,IPv6协议改变的是IP报头、寻址方式,提高了网络层的安全性,但对其他功能层的安全能力并未产生影响或有所提高,因此,设备仿冒接入网络、应用层攻击导致的漏洞、传输过程中的攻击等仍然存在。
IPv6发展过程中,仍然存在安全漏洞问题:
1、 庞大的地址空间会加大漏洞扫描、恶意主机检测、IDS等安全机制的部署难度;
2、 无状态地址自动配置时,攻击者可能利用冲突地址检测机制实施拒绝服务攻击(DoS);
3、 NDP(邻居发现协议)面临哄骗报文攻击、拒绝服务攻击(DoS)的安全威胁;
4、 IPv6 组播所需的MLD 等组播维护协议不能满足安全的需要,存在机密数据被窃听、对处理MLD 报文的路由转发设备发起拒绝服务攻击(DoS)的安全隐患。
5、IPv4与IPv6的协议转换也是入侵的后门
IETF定义的IPv4到IPv6有三种,Dual-stack Tunnels以及Protocol,在Dual-stack架构中,IPv4与IPv6是共存于Layer 2之上,只是各自使用不同的Ethernet Type.IPv4的Ethernet Type是0x0800,IPv6的Ethernet Type是0x86dd.IP层之上的传输层没有什么变化
与IPv4网络对比,IPv6新特性对常见网络攻击类型的影响: