前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >你为什么需要IPv6?如何正确配置和使用IPv6

你为什么需要IPv6?如何正确配置和使用IPv6

作者头像
用户1160092
发布2024-11-21 19:53:47
发布2024-11-21 19:53:47
3.4K00
代码可运行
举报
文章被收录于专栏:MUM笔记MUM笔记
运行总次数:0
代码可运行

为什么需要IPv6

技术背景

关于这个问题,随便在搜索引擎一搜,得到的答案都是IPv4地址不够用了, 然后IPv6拥有比IPv4更大的地址空间,能容纳的网络设备更多。

关于IPv4的地址,参考这篇文章,说了全球IPv4地址怎么分配的,这里说了中国分到的IPv4地址约为3.9249左右,约占整个IPv4地址空间的8%。按说我们人口这么多,不应该只有这么点,但实际就是这样,这暴露出我们早期在互联网领域的话语权不够。

随着我们的互联网发展越来越迅速,这个地址远远不够:单说我们的智能手机数量就超过这个这个数。所以在IPv4时代,我们采用一种折中技术:NAT技术来实现大量设备的网络接入。简单来说就是,多个设备共用一个IPv4的IP。

但NAT方案严重制约了我们的互联网发展,最典型的例子,对我们个人来说,你在家里面部署了一个NAS,想要随时访问,因为没有公网IP,就访问不了,以前还可能打个电话给运营商分个公网IPv4地址给你,现在都分不了了。对整个国家来说,我们目前的人工智能、云计算、大数据、物联网等领域,都需要大量的IP地址,IPv4地址远远不够,而IPv6能解决地址数量的问题,对整个国家战略都有重大的意义,我们当然要大力发展。

政策背景

从国家战略层面来说,为了扭转IPv4时代的被动局面,也为了国家高质量的发展,我们国家正在大力推动IPv6的部署。

IPv6是互联网升级演进的必然趋势、网络技术创新的重要方向、网络强国建设的基础支撑。党中央、国务院高度重视IPv6规模部署工作,多次发布相关通知和文件,用于推荐IPv6的建设和发展:2017年中办、国办印发《推进互联网协议第六版(IPv6)规模部署行动计划》,2021年全国人大通过的《国民经济和社会发展第十四个五年规划和2035年远景目标纲要》,2024工业和信息化部办公厅、中央网信办秘书局2024年发布《工业和信息化部办公厅 中央网信办秘书局关于开展“网络去NAT”专项工作 进一步深化IPv6部署应用的通知》。

未来势必会有大量的IPv6地址,与我们息息相关,对于IPv6,我们需要拥抱它,学习它,使用它。

个人的影响

这些可能大家觉得对自己没啥影响,大家觉得我现在用IPv4也挺好的啊。其实不然。在上面去NAT的通知里面,有一句“到2025年7月底前实现试点区域基础电信企业NAT44设备总容量停止增长,主要移动互联网应用(APP)固网侧IPv6流量占比不低于70%。”,你可以这样理解:到2025年,你手机的的app,至少70%的流量都走IPv6了。 如果没有IPv6,举例一个实际场景吧,我们打开某一个视频,一直转转转加载,可能20、30秒才能刷出来。这中间的技术过程就是:手机网络IPv6优先,然后先用IPv6地址去请求服务端,因为配置的原因,这个IPv6地址不具备上网条件(为啥上不了网,呆会儿说),需要先等IPv6超时,然后又重新用IPv4地址去请求,这才打开对应的视频。体验非常差吧,我们家里面的网络怎么样配置才能支持呢?

怎么判断是否支持IPv6

用手机,或者电脑浏览器,打开www.ipw.cn,即可看到是否支持IPv6了。 如果是这样,那就表明支持IPv6.

如果这样,那就是不支持IPv6

关于IPv6的误区

  1. 使用IPv6 比IPv4快?

很多人人为,我现在用IPv6,别人没用,那用的人少,是不是应该更快点。这个其实是不对的,速度的快慢,由你的网络供应商确认。v4或者v6是协议的不一样,只是数据包封装的方式不一样,并不是换了一条道。这里做了个测试,用v4或者v6去ping baidu.com,可以看到时延都基本在32ms左右。没有说v6就比v4快。

