随着Internet规模的扩大,IPV4地址空间已经消耗殆尽,如今在打开手机app时是不是发现欢迎页的最下方都有一行小字“已支持IPv6”。
根据谷歌发布的全球IPv6统计数据显示,截止2018年11月底,全球IPv6普及率已经超过25.04%,而中国的IPv6普及率仅为2.93%。2019年,无论是运营商还是互联网企业都已经开始大规模普及IPv6,那IPv6究竟是什么呢?
谈到IPv6就不能不说现在使用的IPv4协议。"互联网之父"文顿·瑟夫在1977年创建互联网通信协议"IPv4",让全球电脑可以互相连线。而IP地址是分配给每台电脑、网站或其他联网设备的一系列号码,每个IP地址都是独一无二的。由于IPv4中规定IP地址长度为32位,然而现在物联网的高速发展,使得目前IPv4地址已经告罄。截止到今年6月份,我国固网网民数是7.51亿,移动互联网用户7.24亿,但IPv4地址是3.3845亿个,我国平均每个固网网民人均IPv4地址只有0.45个。
而IPv6采用128位地址长度,可以保证地球上每平方米分配1000多个地址。在IPv6的设计过程中除了一劳永逸地解决了地址短缺问题以外,还考虑了在IPv4中解决不好的其它问题,主要有端到端IP连接、服务质量(QoS)、安全性、多播、移动性、即插即用等。
如果您的企业提供一个公共网站或移动应用程序,那么很可能您的网站在使用IPv6和IPv4时运行得更快。这在一定程度上是因为,服务提供商对IPv4网络连接提供了大量的网络地址转换(NAT)。
运营商缺乏足够的公共IPv4地址,来为所有用户提供唯一的地址,因此他们通过使用大规模NAT技术来引导它们。运营商网络的IPv4流量通常经过一个或多个NAT,并通过集中的运营商级或大型NAT进行回传,其中客户连接竞争TCP/UDP端口空间、连接限制和带宽。所有这些NAT都需要重新计算TCP和UDP报头和校验,这会导致数据包传输延迟。
相比之下,大多数移动和宽带用户现在都在其设备上使用原生IPv6。IPv6数据包不通过运营商NAT系统,而是直接进入互联网。IPv6缺乏NAT意味着TCP和UDP报头校验和不需要像IPv4那样重新计算。
即使IPv6数据包具有更大的头大小和扩展头(更多协议开销),它们也像IPv4一样硬件加速。对于同时支持IPv4和IPv6的系统,Happy Eyeballs算法有助于确定哪种协议更快地工作并选择它,从而有助于改善最终用户体验。
Facebook,LinkedIn,谷歌和其他公司发布的统计数据显示,IPv6的速度更快。
亚太网络信息中心(APNIC)是五个地区互联网注册机构之一,负责监控来自世界各地的IPv4和IPv6数据包的往返时间。其结果表明,除亚洲外,IPv6的延迟低于IPv4。
正如IPv6可以为访问零售网站的客户提高性能一样,它也可以为从企业网络访问互联网的企业用户提高性能。
默认情况下,大多数主机操作系统都支持IPv4和IPv6,因此,如果企业主机连接的企业网络也支持IPv6,则最终用户将自动拥有双协议Internet连接。不幸的是,今天,大多数企业都将这些双协议主机连接到仅支持IPv4的接入网络。
如果企业在其无线接入网络上启用IPv6,他们就可以开始利用IPv6的优势。
IPv6部署应从互联网边缘开始,因此当企业开始实施IPv6部署项目时,应确保其Internet边界安全防御支持IPv6。其中包括防火墙、DNS服务器、负载均衡器、Web应用防火墙(WAF)和云访问安全代理。
一旦外围支持IPv6,下一步就是在核心网络中部署IPv6,然后再部署到最终用户。
当网站使用IPv6时,他们通过观察客户的真实IP地址来获得更大的客户亲密度。当客户连接到web站点时,它会记录他们的IP地址。可以根据威胁情报数据库和信誉过滤器检查该地址,以识别是否是恶意或欺诈的链接。
某些web站点试图使用IP地址作为身份验证的元素。用户名和密码可以与一个IP地址相关联,从而增强人们的信心,让他们相信试图登录的人就是他们所说的那个人,因为他们使用的IP地址与过去相同。
虽然实现IPv6有许多好处,但它也会引起隐私问题,因为没有IPv6 NAT,就有可能捕获真正的客户端设备地址。一些安全管理员担心会使IPv6更容易受到攻击。
似乎揭露客户的真实IP地址在某种程度上损害了安全性,但根据IETF,NAT并不是IPv6所需的外围安全功能。相反,可以通过允许出站连接但阻止未经请求的入站连接的状态防火墙来强制执行外围安全性。因此,即使有人知道最终用户的全局IPv6地址,他们也无法启动与该主机的连接。
IPv6具有一些通过隐藏接口标识符(IID)来保护最终用户隐私的特定方法,IID是唯一标识主机的地址的一部分。组织不希望通过在IID中包含最终用户的设备MAC地址来透露任何个人信息。
方法取决于网络是否使用协议,例如:无状态地址自动配置(SLAAC)或带有隐私扩展的RDNSS或使用稳定SLAAC。
此外,当使用DHCPv6向主机租用IPv6地址时,IID是随机的,从而保留了最终用户的隐私。
接下来太阁小老虎就带大家一起来了解一下IPV6的地址格式。
IPv6配置
有状态地址自动配置
PC 到 R1 之间 使用100 网络 2001:100:1:1::/64
R1 到 ISP 之间 使用12网络 2001:12:1:1::/64
ISP 到 server 之间 使用200 网络, 2001:200:1:1::/64
首先是PC的接口要激活IPV6功能
PC(config)#int e0/0
PC(config-if)#no shutdown
PC(config-if)#ipv6 enable 接口激活 IPv6 功能
激活 IPv6 功能同时 接口拥有一个 link-local 地址
PC自动生成的link-local 地址为 FE80::A8BB:CCFF:FE00:2000
FE80::/10 link-local 地址,自动形成,后 64 位地址有个原则,采用EUI-64:64 扩展通用标识符,基于接口 MAC 地址来推算后 64 位地址。是 MAC 地址,
来看接口的MAC地址,
aabb.cc00.2000 接口 MAC,从中间分开,插入FF.FE
aabb.ccFF.FE.00.2000 添加 FF.FE
在把 MAC 地址从左到右第 7 位进行 0 1 互换, 置 0 位为全局有效
10101010 AA 把第七 bit 0 1 互换 10101000 为 8, A8
A8BB:CCFF:FE00:2000 EUI-64 机制
如果希望修改 link-local 地址,
PC(config)#int e0/0
PC(config-if)#ipv6 address FE80::1 link-local
直接进接口修改地址,不用指定掩码,可以看到地址位 FE80::1
但是下面的 FF02::FF00:1 就是咱们 link-local 地址所对应的被请求节点组播地址
后 24 位地址配置的地址为一个 1,所以组播也是:1.
接口地址改变,所监听的被请求节点组播地址也会改变。
现在可以看到该路由器没有周期性发送 RA,现在只监听了 FF02::1,还会监听 FF02::2.当前 router 没有监听。现在该 router 就是 PC。
PC(config)#ipv6 unicast-routing 起为 IPv6 路由器
现在监听的地址多出一个 FF02::2 ,周期 200 发送一次。
为了跨越网络通信,需要创建 AGUA 地址,
PC(config)#int e0/0
PC(config-if)#ipv6 address 2001:100:1:1::1/64
添加 AGUA 地址也相当于激活接口 IPv6 功能,也并需要敲 IPv6 enable。
R1(config)#int e0/0
R1(config-if)#ipv6 address FE80::2 link-local
R1(config-if)#ipv6 address 2001:100:1:1::2/64
R1(config-if)#no shutdown
当前我们设置的接口地址包含 2 个 IP v6 地址,
现在 ping FE80::1,router 会问通过那个接口 ping 出去
在 V4 环境中 ping 一个地址直接 ping 走了 ,但是在 v6 环境中各种各样的接口都有 linklocal 地址,并且每个 link-local 的地址前缀都是 FE80,所以 router 不能够判断 FE80::1 是 那个网络中的地址,必须完整的指定出接口。PingAGUA 地址不要指定接口。
R1(config)#int e0/1
R1(config-if)#ipv6 address 2001:12:1:1::1/64
R1(config-if)#ipv6 address FE80::1 link-local
R1(config-if)#no shutdown
R1(config-if)#
ISP(config)#int e0/1
ISP(config-if)#ipv6 address 2001:12:1:1::2/64
ISP(config-if)#ipv6 address FE80::2 link-local
ISP(config-if)#no shutdown
ISP(config-if)#
无状态态地址配置
把server 也模拟成 PC,通过自动发送 RS 来自动获得地址,
ISP(config)#ipv6 unicast-routing 起为 IPv6 路由器
ISP(config)#int e0/0
ISP(config-if)#no shutdown
ISP(config-if)#ipv6 address 2001:200:1:1::2/64
ISP(config-if)#ipv6 address FE80::2 link-local
地址配置完毕,在来把 server 模拟为 PC
Server(config)#int e0/0
Server(config-if)#no shutdown
Server(config-if)#ipv6 address autoconfig 通过这个接口主动的发送 RS
Server(config-if)#
现在 server 就自动的获得 AGUA 地址。后 64 位和 link-local 地址一样,都是通过 EUI-64 方 式形成的,并且 PC 会指 ISP 右边接口的 link-local 地址为我的网关,访问外网的时候通过它 作为缺省网关的下一跳。
假设 server 不是 PC,就是 router,会不会学习到地址并且指定网关,
Server(config)#ipv6 unicast-routing
通过敲 ipv6 address autoconfig 也是能够拿到 AGUA 地址的,但是不会指给我发送地址的
网关为网关,需要手工配置,但是想让 ISP 在拿到 AGUA 的同时也拿到网关,
Server(config)#int e0/0
Server(config-if)#no ipv6 address autoconfig
Server(config-if)#ipv6 address autoconfig default 要指定网关必须加 default
路由表出现一条缺省路由,下一跳为 FE80::2, 有了缺省路由才能够进行非直连网络的访问。让 PC 的环回口访问 ISP 的环回口
PC(config)#int lo0
PC(config-if)#ipv6 address 100::100/128 只有一个节点 直接配 128
PC(config-if)#no shutdown
ISP(config)#int lo0
ISP(config-if)#ipv6 address 2::2/128
ISP(config-if)#no shutdown
PC(config)#ipv6 route 2::2/128 ethernet 0/0 FE80::2 写去往 ISP 环回口的静态,目的地 址前缀,掩码,由于 2::2 没有前缀全写,出接口 ,下一跳 link-local 地址,建议指定 link- local。
现在 PC 有 R1 静态了,
R1(config)#ipv6 unicast-routing 开启路由选择功能
R1(config)#ipv6 route 2::2/128 ethernet 0/1 FE80::2 R1 去往 ISP 静态
现在又到 ISP 的去包了,需要回包,
ISP(config)#ipv6 route 100::100/128 ethernet 0/1 FE80::1 ISP 到 R1 回包
R1(config)#ipv6 route 100::100/128 ethernet 0/0 FE80::1 R1 到 PC 的回包路由,
通了 表示静态创建成功。无状态地址配置OK。
知乎号:太阁网络实验室、闫辉
抖音号:571751619
公众号:网络工程师集中营