Con radvd
qui fonctionne sur mon routeur, mon PC client, comme tout le monde le dit sur le net, obtient "automatiquement" une adresse IPv6. Existe-t-il un moyen d'utiliser le même préfixe que celui publié par le routeur ? radvd
dans son RA et faire en sorte que le même client Ubuntu agisse comme un routeur (en exécutant radvd
) avec ce préfixe sur une autre interface ? Si oui, veuillez expliquer la meilleure façon de procéder.
Réponse
Trop de publicités?Non, vous ne pouvez pas. Ce n'est pas un problème de manque de fonctionnalités, mais de limitation de la spécification du protocole IPv6.
Voici pourquoi :
Le "automatiquement" auquel vous faites référence est S tate L ess A ddress A uto C onfiguration (SLAAC), . La spécification de SLAAC indique qu'il fonctionne avec un masque de réseau de 64 bits (ce qui signifie que les 64 premiers bits (16 caractères hexadécimaux) de l'adresse doivent être identiques pour que l'adresse soit considérée comme faisant partie du même bloc et utilisée sur ce segment de réseau).
Par définition, un routeur est une machine qui se trouve sur au moins 2 segments de réseau différents. En fait, un routeur tire son nom du fait qu'il achemine le trafic entre les deux segments.
(Le "segment" auquel je fais référence ici est un ensemble de commutateurs directement connectés les uns aux autres (sans routeurs intermédiaires) et les PC et autres périphériques "cul-de-sac" connectés à ces commutateurs. )
Lorsqu'une machine en réseau (PC, serveur, etc.) veut envoyer du trafic vers une adresse, elle doit décider si l'adresse qu'elle veut atteindre est directement accessible (sur le même segment) ou non (pas sur le même segment, et doit donc passer par un routeur pour atteindre le bon segment). Pour ce faire, l'ordinateur examine le masque de réseau configuré. Un masque de réseau indique simplement à l'ordinateur que si l'adresse qu'il veut atteindre a les mêmes X premiers bits en commun avec sa propre adresse, alors l'adresse se trouve sur le même segment, et l'ordinateur doit contacter l'adresse directement (en utilisant le protocole ICMPv6 de découverte des voisins). Si les X premiers bits ne sont pas communs, l'adresse fait partie d'un autre bloc d'adresses et se trouve sur un segment différent, ce qui nécessite l'envoi du trafic via un routeur pour atteindre le bon segment.
Avec le SLAAC qui se produit sur une interface de votre machine Ubuntu, le masque de réseau est défini comme étant de 64 bits par la spécification du protocole. Il n'est pas possible de revendiquer une plus petite partie de ce bloc de masque de réseau /64 et de l'utiliser sur une autre interface et un autre segment avec SLAAC, pour deux raisons. Premièrement, SLAAC requiert un masque de réseau de 64 bits. Si vous deviez découper un bloc plus petit à partir d'un bloc de masque de réseau de 64 bits, le bloc plus petit ne serait pas, par nature, un bloc de masque de réseau de 64 bits, car un masque de réseau plus grand signifie un bloc plus petit. (Par exemple, un bloc de masque de réseau de 65 bits est la moitié de la taille d'un bloc de masque de réseau de 64 bits). Deuxièmement, toutes les autres machines du réseau qui ont actuellement le bloc de masque de réseau de 64 bits annoncé avec SLAAC attendent le bloc de masque de réseau de 65 bits. tout le site pour être directement accessible sur ce segment, et ne s'attendent pas à devoir passer par votre routeur pour atteindre une partie de ce bloc.
Il existe un moyen de contourner ce problème, mais pas en utilisant votre machine Ubuntu comme routeur. Vous pouvez configurer les ports d'une machine Ubuntu pour qu'ils agissent comme un commutateur, faisant passer le trafic de manière transparente entre les ports sans le modifier. Ce faisant, votre machine obtiendra une nouvelle interface qui agira comme si elle était connectée à un troisième port sur ce commutateur virtuel. Cela vous permettra d'obtenir n'importe quelle configuration dont vous avez besoin (y compris SLAAC) sur votre machine Ubuntu et de lui donner accès au réseau, tout en permettant au trafic de circuler sans être modifié entre les deux interfaces physiques de votre machine. Ainsi, votre machine et les deux réseaux sur son interface physique deviennent tous le même segment (parce que votre machine fait le travail d'un commutateur).
Pour ce faire, vous devez mettre en place un pont. Vous voudrez installer le bridge-utils
paquet. Vous voudrez ensuite supprimer toutes les adresses/configurations de votre interface physique actuelle. Ensuite, vous devrez le faire :
brctl addbr br0
brctl addif br0 intefacename1
brctl addif br0 intefacename2
ifconfig br0 up
ifconfig intefacename1 up
ifconfig intefacename2 up
puis ajoutez toute configuration dont vous aviez besoin sur l'interface physique à la nouvelle interface br0. Vous pouvez jeter un coup d'oeil à https://wiki.debian.org/BridgeNetworkConnections y https://wiki.debian.org/NetworkConfiguration#Bridging pour plus de détails (en particulier, comment faire en sorte que la configuration s'applique à tous les redémarrages dans /etc/network/interfaces).