代码语言:javascript
代码运行次数:0
运行
复制
root@localhost:~# ping www.baidu.com -c 3
PING www.a.shifen.com (183.2.172.185) 56(84) bytes of data.
64 bytes from 183.2.172.185 (183.2.172.185): icmp_seq=1 ttl=52 time=33.3 ms
64 bytes from 183.2.172.185 (183.2.172.185): icmp_seq=2 ttl=52 time=33.6 ms
64 bytes from 183.2.172.185 (183.2.172.185): icmp_seq=3 ttl=52 time=33.8 ms

--- www.a.shifen.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 33.291/33.574/33.845/0.226 ms
root@localhost:~# ping6 www.baidu.com -c 3
PING www.baidu.com(240e:ff:e020:9ae:0:ff:b014:8e8b (240e:ff:e020:9ae:0:ff:b014:8e8b)) 56 data bytes
64 bytes from 240e:ff:e020:9ae:0:ff:b014:8e8b (240e:ff:e020:9ae:0:ff:b014:8e8b): icmp_seq=1 ttl=52 time=31.6 ms
64 bytes from 240e:ff:e020:9ae:0:ff:b014:8e8b (240e:ff:e020:9ae:0:ff:b014:8e8b): icmp_seq=2 ttl=52 time=32.1 ms
64 bytes from 240e:ff:e020:9ae:0:ff:b014:8e8b (240e:ff:e020:9ae:0:ff:b014:8e8b): icmp_seq=3 ttl=52 time=31.8 ms

--- www.baidu.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 31.593/31.840/32.110/0.211 ms
root@localhost:~# 

  1. IPv6和IPv4不能共存?

这个更不对了,如果不能共存,那随着国家大力推进IPv6的建设,这个过程中你又没有替换,你是不是就上不了网了呢。上面也验证了,同一台机器,是可以支持IPv4和IPv6双栈的,在使用的时候,可以设置哪个优先(windows/linux/mac都有设置的地方,android没找到)。

  1. IPv6不安全或者更安全?

这里我们说的具备了IPv6,都是指具备了公网v6地址,这个地址是全球唯一的,分配到你的机器上,那通过这个机器就能访问到你的这个设备。这里说的更安全,是IPv6采用的一些安全机制,能够保证更加的可靠。 但是继承自IPv4的安全威胁依然存在,比如你的服务暴露了一些不安全的端口,那可能就会被攻破。而IPv4不存在,是因为做了NAT之后,我们的设备被隐藏起来了,运营商都给我们做了一层拦截。 这里严格意义上来说,不是IPv6不安全,而是这个服务不安全。 这也是华为商城,Google Play等需要严格审核应用上线的原因之一。

如何配置使用IPv6

这里可能随便往上一搜,有很多内容,很多专业名词,太多东西了,有时候对着操作一通,最后云里雾里的,好像也没解决。很多人直接劝退。今天抛砖引玉,结合我自己的实践,给大家串一串。

IPv6基本知识

客户端的IPv6地址怎么获得。

在v4的时候,地址要么dhcp活动,要么手动指定。v6的时候,也可以手动指定,或者dhcp,不过IPv6增加了另外一种方式,SLAAC的方式。而且这里的DHCP也和v4的不一样。具体来说就是:

  • 手工指定
  • SLAAC (stateless address autoconfiguration)分配
  • DHCPv6分配

对于以上分配,需要理解如下几点:

1)这个分配工作是路由器向客户端分配,所以以上相关的涉及的配置,都在路由器上配置

2)路由器可以同时开启SLAAC和DHCPv6,这样客户端会分到多个地址

客户端获取到地址之后,怎么样才能用IPv6上网

有同学可能就会问了,v6不都是公网地址,我机器上也有地址了,那我肯定就能同外界通信了啊。其实这里不一定,有相应得路由配置才行。这也是很多帖子再说,我都看到机器上配置了地址,但是还是不通,其实就路由不对。

怎么样得路由才算对呢,举例说下:通信链路是这样得: 客户端(A)<---> 路由器(B)<--->外部公网v6(C)。 这里得两段都需要有来有回才行,比如我客户端A发出一个请求,路由器B也转发出去了,外部服务C也回复了,路由器也收到回复了,但是路由器没将其回复给A,这样表现就是A得v6不通外网。这种情况,在用中继得情况可能会遇到。

上级路由给我分了什么?

因为IPv6都是公网地址,具体流量路径为:都是WAN -> LAN -> 二级路由 WAN -> 二级路由 LAN.... 上面提到得分配方式适用这个链路里面的各级路由器。

