
这份教程采用了最稳妥、风险最低的方案。
此方案通过“GUI 设置无状态 (Stateless) + 脚本补充 DHCPv6”的方式,完美实现了 Android 手机(仅支持 Stateless)和其他设备(需要 DHCPv6)的共存。
在这个模式下会同时分配一个有状态(Stateful)的IPV6地址和一个无状态(Stateless)的ipv6地址。
1. 背景与目标
问题:Android 设备原生不支持 IPv6 Stateful (DHCPv6) 模式,只支持 Stateless (SLAAC)。如果路由器强制设为 Stateful,Android 将无法获取 IPv6 地址。
需求:同时满足 Android 手机(需要 SLAAC)和 NAS/PC(需要 DHCPv6 以获取固定后缀 IP)的需求。
适用设备:华硕路由器(官方固件或梅林固件),特别是对参数敏感的 WiFi 7 新平台(如 RT-BE86U)。
2. 准备工作
开启 SSH:
进入路由器后台 -> 系统管理 (Administration) -> 系统设置 (System)。
Enable SSH -> LAN Only。
开启 JFFS 脚本支持 (梅林固件/部分官改固件):
在同一页面,找到 Persistent JFFS2 partition 部分。
Enable JFFS custom scripts and configs -> 是 (Yes)。
应用本页面设置。
3. 操作步骤(共两步)
3.1:修改路由器 GUI 设置
这一步是为了保证 Android 设备能原生支持,同时避免修改复杂配置文件导致的崩溃。
进入 IPv6 设置页面。
联机类型 (Connection type):Native。
接口 (Interface):PPP (如果是拨号) 或 Passthrough (视光猫情况而定,推荐 Native 拨号)。
关键设置:将 IPv6 自动配置设置 (IPv6 IP Setting) / LAN IPv6 Setting 改为:Stateless (无状态)。
点击 应用本页面设置。
此时状态:Android 手机已经可以获取 IPv6 并上网了,但 NAS/PC 暂时失去了 DHCPv6 分配的静态地址。
3.2:通过 SSH 脚本“补全”DHCP 功能
这一步我们手动启动 DHCPv6 服务,通过脚本“无损”地追加配置。
使用终端(CMD/PowerShell/Putty)SSH 登录路由器。
直接复制以下整段代码并在 SSH 窗口中粘贴执行(这会自动生成脚本,避免格式错误):
Bash
# 生成配置脚本
cat << 'EOF' > /jffs/scripts/dnsmasq.postconf
#!/bin/sh
CONFIG=$1
source /usr/sbin/helper.sh
# 说明:当前 GUI 处于 Stateless 模式,系统默认未开启 DHCPv6 服务。
# 我们手动追加一行 dhcp-range 配置,强制激活 DHCPv6 服务。
# 效果:Android 继续使用 Stateless,其他设备同时获得 Stateless + DHCPv6 地址。
# ::1000,::2000 代表分配的后缀范围 (例如 240e:...::1005)
# constructor:br0 代表自动抓取当前 WAN 口获取的前缀
# 86400 是租期
echo "dhcp-range=lan,::1000,::2000,constructor:br0,64,86400" >> $CONFIG
EOF
赋予权限并重启服务:
复制以下命令执行:
Bash
chmod +x /jffs/scripts/dnsmasq.postconf
service restart_dnsmasq
4. 验证结果
执行完上述操作约 30 秒后:
Android 手机:
开关飞行模式。
结果:能迅速连接 WiFi,并获取到 240e: 开头的公网 IPv6 地址。
电脑 (Windows) / iPad:
结果:查看网络详细信息,应该能看到多个 IPv6 地址。
一个是临时的、乱序的(SLAAC,用于上网)。
一个是 ::1xxx 结尾的(DHCPv6,用于内网管理)。
网络连通性:
所有设备均可正常访问 IPv4 和 IPv6 网站,且 DHCP 服务稳定。
5. 紧急救援(如果断网)
如果操作后导致无法上网,请拔掉路由器电源重启。如果依然不行,请按以下步骤删除脚本恢复原状:
SSH 连接路由器。
执行删除命令:
Bashrm /jffs/scripts/dnsmasq.postconf重启 DNS 服务:
Bashservice restart_dnsmasq(可选) 去路由器后台把 IPv6 改回原来的模式。