本文章首发于语雀!
通过各种高科技功能同步到Hajeekn 的博客

IPv6 简介(来自百度百科)

IPv6 是英文“Internet Protocol Version 6”(互联网协议第 6 版)的缩写,是互联网工程任务组(IETF)设计的用于替代IPv4的下一代 IP 协议,其地址数量号称可以为全世界的每一粒沙子编上一个地址 [1] 。
由于 IPv4 最大的问题在于网络地址资源不足,严重制约了互联网的应用和发展。IPv6 的使用,不仅能解决网络地址资源数量的问题,而且也解决了多种接入设备连入互联网的障碍 [1]

IPv6 构成

表示方法

IPv6 的地址长度为 128 位,是 IPv4 地址长度的 4 倍。于是 IPv4 点分十进制格式不再适用,采用十六进制表示。IPv6 有 3 种表示方法
一、冒分十六进制表示法
格式为 X:X:X:X:X:X:X:X,其中每个 X 表示地址中的 16b,以十六进制表示,例如:
ABCD:EF01:2345:6789:ABCD:EF01:2345:6789
这种表示法中,每个 X 的前导 0 是可以省略的,例如:
2001:0DB8:0000:0023:0008:0800:200C:417A→ 2001:DB8:0:23:8:800:200C:417A
二、0 位压缩表示法
在某些情况下,一个 IPv6 地址中间可能包含很长的一段 0,可以把连续的一段 0 压缩为“::”。但为保证地址解析的唯一性,地址中”::”只能出现一次,例如:

  • FF01:0:0:0:0:0:0:1101 → FF01::1101
  • 0:0:0:0:0:0:0:1 → ::1
  • 0:0:0:0:0:0:0:0 → ::

三、内嵌 IPv4 地址表示法
为了实现 IPv4-IPv6 互通,IPv4 地址会嵌入 IPv6 地址中,此时地址常表示为:X:X:X:X:X:X:d.d.d.d,前 96b 采用冒分十六进制表示,而最后 32b 地址则使用 IPv4 的点分十进制表示,例如::192.168.0.1 与::FFFF:192.168.0.1 就是两个典型的例子,注意在前 96b 中,压缩 0 位的方法依旧适用 [9]

报文内容

IPv6报文的整体结构分为 IPv6 报头、扩展报头和上层协议数据 3 部分。IPv6 报头是必选报文头部,长度固定为 40B,包含该报文的基本信息;扩展报头是可选报头,可能存在 0 个、1 个或多个,IPv6 协议通过扩展报头实现各种丰富的功能;上层协议数据是该 IPv6 报文携带的上层数据,可能是ICMPv6报文、TCP报文、UDP 报文或其他可能报文。
IPv6 的报文头部结构如图:

版本号表示协议版本.值为 6
流量等级主要用于 QoS
流标签用来标识同一个流里面的报文
载荷长度表明该 IPv6 包头部后包含的字节数,包含扩展头部
下一报头该字段用来指明报头后接的报文头部的类型,若存在扩展头,表示第一个扩展头的类型,否则表示其上层协议的类型,它是 IPv6 各种功能的核心实现方法
跳数限制该字段类似于 IPv4 中的TTL,每次转发跳数减一,该字段达到 0 时包将会被丢弃
源地址标识该报文的来源地址
目的地址标识该报文的目的地址

扩展头部:IPv6 报文中不再有“选项”字段,而是通过“下一报头”字段配合 IPv6 扩展报头来实现选项的功能。使用扩展头时,将在 IPv6 报文下一报头字段表明首个扩展报头的类型,再根据该类型对扩展报头进行读取与处理。每个扩展报头同样包含下一报头字段,若接下来有其他扩展报头,即在该字段中继续标明接下来的扩展报头的类型,从而达到添加连续多个扩展报头的目的。在最后一个扩展报头的下一报头字段中,则标明该报文上层协议的类型,用以读取上层协议数据 [10]

地址类型