我们的手机,电脑等,其实都是最末端路由器下面的设备,那我们得先弄清楚位于最末端得上一级路由(很多时候就是运营商得配置,我们左右不了,如果不支持,那就是运营商的问题)给我得是啥?

这里有几种情况:

1) 上级路由,没有给我IPv6, 那就是不支持,怎么折腾都没用

2) 上级路由已经配置好了,就给单一得IPv6地址。那我下级路由就只能选择中继模式来配置了。

3) 上级路由开启了Delegate IPv6 prefixes(又是一个新概念),这个很多时候翻译为:委托前缀;这里表示的是上级设备给我们分配了至少一个/64位得地址段。如:240e:3c1:5665:1cd4::/60,这个简单理解就是上一级给了一个/60位的IPv6子网网段,这个子网网段内的地址你可以自自由分配配了,是不是觉得非常奢侈,IPv6就是这样的。

结合以上论述,说下我们路由器上配置的思路:

OpenWrt配置过程

对家庭用户来说,设置IPv6主要就是运营商的网关和路由器了。网关上动的少,基本现在运营商给配置好的都是默认支持的,剩下的就路由器。商用路由器上就这么几个按钮,开启,关闭,都点了,能支持就支持,支持不了你找售后也没用(我最开始用小米的路由器就这样,售后10几天不回消息)。

为了便于大家理解,接下来的,我结合软路由来说下这些配置是啥。

网关上的配置

这里网关选择的是路由模式,或者桥接模式其实什么关系,结合上面的思路,影响我们在下一级路由配置的,主要是看是否能分配到PD前缀。

这里路由模式,对应的网关作为路由器,开启了SLAAC和DHCPv6。 这里根据自己的实际选择来配置吧。

OpenWrt上的配置

1)先正常创建WAN6口,协议选择DHCPv6。

请求v6地址选择try,请求指定长度的IPv6前缀,选择64,或者自动,其他的默认的即可:

如果觉得网关是路由模式比较麻烦,可以改成桥接,OpenWrt是主路由,那么wan6选择pppoe就行了,参数复用WAN口的。

2) 配置完成,看一下wan6口的地址配置情况,如果是如下的:可以看到,我们分到了一个IPv6-PD,是一个/64位的。所以我们可以选择使用中继模式,也可以选择使用服务器模式来给下一级的设备来分。

剩下的配置主要分为服务器模式,和中继模式。简单来说,就是服务器模式就是我来决定我的后端设备怎么来分。中继模式就是我就是完全透传,上一级给我啥,我就转发给下面什么,我不做任何配置。

场景1:服务器模式来配置OpenWrt

如果你没有分到PD,那跳过这部分,直接看后面的中继模式。 Network/网络 -> Interfaces/接口:

WAN -> Edit/编辑 -> Advanced Settings/高级设置: Delegate IPv6 prefixes/委托 IPv6 前缀 -> 打勾✓,如果不打勾,路由器 LAN口 将不会自动分配到 公网IPv6 地址。

LAN -> Edit/编辑 -> Advanced Settings/高级设置 Delegate IPv6 prefixes/委托 IPv6 前缀 -> 打勾✓,如果不打勾,你的二级路由将不会获取 公网IPv6 分配规则。 IPv6 assignment length/IPv6 分配长度 -> 选择或输入大于 WAN口 IPv6-PD 的数字

LAN -> Edit/编辑 -> DHCP Server/服务器 -> IPv6 Setting/设置 RA 服务, 设置为 server/服务器模式。Router Advertisement,路由通告,路由器主动在网络上告诉局域网设备,我是路由器,可以响应客户端发的RS消息,也可以定期发送RA消息。 DHCPv6, 设置为 server/服务器模式。分配P NDP Proxy/代理, 选择禁用

LAN-> Edit/编辑 -> DHCP Server/服务器 -> IPv6 RA Settings/设置 Enable SLAAC -> 打勾✓,很多设备不支持DHCPv6 只支持 SLAAC。下面的RA标记那里,一般后面的参数,默认即可。

至此,路由器就配置完成。客户端可以验证IPv6的访问了。登录到路由器,可以看到有这样一条路由,目标网段就是分配IPv6-PD:

