查看原文
其他

这几个 IPv6 问题,你懂了吗


来源:网络工程师阿龙


1、现在是IPv4网络,IPv6现在部署的话需要做些什么?

现在是 IPv4 网络,没有必要也不可能所有节点同时升级成 IPv6。在部署 IPv6 的时候可以逐步过渡,并且尽量使用一些技术使得网络升级变得比较平滑。在从 IPv4 转换到 IPv6 过程中常使用的技术有:

(1)双栈技术:即设备或者终端同时支持IPv4和IPv6的协议栈,使得设备能在ipv4和ipv6环境下都正常工作(所有设备都需要支持双栈)

(2)隧道:解决ipv6"孤岛"问题

<1>手工隧道:需要手工指定隧道的终点

a、IPv6 over IPv4手动隧道

直接把IPv6报文封装在IPv4报文中。边界设备必须是支持双栈的设备,中间的IPv4设备按照正常包转发进行处理

b、GRE隧道

把IPv6报文封装在GRE报文中,GRE前再加上IPv4的报头

GRE相对ipv6 over ipv4隧道多了4byte的GRE头部,封装和解封带来的开销相对来说比较大

<2>自动隧道:可以自动获得隧道终点的IPv4地址

a、6to4

把终点放在IPv6地址的第2、3块

tunnel地址的格式:2002:32bit ipv4 address ::x/64

写两条静态路由:

2002::/16 tunnel

目标网络 下一跳:为目标网络的tunnel口地址(2002:ipv4 address::x)

(3)NAT-PT:实现IPv6网络的主机和IPv4主机的互访

<1> 静态映射的NAT-PT机制

<2>动态映射的NAT-PT机制:需要建立地址池

<3>NAPT-PT机制:不同的IPv6地址转换时,可以对应同一个IPv4地址,通过端口号来区分不同的IPv6主机,从而使多个IPv6主机能共享一个IPv4地址完成转换



2、无状态自动配置和有状态自动配置的优缺点?有哪些特殊地址?


(1)无状态自动配置

IPv6无状态地址配置方式是目前广泛采用的IPv6地址自动配置方式。配置了该协议的主机只需相邻设备开启IPv6路由通告功能,即可以根据通告报文包含的前缀信息自动配置本机地址

无状态地址配置方案中设备并不记录所连接的IPv6主机的具体地址信息,可管理性差。而且当前无状态地址配置方式不能使IPv6主机获取DNS服务器的IPv6地址等配置信息,在可用性上有一定缺陷

(2)有状态自动配置

与其他IPv6地址分配方式(手工配置、通过路由器通告消息中的网络前缀无状态自动配置等)相比,DHCPv6具有以下优点:

<1>更好地控制IPv6地址的分配。DHCPv6方式不仅可以记录为IPv6主机分配的地址,还可以为特定的IPv6主机分配特定的地址,以便于网络管理。

<2>DHCPv6支持为网络设备分配IPv6前缀,便于全网络的自动配置和网络层次性管理。

<3>除了为IPv6主机分配IPv6地址/前缀外,还可以分配DNS服务器IPv6地址等网络配置参数

(3)特殊地址

<1>未指定地址

0:0:0:0:0:0:0:0/128或者::/128

表示某个接口或者节点没有ip地址

<2> 环回地址

0:0:0:0:0:0:0:1/128或者::1/128

与ipv4中的127.0.0.1的作用相同

用于测试协议栈是否正常工作



3、IPv6配置ipv6地址的方式有哪些?


(1)手工配置

(2)无状态自动配置

通过"路由器发现"来实现向本网段通告网络前缀,当设备收到网络前缀时,通过收到的网络前缀和eui-64来生成一个ipv6地址

IPv6主机无状态自动配置过程:

<1>根据接口标识产生链路本地地址

<2>发出邻居请求,进行重复地址检测

<3>如地址冲突,则停止自动配置,需要手工配置

<4>如不冲突,链路本地地址生效,节点具备本地链路通信能力

<5>主机会发送RS报文(或接收到设备定期发送的RA报文)

<6>根据RA报文中的前缀信息和接口标识得到IPv6地址

(3)有状态自动配置(DHCPv6组播地址:FF02::1:2)

一般通过DHCPv6来实现,DHCPv6又分为有状态自动配置和无状态自动配置两种:

a、DHCPv6有状态自动分配


DHCPv6四步交互地址分配过程如下:

<1>DHCPv6客户端发送Solicit报文,请求DHCPv6服务器为其分配IPv6地址和网络配置参数。

<2>如果Solicit报文中没有携带Rapid Commit选项,或Solicit报文中携带Rapid Commit选项,但服务器不支持快速分配过程,则DHCPv6服务器回复Advertise报文,通知客户端可以为其分配的地址和网络配置参数。

<3>如果DHCPv6客户端接收到多个服务器回复的Advertise报文,则根据Advertise报文中的服务器优先级等参数,选择优先级最高的一台服务器,并向所有的服务器发送Request组播报文,该报文中携带已选择的DHCPv6服务器的DUID。

<4>DHCPv6服务器回复Reply报文,确认将地址和网络配置参数分配给客户端使用

b、DHCPv6无状态自动分配


DHCPv6无状态工作过程如下:

