本帖最后由 badpanyu 于 2026-6-20 13:18 编辑
此问题已困扰我多年,近期终于在ai的协助下找到并完美解决
具体问题为主路由openwrt打开ipv6,用别的ap进行无线桥接,电视类老旧设备连接此wifi后会反复连接断开,并且获取不到ipv6
和ai沟通了好几天,我总算确定了原因,具体原因就是openwrt自带的wan6没拿到pd
这是ai的回答:
wan6 没拿到 PD 前缀是电视 IPv6 频繁断连的头号根源,再叠加 MTU 不匹配双重恶化故障 一、先讲「无 PD 前缀」如何直接导致电视 WiFi 反复掉线 路由器无合法内网 IPv6 网段,RA 报文残缺、持续报错
之前你 wan6 绑错 eth1、available:false,运营商没有下发 /60 委派前缀,odhcpd 日志持续输出:
A default route is present but there is no public prefix on lan
路由器发送的 RA 报文缺少可用全局网段,智能电视(安卓 TV / 国产电视)对残缺 RA 兼容性极差:
电视反复发起 RS 请求索要前缀,收不到完整 RA 就判定网络失效,主动断开 WiFi 重连; 日志同步出现组播报错 Failed to send to ff02::1,RA 组播丢包,电视拿不到网关、地址,进入断连重试循环。 电视只能生成临时链路本地 fe80 地址,无全局 IPv6,网络栈紊乱没有 PD 前缀时,电视仅有 fe80 内网地址,无法生成可外网访问的 2409 全局地址;电视系统会持续检测 IPv6 连通性,检测失败就重置 WiFi 网卡,肉眼表现就是反复断 WiFi、转圈重连。
下面我给出ai的解决办法,有点长,需要ssh,实测一步步试下去就能解决
一、彻底重建正确 wan6(复制逐条执行) 1. 删除错误旧 wan6 配置
运行 uci delete network.wan6
2. 新建标准 wan6,绑定 PPPoE 隧道 运行 uci set network.wan6=interface # 关键:指向pppoe-wan隧道,不是eth1物理口 uci set network.wan6.ifname='@wan' uci set network.wan6.proto='dhcpv6' # 请求运营商公网IPv6地址 uci set network.wan6.reqaddress='try' # 请求/60内网分配前缀(移动宽带) uci set network.wan6.reqprefix='60' uci set network.wan6.norelease='1' # wan6划入wan防火墙区域 uci set network.wan6.zone='wan'
3. 主 WAN (PPPoE) 开启 IPv6 支持 运行 uci set network.wan.ipv6='1' # 关闭wan自动生成虚拟wan6,避免冲突 uci set network.wan.autoipv6='0'
4. LAN 前缀分配(匹配 / 60) 运行 uci set network.lan.ip6assign='60' uci set network.lan.ip6class='wan6' # 统一MTU 1484消除RA组播报错 uci set network.lan.mtu='1484'
5. 提交网络配置 运行
uci commit network
二、修复 DHCP/RA(纯 SLAAC,手机兼容性最强) 运行 # lan dhcpv6关闭,只靠RA分配地址 uci set dhcp.lan.dhcpv6='disabled' uci set dhcp.lan.ra='server' # O位开启,下发DNS uci set dhcp.lan.ra_otherconfig='1' # 强制通告IPv6默认路由 uci set dhcp.lan.ra_default='1' # 延长RA寿命防止手机丢IPv6 uci set dhcp.lan.ra_lifetime='3600' # WAN口dhcp必须忽略,禁止处理外网RA
uci set dhcp.wan.ignore='1' uci commit dhcp
三、重启网络,等待 wan6 上线 运行 /etc/init.d/network restart sleep 25 # 查看wan6是否正常 ifstatus wan6
四、wan6 正常后,重启 odhcpd 下发内网 IPv6 运行
/etc/init.d/odhcpd restart logread -e odhcpd
2.接下来还要设置一下mtu,再设置一下ipv6的dhcp(我照上面输入好以后电视只获取到ipv6获取不到ipv4,用了下面的代码才修复) 运行
# 全网统一MTU 1484 uci set network.wan.mtu='1484' uci set network.wan6.mtu='1484' uci set network.lan.mtu='1484' # 2.4G无线设置MTU uci set wireless.default_ra.mtu='1484' # 5G无线设置MTU uci set wireless.default_rax.mtu='1484' uci commit wireless uci commit network # 配套MSS修正1444 uci set firewall.@forwarding[0].mssfix='1444' uci commit firewall # 重载生效 /etc/init.d/firewall reload /etc/init.d/network reload
路由器广告服务:服务器模式(保持不变) DHCPv6 服务:服务器模式 DHCPv6 模式:无状态 + 有状态(stateless+stateful) 运行
# 关闭M位 uci set dhcp.lan.ra_managed='0' # 修正ra_flags,删掉managed-config uci set dhcp.lan.ra_flags='other-config' # 确认O位保持开启,用来下发DNS uci set dhcp.lan.ra_otherconfig='1' # RA开启 uci set dhcp.lan.ra='server' # DHCPv6全开(无状态+有状态) uci set dhcp.lan.dhcpv6='server' uci set dhcp.lan.dhcpv6_mode='stateless+stateful' uci commit dhcp # 重启RA服务生效 /etc/init.d/odhcpd restart
WAN 侧配合(保证前缀正常下发) 不要锁死 autoipv6,保持自动获取 PD 前缀 运行
uci set network.wan.autoipv6='1' uci set network.wan.ipv6='1' uci commit network /etc/init.d/network restart
|