侧边栏壁纸
  • 累计撰写 262 篇文章
  • 累计创建 139 个标签
  • 累计收到 16 条评论

目 录CONTENT

文章目录

IPv6

Sherlock
2024-07-17 / 0 评论 / 0 点赞 / 47 阅读 / 16275 字 / 编辑
温馨提示:
本文最后更新于 2024-08-01,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

2024年7月2日工业和信息化部办公厅、中央网信办秘书局联合发布了:关于开展“网络去NAT”专项工作 进一步深化IPv6部署应用的通知
通知内容参见:工信厅联通信函〔2024〕263号

1、IPv6的诞生

IPv6是Internet Protocol Version 6的缩写,是IETF设计的用于替代现行版本IP协议(IPv4)的下一代互联网协议。

是网络层协议的第二代标准协议,也被称为IPng(IP Next Generation),它所在的网络层提供了无连接的数据传输服务。

IETF从1990年开始规划IPv4的下一代协议IPng,以解决IP地址短缺问题并扩展功能。

传统的IPv4地址长度为32位,只能提供不到40亿个可用全球IP地址,并已在2011年分配完毕。
IPv6诞生的使命就是替代IPv4,IPv6的地址长度为128位,其所拥有的地址数量为2的128次方个,远远超过IPv4所能承载的地址数量。

IPv6以其简化的报文头格式、充足的地址空间、层次化的地址结构、灵活的扩展头、增强的邻居发现机制将在未来的市场竞争中充满活力。

IETF国际互联网工程任务组(The Internet Engineering Task Force)是一个公开性质的大型民间国际团体。主要任务是负责互联网相关技术规范的研发和制定,当前绝大多数国际互联网技术标准出自IETF。

1.1 什么是IPv6地址

IPv6地址由网络前缀接口标识两个部分组成。
网络前缀有n位,相当于IPv4地址中的网络ID;接口标识有(128-n)比特,相当于IPv4地址中的主机ID。

IPv4&IPv6.png

1.2 IPv6 地址标识方法

  • 首选格式(冒分十六进制表示法)

    最严谨的表示方法,但空值很多。

    ping6 2402:4e00:0040:0040:0000:0000:2:3b6

  • 压缩格式(0 位压缩表示法)

    将 将前置 0 去掉 0040:0040 -> 40:40
    连续多个 0 以 :: 替代,最多出现 1 次 :: 0000:0000 -> ::

    ping6 2402:4e00:40:40::2:3b6
    注:在 ping6 程序中可以看到最后都转换为 压缩格式。

  • 内嵌 IPv4 地址的 IPv6 地址格式

    为了实现 IPv4-IPv6 互通,IPv4 地址会嵌入 IPv6 地址中,前 96 位采用 冒分十六进制 表示,最后 32 位 依然采用 IPv4 的 点分十进制
    格式:X:X:X:X:X:X:d.d.d.d
    例如:::192.168.0.1 和 ::FFFF:192.168.0.1

  • 其他

    • 本地回环地址

      ping6 0:0:0:0:0:0:0:1

1.3 IPv6 子网

参考:IPv6 Subnetting

网络前缀

IANA IPv6 Special-Purpose Address Registry 中我们可以找到这些前缀的分配归属。

1.4 和IPv4的区别

IPv4&IPv6.png

1.5 部署IPv6对现有网络和业务的影响

IPv6对网络性能的影响
在路由器上开启IPv6技术对高性能的路由器影响非常小;一般情况下,部署IPv6对网络传输时延丢包率没有影响;在某个路由器出现故障的情况下,IPv6对更新信息,计算最佳的路径的效率影响很小。

IPv6对网络维护的影响
在使用IPv6的协议过程中,增加了工程师的维护工作量和技能要求,但IPv6对网络维护的冲击比较小,具备维护IPv4能力的工程师可以在较短时间内掌握IPv6。

IPv6对业务和应用的影响
在IPv6网络的现有网络业务和应用没有影响,您可以额外获得访问IPv6资源的能力。部署IPv6往往需要调整域名系统等业务系统,不正确的配置或有缺陷的软件将影响您的用户体验。

IPv6与域名系统的关联:
IPv6网络中,每一台网络设备都是由IPv6地址来标识的,只有获得了目的地网络设备的IPv6地址,才能成功进行访问。因为记住128位的IPv6地址是相当困难的,所以为IPv6网络建立了一套IPv6域名系统。这样,在对网络设备进行访问操作时,您可以直接使用便于记忆的域名,由网络中的服务器来将域名解析为IPv6地址。

