Hi all,
follow-up to my thread Flint 2 - GL-MT6000 ipv6 problem native (auto-closed July 6). Same setup: FTTH ONT (pure bridge) → MT6000 PPPoE, ISP /48 delegation. Now on firmware 4.9.0 — Native IPv6 is still broken out of the box.
Root cause identified — and it explains the old odhcpd log
On 4.9.0 the GUI writes this to the LAN config when handling IPv6 modes:
network.lan.ip6assign='64' network.lan.ip6class='local'
ip6class='local' restricts the LAN to the ULA prefix only → the delegated /48 never gets assigned to br-lan. This is exactly why odhcpd was logging in my March thread:
odhcpd: A default route is present but there is no public prefix on br-lan thus we don't announce a default route
No public prefix on LAN → no default route in RA → clients hold stale GUAs with no route → intermittent/total IPv6 blackhole. Router side looks perfectly healthy (ifstatus wan6 OK, curl -6 OK), which makes this very easy to misdiagnose as an ISP issue.
Manual fix, verified working:
uci delete network.lan.ip6class uci commit network ifup lan
→ delegated prefix instantly assigned to LAN, clients get routed GUAs and pass test-ipv6.com 10/10. Problem: the GUI rewrites ip6class='local' on every Apply in the IPv6 page, so the fix doesn't persist through GUI changes. I'm keeping a hotplug script in /etc/hotplug.d/iface/ just to undo what the GUI does — that shouldn't be necessary.
Second (separate) issue — HW acceleration, confirmed by GL engineers
In April, with GL engineers connected to my device via GoodCloud, we confirmed that Native IPv6 only works with hardware acceleration disabled. @will.qiu asked me to follow up via ticket, and on April 7 I was told a "very good update" was coming. 4.9.0 shipped — neither fix is in it.
My current workaround: NAT6
NAT6 + HW accel on = stable, 10/10 on test-ipv6.com. But it's a workaround: masqueraded clients, no end-to-end IPv6, on hardware that's marketed as a flagship.
Request to GL.iNet
- Fix the GUI writing
ip6class='local'on LAN — it makes Native mode dead on arrival for anyone with prefix delegation. - Ship the HW offload + Native IPv6 fix that was acknowledged back in April.
Happy to test beta builds — my device already served as the reference case via GoodCloud. Full diagnostics available on request.
script for fix manually:
cat > /root/fix-ipv6-mt6000.sh << 'EOF'
#!/bin/sh
fix-ipv6-mt6000.sh - Patch IPv6 GL-MT6000 fw 4.9.0 (bug ip6class='local')
CHANGED=0
echo "=== Patch IPv6 GL-MT6000 ==="
if [ "$(uci -q get network.lan.ip6class)" = "local" ]; then
echo "[FIX] ip6class='local' trovato -> rimuovo"
uci delete network.lan.ip6class
uci commit network
CHANGED=1
else
echo "[OK] ip6class assente"
fi
if [ "$(uci -q get dhcp.lan.ra)" != "server" ]; then
echo "[FIX] dhcp.lan.ra -> server"
uci set dhcp.lan.ra='server'
uci commit dhcp
/etc/init.d/odhcpd restart
CHANGED=1
else
echo "[OK] dhcp.lan.ra=server"
fi
if [ "$CHANGED" -eq 1 ]; then
echo "[...] Riavvio LAN"
ifup lan
sleep 8
fi
echo "=== Verifica ==="
ifstatus lan | grep -q '2a07:7e81:4829' && echo "[OK] Prefisso delegato su LAN" || echo "[!!] Prefisso delegato ASSENTE"
ping6 -c 2 -W 2 2001:4860:4860::8888 >/dev/null 2>&1 && echo "[OK] IPv6 WAN funzionante" || echo "[!!] Ping IPv6 fallito"
echo "=== Fine ==="
EOF
chmod +x /root/fix-ipv6-mt6000.sh && sh /root/fix-ipv6-mt6000.sh
Thanks