Un téléphone qui rame en WiFi à la maison — mais uniquement sur WhatsApp (appels vidéo) et le Play Store (téléchargements). En 4G, tout est fluide. Le réflexe serait d’accuser le WiFi ou la bande passante. C’est ailleurs.
L’indice dans le choix des apps
WhatsApp et le Play Store ont un point commun : ce sont des services Google/Meta, qui poussent massivement IPv6 et QUIC, et Android privilégie agressivement l’IPv6. Quand une app spécifiquement « moderne » rame alors que le reste passe, ce n’est pas la bande passante — c’est la pile IPv6.
Le diagnostic
Depuis une machine du même réseau WiFi :
$ ip -6 addr show scope global
inet6 fd42:5e3a:9b1c::23e/128 ← ULA (privée, fd..)
inet6 fd42:5e3a:9b1c:0:... ← ULA
← AUCUNE adresse globale 2xxx
$ ip -6 route show default
← vide, pas de route par défaut
$ ping -6 -c2 2606:4700:4700::1111
ping: connect: Le réseau n'est pas accessible
Verdict : le routeur annonce de l’IPv6 en ULA (fd00::/8, l’équivalent privé du 192.168) sans aucune connectivité internet IPv6 — pas de préfixe global, pas de route. Les appareils reçoivent une IPv6 qui ne mène nulle part.
Pourquoi le mobile rame (et pas le PC)
Sur un PC Linux, l’absence de route IPv6 fait échouer la tentative immédiatement (« réseau non accessible ») → il retombe vite en IPv4, quasi sans gêne. Android est plus têtu : il tente l’IPv6/QUIC, reste coincé sur un timeout, puis fallback lentement. D’où le WiFi qui traîne, uniquement sur les apps qui préfèrent l’IPv6.
La cause : le double-NAT
Classique : un routeur placé derrière la box du FAI. Au lieu de relayer le vrai préfixe IPv6 global (délégation de préfixe), il fabrique une ULA bidon. Résultat : de l’IPv6 « pour la forme », inutilisable.
Le correctif (OpenWrt)
Option rapide — couper l’IPv6 cassé de la LAN, les appareils repassent en IPv4 propre :
$ uci set dhcp.lan.ra='disabled'
$ uci set dhcp.lan.dhcpv6='disabled'
$ uci set dhcp.lan.ndp='disabled'
$ uci -q delete network.globals.ula_prefix
$ uci commit && /etc/init.d/odhcpd restart
Option propre — remettre du vrai IPv6 : configurer la délégation de préfixe sur le WAN du routeur, ou — plus simple et radical — passer le routeur en mode point d’accès (bridge) pour que la box gère elle-même routage, DHCP et IPv6 natif. Fini le double-NAT, fini l’ULA bidon.
Lessons learned
- « Une app précise rame, pas les autres » ≠ bande passante. C’est souvent la pile IPv6, car les apps Google/Meta la préfèrent.
- De l’IPv6 à moitié configuré est pire que pas d’IPv6 du tout. Un appareil qui reçoit une adresse mais pas de connectivité perd du temps en timeouts avant de retomber en IPv4.
- Trois commandes suffisent au diagnostic :
ip -6 addr(globale ou ULA ?),ip -6 route(route ?),ping -6internet. - En double-NAT, le mode point d’accès règle tout d’un coup : la box fait l’IPv6 natif, plus de préfixe inventé.