Pour mettre à jour mon smartphone sous GrapheneOS et ses logiciels, j'émets un point d'accès Wi-Fi ponctuel avec hostapd sous GNU/Linux.
J'me dis que ça serait sympa d'avoir IPv6 sur ce point d'accès.
Android ne met pas en œuvre DHCPv6 (source).
Le logiciel clé pour faire de la l'autoconfiguration IPv6 sur GNU/Linux est radvd. Je l'ai déjà utilisé ici.
Points d'attention :
radvd ne prévient pas quand sa configuration est incorrecte (hors syntaxe), il se contente de ne rien faire 😑️. Si aucun RA n'est émis au démarrage, aucun ne le sera par la suite, quelle que soit la valeur des paramètres (Min|Max)RtrAdvInterval. Au démarrage, radvd émet une salve plus rapide que MaxRtrAdvInterval ;
Il faut forcément préciser MaxRtrAdvInterval.
MinRtrAdvInterval ;AdvHomeAgentFlag on;.radvd émet plusieurs RA espacés quand il reçoit un message Router Solicitation (RS). Mais Android (recherche mises à jour, NTP, etc.) et les applis commencent à échanger avec l'extérieur, en IPv4, bien avant l'émission du RS. Donc s'il on veut maximiser les échanges au-dessus d'IPv6, on peut configurer radvd pour émettre un RA toutes les quelques secondes ;
Un RA contient la durée de vie d'un routeur qui permet de préciser l'utilité de son émetteur en tant que routeur par défaut des préfixes IPv6 annoncés. Android >= 15 refuse une durée inférieure à 180 secs (source), donc il faut forcément préciser AdvDefaultLifetime >= 180 si tu tripotes un peu trop MaxRtrAdvInterval (car AdvDefaultLifetime vaut 3 * AdvDefaultLifetime) ;
adb shell ip -6 route show table all ‒ abrégé ip -6 r s t all), donc : adb shell ping6 shaarli.guiguishow.info sortira en erreur « connect: Network is unreachable ».Ma configuration radvd :
interface wlp61s0
{
AdvSendAdvert on;
MinRtrAdvInterval 3;
MaxRtrAdvInterval 5;
AdvDefaultLifetime 300;
prefix 3fff:0042::/64
{
};
RDNSS 2001:910:800::40
{
};
RDNSS 2a00:5881:8100:1000::3
{
};
};
(Le réseau 3fff:0::/20 est réservé pour la documentation. RDNSS permet de préciser les serveurs DNS récursifs, ici de FDN et d'ARN.)