家庭宽带IPv6地址的分配方式
in 乱折腾 with 0 comment

背景

现在国家似乎在推IPv6的普及,家用宽带一般都有了IPv6地址,而且还是公网地址。对于经常需要远程访问的我来说真的是一个很大的福音,就意味着我再也不需要使用frp这样的内网穿透服务来穿透内网了,可以直接公网连接,不再局限于中转服务器的性能、延时和带宽了,真的太棒了。

但是存在一个问题,就是运营商提供的IPv6地址虽然是公网的,但是不是固定的公网IP,而是动态的,经常会变化。我不禁十分好奇,这个公网IPv6地址到底是怎么分配的?

然后我就了解了一下,感觉很有意思

注意:

本文中论述的环境主要是基于家里的网络环境:

  • 移动宽带1000M下行,20M上行
  • FTTH(Fibre To The Home)
  • 光猫仅负责光电转换,桥接模式,拨号为路由器负责

正文

桥接模式下,启用IPv6很简单,一般就在路由器的管理页面中打开IPv6功能,然后上网方式选择拨号上网,并复用IPv4拨号线路一般就能正常上网了。至于下面的IPv6地址获取协议、前缀授权、局域网主机配置,保持默认就好了。在这个页面中有一些名词的解释很重要。

路由器获取IPv6地址的方式

路由器负责IPv6拨号时,如果拨号成功,获取的地址一般都是一个IPv6地址段,比如2409:abcd:efab:1234:abab:0000:ccdd:aaaa/64这样的地址段。

这个地址段也被称为前缀,毕竟分配的是一整个地址段,就是所有地址前面的部分都是一样的嘛,所以叫做前缀。这个是一个挺重要的一个概念的!!!

这一点与IPv4一般获取到的是一个单个地址不同,或许是因为IPv6地址实在是太多了,根本分配不完,干脆给每一户都分配一个地址段,管你多少设备都管够吧。64位的分配空间实在是太多了,大概允许这个网络内拥有1.84e+19个地址,哇

路由器获取全球IPv6地址并分配给LAN设备的过程

如未说明,下面说的IPv6地址都是全球IPv6地址

开启前缀授权情况下

  1. 路由器拨号,从ISP获取一个IPv6地址段,自己的WAN口也会获得一个IPv6地址。ISP那边一般是通过DHCPv6来分配的地址。
  2. 路由器获得了一个前缀地址段,根据路由器设置的不同,接下来就应该为局域网内的设备进行地址的分配了。
    有两种方式,分别是SLAAC和DHCPv6(注意这里的DHCP服务器是路由器)。

    • 如果路由器使用的是SLAAC模式,那么路由器将不再负责为LAN的设备分配地址,路由器只会将从ISP获取到的前缀公布到LAN内,由LAN内的设备根据自己的标识符(比如MAC地址,UUID,计算机名啥的),组合成IP地址。
    • 如果路由器使用的是DHCPv6模式,那么他就是来插手地址分配的工作了,路由器会有一个基于获取到的前缀的地址池,来为局域网设备分配IPv6地址。
    • 当然,应该也是可以通过手动分配IPv6地址的,不过依然需要位于路由器获得的前缀中。
  3. 地址的分配就结束了,所有的设备获取到的IPv6地址都是与路由器的前缀一致,保持了地址的全球唯一。

如果没有开启前缀授权

依然是路由器拨号,不过这时,ISP不再授权给路由器一个前缀网段了,而是仅仅分配一个IPv6地址给路由器的WAN口,就是和IPv4一样。访问纯IPv6地址就会依赖于NAT吧(未查证,个人猜测)

路由器就不能使用前缀授权给LAN设备分配地址了,因为他自己也只有一个地址,哪里有地址给别人啊哈哈哈

这时候LAN设备就只有IPv6本地地址了,一般是fe80::为前缀的。

然而有一种特殊的情况,很少见但是还是有可能的:
虽然路由器关闭了前缀授权,但是如果ISP机房那边给你分配了一个静态的前缀,那你照样还是可以启用路由器的DHCPv6或者SLAAC来获取全球IPv6地址。当然还有其他方案来来获取IPv6前缀,比如ISP在上游链路中也可能采用SLAAC。

总结

其实一般情况下,运营商都是支持前缀授权的。至少我家里中国移动宽带是可以直接复用IPv4拨号链路并开启前缀授权为每一台设备获得IPv6全球地址的。

一般情况下,保证前缀授权开就可以了。不然IPv6的优势就没有了,全家的设备共用一个IPv6地址上网,真的很憋屈,远程访问又变成了麻烦事。

另外,IPv6的设计初衷就在于让每一台设备能够拥有全球唯一的地址,不需要内网穿透,不需要端口转发。这个初衷真的很不错,就是推广起来还是有点难,路漫漫啊!

2024-02-28T13:42:23.png

Responses