IPv6 协议主要定义了三种地址类型:单播地址(Unicast Address)、组播地址(Multicast Address)和任播地址(Anycast Address)。与原来在 IPv4 地址相比,新增了“任播地址”类型,取消了原来 IPv4 地址中的广播地址,因为在 IPv6 中的广播功能是通过组播来完成的
单播地址:用来唯一标识一个接口,类似于 IPv4 中的单播地址。发送到单播地址的数据报文将被传送给此地址所标识的一个接口
组播地址:用来标识一组接口(通常这组接口属于不同的节点),类似于 IPv4 中的组播地址。发送到组播地址的数据报文被传送给此地址所标识的所有接口
任播地址:用来标识一组接口(通常这组接口属于不同的节点)。发送到任播地址的数据报文被传送给此地址所标识的一组接口中距离源节点最近(根据使用的路由协议进行度量)的一个接口。
IPv6 地址类型是由地址前缀部分来确定,主要地址类型与地址前缀的对应关系如下:

地址类型地址前缀(二进制)IPv6 前缀标识
单播地址未指定地址00…0(128 bits)::/128
环回地址00…1(128 bits)::1/128
链路本地地址1111111010FE80::/10
唯一本地地址1111 110FC00::/7

(包括 FD00::/8 和
不常用的 FC00::/8) |
| | 站点本地地址(已弃用,被唯一本地地址代替) | 1111111011 | FEC0::/10 |
| | 全局单播地址 | 其他形式 | - |
| 组播地址 |

| 11111111 | FF00::/8 |
| 任播地址 |

| 从单播地址空间中进行分配,使用单播地址的格式 | |

[11]

单播地址

IPv6 单播地址与 IPv4 单播地址一样,都只标识了一个接口。为了适应负载平衡系统,RFC3513 允许多个接口使用同一个地址,只要这些接口作为主机上实现的 IPv6 的单个接口出现。单播地址包括四个类型:全局单播地址、本地单播地址、兼容性地址、特殊地址
一、全局单播地址:等同于 IPv4 中的公网地址,可以在 IPv6 Internet 上进行全局路由和访问。这种地址类型允许路由前缀的聚合,从而限制了全球路由表项的数量
二、本地单播地址:
链路本地地址和唯一本地地址都属于本地单播地址,在 IPv6 中,本地单播地址就是指本地网络使用的单播地址,也就是 IPV4 地址中局域网专用地址。每个接口上至少要有一个链路本地单播地址,另外还可分配任何类型(单播、任播和组播)或范围的 IPv6 地址
(1)链路本地地址(FE80::/10):仅用于单个链路(链路层不能跨 VLAN),不能在不同子网中路由。结点使用链路本地地址与同一个链路上的相邻结点进行通信。例如,在没有路由器的单链路 IPv6 网络上,主机使用链路本地地址与该链路上的其他主机进行通信
(2)唯一本地地址(FC00::/7):唯一本地地址是本地全局的,它应用于本地通信,但不通过 Internet 路由,将其范围限制为组织的边界
(3)站点本地地址(FEC0::/10,新标准中已被唯一本地地址代替)
三、兼容性地址:在 IPv6 的转换机制中还包括了一种通过 IPv4 路由接口以隧道方式动态传递 IPv6 包的技术。这样的 IPv6 结点会被分配一个在低 32 位中带有全球 IPv4 单播地址的 IPv6 全局单播地址。另有一种嵌入 IPv4 的 IPv6 地址,用于局域网内部,这类地址用于把 IPv4 结点当作 IPv6 结点。此外,还有一种称为“6to4”的 IPv6 地址,用于在两个通过 Internet 同时运行 IPv4 和 IPv6 的结点之间进行通信
四、特殊地址:包括未指定地址和环回地址。未指定地址(0:0:0:0:0:0:0:0 或::)仅用于表示某个地址不存在。它等价于 IPv4 未指定地址 0.0.0.0。未指定地址通常被用做尝试验证暂定地址唯一性数据包的源地址,并且永远不会指派给某个接口或被用做目标地址。环回地址(0:0:0:0:0:0:0:1 或::1)用于标识环回接口,允许节点将数据包发送给自己。它等价于 IPv4 环回地址 127.0.0.1。发送到环回地址的数据包永远不会发送给某个链接,也永远不会通过 IPv6 路由器转发 [12]

