Introduction
Cette page discute surtout de l'assignation des adresses IPv6 dans le mesh Réseau Libre. Selon la rencontre du 27 janvier 2014, les récents courriels sur la liste Nodes et le fonctionnement de Commotion, il serait utile d'établir une stratégie d'assignation automatique des adresses IPv6 qui puisse être utilisée par Réseau Libre et intégrée à Commotion.
Assignation actuelle des adresses
Elle se fait par l'une ou l'autre des manières suivantes :
- l'utilisation de son propre préfixe (par exemple fourni par un fournisseur de service internet)
- l'utilisation du préfixe unique-local de Réseau Libre (fd64:2c08:9fa7::)
Diagramme démontrant l'assignation actuelle des adresses IPv6 et leur utilisation
Diagramme 1 : diagramme simplifié pour la stratégie actuelle et l'ancienne stratégie
Les points importants de ce diagramme sont :
- Babel maintient l'état du réseau par la communication des différents routeurs (les cylindres bleu avec pare-feu) à partir de leur interface réseau présente sur le mesh.
- L'opérateur de routeur/relais s'assigne un bloc d'adresses IPv6 /60 (anciennement /64) à partir du wiki de Réseau Libre. Ce bloc est représenté par le «Préfixe relais».
- Dans le cas où l'opérateur obtient un /60 cela lui permet de se créer 16 sous-réseaux. Un petit exemple est montré par le cas du Routeur 3. C'est normalement le cas actuellement.
- Dans le cas où l'opérateur obtient un /64, la situation est représenté par le Routeur 2. C'est ce qui se passait dans les débuts de Réseau Libre.
- Les Routeur 1 et Routeur 2 montrent que, si l'opérateur a un préfixe IPv6 d'un fournisseur internet, il n'y a aucune différence peu importe la stratégie d'assignation.
- L'interface LAN représente un réseau qu'on ne veut pas nécessairement offrir à des invités qui veulent se connecter au mesh.
- L'interface AP (Access Point/ Point d'accès) représente un réseau par lequel des invités qui veulent se connecter au mesh peuvent le faire.
Notes sur les éléments graphiques :
- Un prisme bleu avec des flèches blanches représente un commutateur (switch).
- Un cylindre bleu avec un pare-feu représente un routeur, par exemple un nanobridge, avec une image OpenWrt (commotion ou non) configurée pour Réseau Libre avec le protocole Babel.
Nouvelle stratégie d'assignation
Après lecture du RFC4193 - Unique Local IPv6 Unicast Addresses et du BCP106 - Randomness Requirements for Security qui ont été mentionné dans les derniers courriels de janvier sur [nodes], nous vous présentons une possibilité pour la nouvelle stratégie d'assignation des adresses IPv6.
Diagramme 2 : diagramme simplifié pour la nouvelle stratégie
Les points importants de ce diagramme sont :
- Les routeurs 1 et 4 ne changent pas parce qu'ils continuent à utiliser des préfixes globaux assignés par les fournisseurs d'internet.
- Les routeurs 2 et 3 indiquent deux exemples de la nouvelle stratégie.
Diagramme 3 : diagramme complet pour la nouvelle stratégie
L'ajout important sur ce diagramme sont les connexions à l'internet. Le diagramme représente la cohabitation du mesh et de l'internet sur les réseaux locaux des utilisateurs possédant un relais. Bien sûr, l'internet ne doit pas être partagé sur le mesh.
La stratégie est caractérisée par les points ci-dessous :
- Génération d'un préfixe unique-local directement par le routeur selon le RFC4193.
- L'élément aléatoire utilisé pour la génération est /dev/random, car il respecte le BCP106.
- Un utilisateur qui met son routeur à jour doit, soit noter son préfixe, soit sauvegarder ses fichiers de configuration pour les restaurer sur le noeud mis à jour pour garder le même préfixe.
Pour avoir une idée concrète du résultat, il est possible d'utiliser cette commande :
head -c 5 /dev/random |hexdump -e '5/1 "%02x"'|sed -r -e 's_^fd' -e 's_(....)\1:g' -e 's_$:/64\n'
Problèmes potentiels
La lecture de /dev/random est blocante si l'entropie de la source maintenue à cet emplacement est trop faible. La lecture bloquera jusqu'à ce que l'entropie devienne suffisamment élevée. Il faudra tester sur un routeur nouvellement installé si la lecture peut bloquer trop longtemps.
BCP106 suggère d'utiliser /dev/urandom pour ne pas que ça bloque. Une nuance est apportée en indiquant que cette technique est meilleure pour des cas où attendre est innaceptable parce que le résultat ne sera pas aussi bon que /dev/random BCP106 - Section 7.1.2.
Nous avons testé avec un routeur et la génération se fait très rapidement sans blocage. Aussi étant donnée qu'elle ne sera faite qu'une seule fois dans la vie entière du noeud, attendre un peu dans le pire cas est acceptable.
Avantages de cette stratégie
Un nouvel utilisateur pourra simplement brancher un routeur et choisir le profil Réseau Libre dans l'interface web commotion. En appliquant, le préfixe sera généré automatiquement. Il serait facile de configurer par défaut l'interface LAN et l'interface AP d'un routeur (voir les Routeur 3 du «Diagramme d'allocation d'adresses IPv6»), si le routeur a suffisamment d'interfaces bien sûr.
Plus besoin d'un système centralisé d'assignations d'adresses. Le wiki ne serait plus nécessaire pour sélectionner des blocs d'adresses. Le préfixe unique-local est généré en déterminant 40 bits. Ceci réprésente 281 474 976 710 656 possibilités. Selon la section 3.2.3 du RFC4193, pour 10 000 préfixes générés, il n'y a qu'une probabilité de 4.54*10^-05 d'avoir une collision. Joindre deux mesh utilisant cette technique de génération de préfixes assure avec une grande probabilité qu'il n'y aura pas de conflit d'adresses.
Simple et basée sur un RFC.
Références
- Les diagrammes sont faits à l'aide de Calligra Flow.