单独走lan口转发的,和wan口(eth1)的路由不一样,这样就能保证:上行流量从eth1转发,下行的会走br-lan口,道道客户端。确保客户端能够上网。

场景2:中继模式

如果没有获取到PD,或者觉得麻烦,那就直接中继吧 中继模式就是透传,所有前面wan口和lan口的关于委托前缀的,都不生效了。 Network/网络 -> Interfaces/接口->WAN6 -> Edit/编辑->DHCP Server/服务器 General Setup/常规设置 Ignore interface/忽略此接口 -> 请打勾✓,因为 IPv6 只需要下面 DHCPv6 中继服务。

IPv6 Setting/设置 Designated master/指定的主接口 -> 必须打勾✓ RA 服务 -> 设置为 relay/中继模式。

DHCPv6 -> 设置为 relay/中继模式。 NDP Proxy/代理 -> 设置为 relay/中继模式

LAN - Edit/编辑->DHCP Server/服务器 -> IPv6 Setting/设置 RA 服务 -> 设置为 relay/中继模式。 DHCPv6 -> 设置为 relay/中继模式。 NDP Proxy/代理 -> 设置为 relay/中继模式

中继模式下获取到ip,但是访问不通分析

此时路由器路由如下(这里eth0是wan口):

有两段/62位的路由,都走eth0发出去,优先级不一样而已

代码语言:javascript
代码运行次数:0
运行
复制
240e:399:e53:7a40::/64 dev eth0  metric 256 
240e:399:e53:7a43::/64 dev eth0  metric 1024

我的客户机分到了IPv6地址为:240e:399:e53:7a40:be24:11ff:feab:bf99/64

此时我从客户机(240e:399:e53:7a40:be24:11ff:feab:bf99)往外发一个请求,到达路由器,路由器有default的路由,可以继续网外发,远端正常回复,此时服务端回复的这个包的目的地址是我的客户机bf99这个地址,但是这个数据包到达路由器之后,发现匹配到了metric 256的这条路由,他继续走wan口转发,就找不到我们的客户机了,表现就是我客户机用v6上不了网。正常的是走LAN口转发给我们的客户机。 这个时候,手动从客户机trace一下,或者ping下,触发我们路由器更新路由,我ping下路由器的v6地址,可以看到新增了一条明细路由:

代码语言:javascript
代码运行次数:0
运行
复制
240e:399:e53:7a40:be24:11ff:feab:bf99 dev br-lan  metric 1024 

这就表示对路由器来说,bf99这个地址的包,走lan口去发送,这样我们客户端就能够正常通信了。

造成以上的是odhcp的中继模式和IPv6本身的NDP机制引起的,论坛上有人说用6relayd,但是没试过。

总结

总结起来,正确的配置和使用,关键在于几点:

  1. 切换思维,可以参考IPv4的实现方式,但是别照搬,v6的地址分配和路由等还是有很大区别的。
  2. SLAAC只是一种地址分配方式,落实到路由器就是一些配置。我们不用关心上一级的配置是什么,我们只需要关注本路由器的配置。什么M标记,O标记这些,影响的是本路由器下的设备地址的分配,很多时候保持默认都可以。
  3. 遇到不通的,或者不对的时候,先从原理分析理解下。不用着急否定自己,也不用来回换固件,论坛上很多人一说就是换个固件就好了,其实openwrt的一些组件的代码,很多都几年没更新了,换不换都差不多。可能你配置的是对的,但是受限机制问题,它就是有问题。

关于v6的配置,折腾了很久,一直想写,但是总觉得没有彻底理解。我尽量没写很多复杂的原理、协议等,担心太晦涩了。如果都看到这里了,理解了或者不理解,都可以留言说下,有什么问题也可以留言或者私信讨论。

参考文章:

IPv6 原理及如何设置 OpenWrt

odhcpd 中继模式原理、局限以及解决方案

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-11-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 MUM笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么需要IPv6
    • 技术背景
    • 政策背景
    • 个人的影响
  • 怎么判断是否支持IPv6
  • 关于IPv6的误区
  • 如何配置使用IPv6
    • IPv6基本知识
      • 客户端的IPv6地址怎么获得。
      • 客户端获取到地址之后,怎么样才能用IPv6上网
      • 上级路由给我分了什么?
    • OpenWrt配置过程
      • 网关上的配置
      • OpenWrt上的配置
      • 中继模式下获取到ip,但是访问不通分析
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档