Si comme moi vous avez des temps de chargement dans le vide absolu (genre 30 bonnes secondes) avant de lancer un stream Twitch sur votre téléphone en Wi-Fi, alors que sur PC c'est instantané... j'ai enfin trouvé le coupable après avoir retourné toute ma config réseau (et checké mes logs dnsmasq).
J'ai fini par sniffer ce que le téléphone faisait, et le responsable est tout trouvé : c'est la Bbox + le réseau IPv6 de Bouygues.
Le problème du firmware Bbox :
Même si on désactive proprement l'IPv6 dans l'interface (coupure du DHCPv6 + blocage complet via le pare-feu IPv6), la Bbox continue d'autoriser le Router Advertisement (RA) de leur stack IPv6 en multicast. Logique, puisque le RA est diffusé en ICMPv6 indépendamment du DHCPv6. Ce qui veut dire que tous nos appareils reçoivent systématiquement un préfixe SLAAC + le DNS IPv6 de la Bbox sur le réseau local.
Le comportement d'Android :
Android a une règle qui priorise l'IPv6 de façon très agressive. L'IPv6 SLAAC et le DNS de la box vont donc être utilisés en premier. On peut essayer de distribuer des SLAAC avec un autre service (comme un Pi-hole), ce sera toujours la Bbox qui gagne. Je pense que c'est parce que la box envoie son RA dès la connexion Wi-Fi, et qu'elle est toujours la première à dégainer puisqu'elle est littéralement le premier appareil physique connecté.
Le délai de 30 secondes :
Il y a de toute évidence un problème au niveau du backbone entre Twitch (AWS) et le réseau IPv6 Bouygues (ou peut-être que Twitch gère mal l'IPv6 de son côté, c'est flou). Dans tous les cas, la connexion IPv6 drop systématiquement.
Résultat : le téléphone tente de se connecter en IPv6 (à cause du RA forcé de la box), la requête tombe dans un trou noir, et on patiente 30 bonnes secondes de timeout avant que Android ne passe enfin sur l'IPv4. Et là, ça marche instantanément.
Note avant qu'on me pose la question : oui, j'ai bien fait mes tests en débloquant totalement le pare-feu IPv6, le flux est quand même droppé côté réseau. (Je suspecte que c'est le flux UDP QUIC en IPv6 qui est droppé, enfin je ne suis pas sûr que ce soit du QUIC, bref ça marche pas.)
Puisqu'aucun bouton de cette box ne permet de couper ce spam ICMPv6, on en arrive à devoir bidouiller pour un usage basique :
- Soit acheter un routeur Wi-Fi tiers, le brancher a la place de la box, et demander un ONT à Bouygues (qui est un service gratuit, heureusement).
- Soit utiliser un VPN local (genre WireGuard toujours allumé sur le téléphone) pour forcer le routage DNS vers un résolveur propre (type Pi-hole) et ignorer la box.
J'ai désactivé le DHCPv4 de bouygues car j'ai installé un Pi-hole. Celui-ci fonctionne parfaitement en IPv4, comme en IPv6. Le problème étant que l'IPv6 de mon Pi-Hole n'est jamais utilisé puisque c'est la config du RA qui prends la priorité.
Est-ce que d'autres ont remarqué ce problème de blackhole IPv6 avec la Bbox sur mobile, ou est-ce que les développeurs Bouygues prévoient d'ajouter un bouton pour couper le ICMPv6, plus précisément le NDP sur le LAN ? J'ai rejoint Bouygues télécom le mois dernier, et il me donne déjà envie de quitter l'opérateur à cause de nombreux problèmes. Je ferai un second post pour étayer mon deuxième problème.