例如,Google提供给大众的公共域名解析服务器可以将您所输入的域名映射为IPv6地址,其自身的IPv6地址如下:
2001:4860:4860::8888
2001:4860:4860::8844

IPv6 和 IPv4 不兼容,IPv4 网络下不能访问 IPv6 网站。

2.IPv6优势

    1. 地址更多

    • IPv6具有更大的地址空间。IPv6协议不再依赖地址翻译;

    • 未来可承载真正的万物互联。

  • 2.更加安全

    • IPv6设计之初全面考虑了支持IPSec框架,可在经过配置和使用IPSec协议后,实现在点对点终端之间授权和加密通信;

    • 启用了隐私扩展,终端地址随机变化;

    • 对于地址前缀长度为64的网络,一个子网中存在2的64次方个IPv6地址,以攻击者每秒扫描百万地址的速度计算,需要50万年才能遍历所有的地址。

    1. 更加简单

    • 新增无状态地址自动配置

    • 用户无感知:通过上游(网关)设备告知IPv6地址范围,终端生成完整IPv6地址并完成冲突检测后即可使用。

    1. 更加便捷

    • 相当于拥有了自己的公网IP地址,方便了随时随地直接远程访问家庭网络存储设备、智能终端、个人电脑等。

3.IPv6部署情况

3.1 国内支持IPv6访问的部分网站

3.2 支持IPv6的常用APP应用

微信、QQ、支付宝、淘宝、京东、哔哩哔哩等。

3.3 DoH 与 DoT 说明

  • DoT全称是DNS over TLS,默认端口:853

    它使用 TLS 协议来传输 DNS 协议。
    TLS 协议是目前互联网最常用的安全加密协议之一,我们访问 HTTPS 的安全基础就是基于 TLS 协议的。
    相比于之前使用无连接无加密的 UDP 模式, TLS 本身已经实现了保密性与完整性。

  • DoH全称是DNS over HTTPS

    它使用 HTTPS 来传输 DNS 协议。
    DoH 的安全原理与 DoT 一样,他们之间的区别只在于:DoH 有了 HTTPS 格式封装,更加通用。

DoT 在专用端口上通过 TLS 连接 DNS 服务器,而 DoH 是基于使用 HTTPS 应用层协议,将查询发送到 HTTPS 端口上的特定 HTTP 端点。
这里造成的外界感知就是端口号的不同,DoT 的端口号是853,DoH 端口号443

3.4 IPv6 DNS

  • 阿里公共IPv6 DNS

    • 2400:3200::1

    • 2400:3200:baba::1

    也提供了 DoT/DoH 服务器
    DoH https://dns.alidns.com/dns-query
    DoT dns.alidns.com

  • 腾讯 DNSPod

    • 2402:4e00::

    也提供了 DoT/DoH 服务器
    DoH https://doh.pub/dns-query
    DoH(IP版) https://1.12.12.12/dns-query
    DoH(IP版) https://120.53.53.53/dns-query
    DoH (国密 SM2)基于腾讯云政企国密解决方案 https://sm2.doh.pub/dns-query
    DoT dot.pub
    DoT(IP版) 1.12.12.12 120.53.53.53

  • 百度

    • 2400:da00::6666
  • 中国联通 IPv6 DNS

    • 2408:8888::8
    • 2408:8899::8
  • 中国电信 IPv6 DNS

    • 240e:4c:4008::1
    • 240e:4c:4808::1
  • 中国移动 IPv6 DNS

    • 2409:8088::a
    • 2409:8088::b
  • 下一代互联网北京研究中心

    • 240c::6666
    • 240c::6644
  • 中国互联网信息中心 CNNIC

    同时支持 IPv4 和 IPv6

    • 2001:dc7:1000::1
  • 中科院网络信息中心

    • 2001:cc0:2fff:1::6666
  • 清华大学

    • 2001:da8:ff:305:20c:29ff:fe1f:a92a
  • Google Public IPv6 DNS

    • 2001:4860:4860::8888
    • 2001:4860:4860::8844
  • Cloudflare IPv6 DNS

    • 2606:4700:4700::1111
    • 2606:4700:4700::1001
  • IPv4 公共 DNS

    • Google 公共 DNS
      • 8.8.8.8
      • 114.114.114.114
    • 腾讯 119.29.29.29
    • 阿里

      24年9月30日免费版开始限速了

      • 223.5.5.5
      • 223.6.6.6

推荐使用 阿里公共DNS + 自己宽带运行商提供的DNS 组合。


更多DNS可参考:

4.开启IPv6

路由器+终端需要支持IPv6,并且需要开启IPv6协议支持。

4.1 个人宽带开启IPv6