组播地址

IPv6 组播地址可识别多个接口,对应于一组接口的地址(通常分属不同节点)。发送到组播地址的数据包被送到由该地址标识的每个接口。使用适当的组播路由拓扑,将向组播地址发送的数据包发送给该地址识别的所有接口。任意位置的 IPv6 节点可以侦听任意 IPv6 组播地址上的组播通信。IPv6 节点可以同时侦听多个组播地址,也可以随时加入或离开组播组。
IPv6 组播地址的最明显特征就是最高的 8 位固定为 1111 1111。IPv6 地址很容易区分组播地址,因为它总是以 FF 开始的 [12]

任播地址

一个 IPv6 任播地址与组播地址一样也可以识别多个接口,对应一组接口的地址。大多数情况下,这些接口属于不同的节点。但是,与组播地址不同的是,发送到任播地址的数据包被送到由该地址标识的其中一个接口。
通过合适的路由拓扑,目的地址为任播地址的数据包将被发送到单个接口(该地址识别的最近接口,最近接口定义的根据是因为路由距离最近),而组播地址用于一对多通信,发送到多个接口。一个任播地址必须不能用作 IPv6 数据包的源地址;也不能分配给 IPv6 主机,仅可以分配给 IPv6 路由器 [13]

开启 IPv6

就目前来说中国电信、移动、联通等运营商,2019 年已经完成了门户网站、网站营业厅、掌上营业厅 APP、邮箱 APP 的 IPv6 的深度改造。根据最新监测数据,基础电信企业 30 款自营移动互联网应用平均 IPv6 流量占比超过 71%
大多数地区都实现了覆盖,但是你的宽带默认是不启用 IPv6 的,我们是需要手动开启的
本文以移动宽带做演示

光猫配置(创维 DT741-csf)

打开光猫配置界面
一般地址都是 192.168.1.1
移动光猫超级管理员:
账号: CMCCAdmin
密码: aDm8H%MdA
登陆后进入 网络-宽带设置-Internet 连接
image.png
在连接名称下拉框中找到 4_INTERNET_R_VID_41 (根据实际情况选择)
image.png
选定后找到
全局地址获取方式、网关获取方式、DNS 获取方式、前缀获取方式
image.png
打开 F12 开发者工具
image.png使用小箭头定位到下拉框
image.png
手动将 disabled 删除
image.png
将全局地址获取方式、网管获取方式、DNS 获取方式改为 SLAAC
前缀获取方式改为 DHCPv6
image.png
然后点击修改按钮就保存了

检查 IPv6 是否设置成功

进入 状态 - 网络侧信息 - IPv6 连接信息
如果类似这样image.png就说明获取成功了

路由器配置(Xiaomi AX9000 演示)

进入路由器网关
一般都是 192.168.0.1
有些时候不一样,比如小米是 192.168.31.1
进入后选择常用设置 - 上网设置
image.png
往下翻在 IPV6 网络设置处打勾
image.png
上网方式依照环境选

  • 路由器拨号选 Native
  • 光猫拨号路由器 DHCP 选 NAT6
  • 当运营商下发了静态 IPv6 时选择 静态 IPv6 并按照运营商提供的信息填写,否则根据环境用上面的
  • image.png

我这边是因为移动来升级过光猫而且给我改成了光猫拨号(气死 👿,而且改成桥接还没网络)
所以我就选择 NAT6
DNS 自填写
我用的是 阿里 DNS
配置完后记得点击应用
应用完后往上翻
在上网信息里出现了 IPv6 信息就说明成功了
image.png

参考文献