<1>DHCPv6客户端以组播方式向DHCPv6服务器发送Information-Request报文,该报文中携带Option Request选项,指定DHCPv6客户端需要从DHCPv6服务器获取的配置参数。

<2>DHCPv6服务器收到Information-Request报文后,为DHCPv6客户端分配网络配置参数,并单播发送Reply报文,将网络配置参数返回给DHCPv6客户端。DHCPv6客户端根据收到Reply报文提供的参数完成DHCPv6客户端无状态配置。



4、EUI-64是什么?


(1)IEEE EUI-64规范是将接口的MAC地址转换为IPv6接口标识的过程。MAC地址的前24位为厂家标识,后24位为扩展标识符。高7位是0表示了MAC地址本地唯一。转换的第一步将FFFE插入MAC地址的厂家标识和扩展标识符之间,第二步将高7位的0改为1表示此接口标识全球唯一。这种由MAC地址产生IPv6地址接口标识的方法可以减少配置的工作量,尤其是当采用无状态地址自动配置时,只需要获取一个IPv6前缀就可以与接口标识形成IPv6地址。但是使用这种方式最大的缺点是任何人都可以通过二层MAC地址推算出三层IPv6地址

(2)串行接口会借用以太网接口的mac地址



5、link-local地址是怎么产生的?它的作用是什么?对比IPv4说一下它存在的重要性


(1)链路本地地址是IPv6中的应用范围受限制的地址类型,只能在连接到同一本地链路的节点之间使用。它使用了特定的本地链路前缀FE80::/10(最高10位值为1111111010),同时将接口标识添加在后面作为地址的低64比特。

(2)当一个节点启动IPv6协议栈时,启动时节点的每个接口会自动配置一个链路本地地址(其固定的前缀+EUI-64规则形成的接口标识)。这种机制使得两个连接到同一链路的IPv6节点不需要做任何配置就可以通信。所以链路本地地址广泛应用于邻居发现,无状态地址配置等应用

(3)作用:

用于本地链路通信

用于路由器发现(无状态自动配置)

用于建立协议的邻居

用于路由条目的下一跳



6、IPv6报头有哪些字段?哪个是表示优先级的?


基本报头40bytes:

<1>version(4bits):版本

<2>Traffic class(8bits):流分类,跟ipv4报头的tos字段功能一样

<3>Flow label(20bits):流标签,如果两个包的流标签一样,则表示是同一数据流

<4> Payload length(16bits):有效负载长度。有效载荷是指紧跟IPv6报头的数据报的其它部分(即扩展报头和上层协议数据单元)

<5>Next header(8bits):下一个报头。该字段定义紧跟在IPv6报头后面的第一个扩展报头(如果存在)的类型,或者上层协议数据单元中的协议类型。

<6>Hop limit(8bits):类似于ipv4的ttl

<7>sourou address(128bits):源地址

<8>destination address(128bits):目的地址

traffic class表示优先级



7、IPv6的移动?

分为3个阶段

(1)代理发现

(2)注册阶段

(3)隧道建立



8、IPv4可不可以开发无状态自动配置?

无状态自动配置就是通过某种特定(RA)的报文通告本网段的网络前缀,客户机收到网络前缀后根据特定的算法算出主机号(接口id)。在ipv4中是完全可以实现的,但是可能会经常出现问题,因为ipv4的地址空间很小,分配网络前缀后,主机算出来的主机号可能存在冲突,网络中可能会存在大量的地址冲突


任播地址和单播地址使用相同的地址空间

配置时必须标明任播地址,来区别单播和任播地址

任播地址不能当组播源,因为路由器收到IP报文后不知道此地址是单播还是任播。

子网任播地址:主机为全0,主机访问这个任播地址会访问到属于这个子网里离主机最近的一个路由器。



后台回复“加群”,带你进入高手如云交流群


推荐阅读:

图解一致性哈希算法,看这文就够了!

Linux操作系统,为什么需要内核空间和用户空间?

网络故障排除工具 | 快速定位网络故障

一文详解 FTP、FTPS 与 SFTP 的原理

一文读懂容器网络发展

10大热门Kubernetes新平台和工具

大部分人都逛的技术网站

Linux服务器高并发调优实战

脚本实现邮件监控Linux系统的内存

5 分钟看懂 HTTP 3

一文搞懂CDN加速原理

Linux used 内存到底哪里去了?

免费下载!《阿里工程师的自我修养》

阿里云深入浅出K8s与CDN排坑指南免费领取

5分钟给你讲清楚Kubernetes

Linux常用命令 &  实用命令万字总结

容易被遗忘的10个Linux命令,很实用!

经典!服务端TCP连接的TIME_WAIT过多

8 个问题彻底搞透 DNS 协议

三张图彻底搞懂iptables和netfilter

故障排查:K8s中Pod无法正常解析域名

网络排错大讲解~

HTTP/3 原理实战

OVS 和 OVS-DPDK 对比

微软出品的最新K8S学习指南3.0下载



喜欢,就给我一个“在看”



10T 技术资源大放送!包括但不限于:云计算、虚拟化、微服务、大数据、网络、Linux、Docker、Kubernetes、Python、Go、C/C++、Shell、PPT 等。在公众号内回复「1024」,即可免费获取!!

: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存