一般就是:光猫配置桥接 + 路由器配置拨号 + 路由器打开IPv6

需光猫支持,个人家庭宽带貌似师傅默认给开了桥接,是使用的路由器拨号。
而住处的宽带就无法配置为桥接。

可参考:https://ipw.cn/doc/ipv6/user/enable_ipv6.html

4.2 如何在路由器中设置IPv6

以华硕固件为例,和 外部网络(WAN) > 互联网连接 > WAN联机类型 有关:

  • WAN联机类型为 PPPoE, 在IPv6联机类型请选择 Native

    接口:PPP
    设置成功后示例:
    内部网络 IPv6 地址
    2408:8221:942e:8450::1
    内部网络前缀长度
    60
    内部网络 IPv6 前缀
    2408:8221:942e:8450::
    自动配置设置
    Stateless

    问题记录:
    家中梅林固件路由器设置成功后,过了几天设备都获取不到ipv6地址了,但是路由器本身能获取到。
    参考大神的方法解决:AC68U路由器使用KOOLSHARE梅林固件开启使用IPV6

    临时解决执行:

    ip -6 route add 0::/0 dev ppp0
    ip -6 route add default dev ppp0 metric 1
    

    彻底解决需将以上命令写入/jffs/scripts/wan-start

  • WAN联机类型为 动态IP, 在IPv6联机类型请选择 Passthrough

  • WAN联机类型为 静态IP, 在IPv6联机类型请选择 静态 IPv6

    示例:
    外部网络IPv6地址
    2001:B030:2309:FF00::0001/64
    外部网络IPv6网关
    2001:B030:2309:FF00::FFFF/64
    内部网络IPv6地址
    2001:B030:2309:0000::/56

以下IPv6类型,需要与网络运营商(ISP)确认需要填写的信息。

  • FLET's IPv6 service 是日本网络运营商(ISP)使用的IPv6服务的一种。更多信息请参考 FLET'S HIKARI Official Website (flets.com) 或 如何设置IPv6 - FLET'S IPv6 service?
  • Tunnel 6to4 是一种用于从 IPv4 迁移到 IPv6 的互联网转换机制,允许通过 IPv4 网络(通常是 IPv4 互联网)传输 IPv6 数据包,而无需配置显式隧道。
  • Tunnel 6in4 是一种互联网转换机制,用于从互联网协议版本4 (IPv4)迁移到 IPv6。
  • Tunnel 6rd (Rapid Deployment) 是一种 IPv6 隧道技术,类似于 6to4 隧道。它是无状态的,并将 IPv6 数据包封装到 IPv4数据包中。

4.3 IPv6的自动配置技术

在IPv6的自动配置中,分为两种技术

  • 一种是传统的有状态(stateful),典型代表就是与IPv4时代相对应的 DHCPv6,

  • 一种是IPv6的无状态(stateless)自动配置,典型代表是 Radvd。这是IPv6协议的一个突出特点:支持网络节点的地址自动配置.

    在无状态地址自动配置方式下,网络接口接收路由器宣告的全局地址前缀,再结合接口ID得到一个可聚集全局单播地址。
    在有状态地址自动配置的方式下,主要采用动态主机配置协议(DHCP),需要配备专门的DHCP服务器,网络接口通过客户机/服务器模式从DHCP服务器处得到地址配置信息。
    具体来说,以RADVD为代表的无状态自动配置不需要消耗很多机器资源,也不像传统DHCP一样需要维护一个本地数据库来维护地址分配状态,他只是进行广播前缀地址,客户端收到这种广播后再自己使用EUI64算法生成全球唯一的IPv6地址,进行自我配置。

    因此,RADVD不能进行NTP/DNS等其他传统DHCP服务器所能进行的配置。甚至严格的说,它只进行路由广播,地址都是客户端自己根据算法和规范在配置。
    DPCHv6就完全相反,地址池的计算,管理全部是服务器端在做,客户端只是简单的从服务器端取得服务器端已经计算好的地址和其他设置应用到自己身上。

5.如何确认本机获取了IPv6地址

IPv6 连接情况检测

运营商一般会直接给外网可用的IPv6地址,当前 80/443端口自然是不能使用的,其余的可以使用。
win10电脑下获取到的IPv6地址示例

一般不需要额外配置(如果开启防火墙的需要放行)

