yjd159 发表于 2025-6-20 09:02

IPv6 Stateful下无法上网(已解决)

本帖最后由 yjd159 于 2025-6-21 23:02 编辑

升级了一下路由,AC86U --> AX86U Pro,配置都没变:
原来是stateful模式,局域网内都是短地址,方便访问。
现在stateful模式下,局域网内无法获取短地址,且只能访问路由,无法上网。stateless模式可以上网。
这可能是什么原因?

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

问题解决了,结合华硕技术支持和我自己的理解,觉得有必要把一些说明放在这里,总有需要的人。网上能找到的信息要不语焉不详,要不就是以讹传讹。

AX86U Pro的WEB管理页面(仅限官方固件版本,我没用过其他改版,不知道界面是否有改动)中:
1. 高级设置>IPv6>基本设置>DHCP-PD>>>关闭
注:如果DHCP-PD是启用(默认),那前缀长度就是不可编辑的。
2. IPv6 内部网络设置>内部网络前缀长度>>>64
3. IPv6 内部网络设置>自动配置设置>>>Stateful


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

这里,网上有几处容易误导人的地方。
一、默认或建议启用DHCP-PD。本身无所谓对错,但当采用Stateful而且ISP下发的前缀长度不是64时(比如像我这样)就有问题了。
二、Stateful是“有状态”,Stateless是“无状态”。有很多帖子非要反过来说。
三、DHCP-PD在这里就是DHCPv6-PD。我一直在找设置DHCPv6的地方[流汗]

也许在AC86U之前的固件对前缀长度不是64的做了自动纠错或无视?这可能就是为什么我照着旧有设置却得不到正确结果的原因。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

以下是对部分人有用的知识:
完整的IPv6地址是128位。正常由路由器向ISP的DHCPv6服务器请求前缀,由ISP委派一个64位前缀,后64位就可以由路由器(就是你用来提供内部网络DHCP服务的设备)来分配,所以DHCPv6标准要求前缀是64位。但是,ISP可能只提供56位(像我这样)或60位前缀,比如提供56位时,那差的8位就用来划分子网了,这样可以提供256个/64的子网(/64是单个IPv6子网的标准大小),从而补齐56+8+64=128位。

比如前缀是240e:aac:abcd:ef00::,长度是56,其中240e:aac:abcd:ef代表前56位(16+16+16+8),ef00中的00代表可用于子网划分的接下来8位。然后,路由器可以创建如下的/64子网:
240e:aac:abcd:ef00::/64(用于内部网络,管理页面可设)
240e:aac:abcd:ef01::/64(用于无线访客网络)
240e:aac:abcd:ef02::/64(用于物联网网络)
我猜因为不需要创建那么多子网,所以AC86U默认都是00子网或0子网(针对前缀/60),无所谓是否64位。

当DHCPv6-PD是Stateless模式时,允许客户端自动配置其IPv6地址(也就是通常所说的SLAAC),这时的地址就是128位的,而且后64位也不是固定不变的。如果为了方便管理和外部访问,可以选择Stateful模式,由DHCPv6服务器分配子网中各客户端的/64地址(这个地址的产生和客户端网卡的MAC有关,又能保持标识唯一)。
如果指定的IP地址池的起止范围是240e:aac:abcd:ef00::1000~240e:aac:abcd:ef00::2000,显然当通过DDNS服务在外网获得内外的前缀后,直接提供固定的1xxx(Hex)地址,就很容易访问内网设备了。以前我用华硕的DDNS或内网群晖的DDNS,脚本反向解析地址,远程回家里。

Sly 发表于 2025-6-20 09:42

好像说不少安卓系统根本就不支持Stateful(IPv6 DHCP)

BH1PXK 发表于 2025-6-20 10:43

默认就是配置无状态转发的。 。 然后配置dhcpv6 发布dns服务器信息就行了。

eckl 发表于 2025-6-20 16:46

BH1PXK 发表于 2025-6-20 10:43
默认就是配置无状态转发的。 。 然后配置dhcpv6 发布dns服务器信息就行了。

我需要64位短地址啊

BH1PXK 发表于 2025-6-23 11:21

eckl 发表于 2025-6-20 16:46
我需要64位短地址啊

命令行进入路由器后台 端口配置下一个内网用的前缀,然后无状态发布地址就行了。 具体看你用的 路由器支持不支持。我配置了 一个fc00:1::1的地址用来当内外的dns代理服务器。

dcl2009 发表于 2025-6-23 11:25

安卓至今不支持有状态IPV6

IceyHeart 发表于 2025-6-24 14:23



我这开启也可以正常分配网址上网
页: [1]
查看完整版本: IPv6 Stateful下无法上网(已解决)