连接特定的 DNS 后缀 . . . . . . . : lan
IPv6 地址 . . . . . . . . . . . . : 2408:8221:942e:8450:2310:c51a:6985:75d7
临时 IPv6 地址. . . . . . . . . . : 2408:8221:942e:8450:3072:201e:40a1:9c5c
本地链接 IPv6 地址. . . . . . . . : fe80::f3d1:f674:c047:53a1%6
IPv4 地址 . . . . . . . . . . . . : 192.168.12.7
子网掩码  . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . : fe80::b27f:b9ff:fea3:692c%6

NAS获取到的IPv4示例

IPv6设置为自动获取就行了
2024-07-27 但是经常重启后就没有IPv6地址了,解决办法见后文。

2408:8221:942e:8450:211:32ff:fe87:9e8b/64

前面的是IPv6地址,/64是前缀长度。地址中的位数是固定的。
所以 /64 表示 128 位 IPv6 地址的前 64 位是固定的,其余位(在本例中为 64)是灵活的,你可以使用所有这些位。
这意味着当你的 ISP 给你分配 /64 时,他们给您 2^64 个地址(即 18,446,744,073,709,551,616 个地址)。

NAS IPv6 地址丢失解决:

使用定时任务每10分钟执行以下脚本

#!/bin/bash
ipv6_addr_count=`ifconfig | grep -E -c "2408|2409|240a|240e"`
if [ $ipv6_addr_count -lt 1 ]; then
    echo "IPV6地址数量小于1 进行刷新"
    /usr/syno/sbin/synonet --set_ip -6 eth0 flush
    synonetdtool --refresh-gateway -6
else
    echo "IPV6地址数量不小于1 不进行刷新"
fi

联通的IPV6地址是2408开头 2048:8000::/20
移动的IPV6地址是2409开头 2049:8000::/20
电信的是IPV6地址是240e开头 240e::/20

fe80前缀为内网IPV6,大概率没获取成功

6.如何确认本机能通过IPv6被访问到

IPv6 被访问能力网页ping测试 https://ipw.cn/ipv6ping/

IPv6网站检测
IPv6 DNS查询

7.测试和使用

访问IPv4/IPv6双栈站点(如:ipw.cn),如果返回IPv6地址,则IPv6访问优先,否则为 IPv4 地址。

  • 浏览器访问
    • http://[2402:4e00:1013:e500:0:9671:f018:4947]/
    • http://[2402:4e00:1013:e500:0:9671:f018:4947]:80/
  • ping
    • Windows: ping -6 ipw.cn
    • macOS 或 Linux: ping6 ipw.cn
  • curl

    如果同一个 host 同时解析到 IPv6 和 IPv4 地址,即 IPv4/IPv6 双栈,则 curl 使用参数可指定 IP 协议的版本。
    -4, --ipv4-6, --ipv6

    • macOS curl [2402:4e00:1013:e500:0:9671:f018:4947]
      curl http://[2402:4e00:1013:e500:0:9671:f018:4947]/
    • Linux curl -g http://[2402:4e00:1013:e500:0:9671:f018:4947]/

      需要增加 -g 参数,否则会提示 curl: (3) [globbing] error: bad range specification after pos。

    • 指定 IPv4/IPv6 curl -4 test.ipw.cncurl -6 test.ipw.cncurl 4.ipw.cncurl 6.ipw.cn
  • telnet
    • telnet -6 2402:4e00:1013:e500:0:940e:29d7:3443 80

服务器 IPv6 Ping 失败可能原因:

  • 服务器未开启 IPv6,请参考 网站开启 IPv6 的三种方式
  • 服务器已开启 IPv6,但防火墙(又名安全组)未对源地址是 IPv6 地址(::/0)的 ICMPv6协议 开放访问

8.域名解析IPv6

域名解析的AAAA记录对应 IPv6 IP地址

9.DHCPv6-PD

DHCPv6-PD(Prefix Delegation,前缀分配)是DHCPv6的扩展,传统的DHCPv6注重的是将地址等网络配置参数从服务器端传递给IPv6客户主机,而DHCPv6-PD注重的是前缀分配,即PD服务器端将一个子网范围的前缀地址段以及DNS等其他网络配置信息下发给PD客户端,这就意味PD服务器下发的是一个“子网地址段”,而不是具体的可以直接供主机使用的IPv6地址。

举个例子,PD服务器可以将2022:da8::/60前缀通过某个IPv6接口下发给PD客户端,同时一般会在PD客户端的上联设备上生成相应的路由。PD客户端收到该前缀后,可以在本地IPv6接口上动态使用该前缀的/64子网地址。

参考:DHCPv6 PD工作原理

10.开发网站开启 IPv6

参考:https://ipw.cn/doc/ipv6/server/website_enable_ipv6.html


TODO

NAT44

DHCPv6


参考:IPv6 工具箱使用

0
ip
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区