Avec radvd
fonctionnant sur mon routeur, mon PC client, comme tout le monde le dit sur le net, obtient une adresse IPv6. Existe-t-il un moyen d'utiliser le même préfixe publié par radvd
dans sa RA et de 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 ? Dans l'affirmative, veuillez expliquer la meilleure façon de procéder.
Non vous ne pouvez pas. Ce n'est pas un problème de manque de fonctionnalités, mais une limitation de la spécification du protocole IPv6.
Voici pourquoi:
Le "automagiquement" auquel vous faites référence est [~ # ~] s [~ # ~] tate [~ # ~] l [~ # ~] ess [~ # ~] a [~ # ~] ddress [~ # ~] un [~ # ~] uto [~ # ~] c [~ # ~] onfiguration (SLAAC),. La spécification pour SLAAC indique qu'il fonctionne avec un masque de réseau 64 bits (ce qui signifie que les 64 premiers bits (16 caractères hexadécimaux) de l'adresse doivent être les mêmes pour que l'adresse soit considérée dans le 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" dont je parle ici est une collection de commutateurs connectés directement les uns aux autres (sans routeurs intermédiaires) et le PC et d'autres appareils "sans issue" connectés à ces commutateurs.)
Lorsqu'une machine en réseau (PC, serveur, etc.) souhaite 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 arriver au 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 premiers bits X en commun avec la propre adresse de l'ordinateur, alors l'adresse se trouve sur le même segment et l'ordinateur doit contacter l'adresse directement (à l'aide de la découverte de voisin ICMPv6 protocole). Si les X premiers bits ne sont pas communs, alors l'adresse fait partie d'un autre bloc d'adresses et sur un segment différent, ce qui nécessite d'envoyer le trafic via un routeur pour arriver au 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 64 bits par la spécification du protocole. Il n'y a aucun moyen de revendiquer une portion plus petite de ce bloc de masque de réseau/64 et de l'utiliser sur une autre interface et segment avec SLAAC, pour deux raisons. Tout d'abord, SLAAC nécessite un masque de réseau 64 bits. Si vous deviez découper un bloc plus petit à partir d'un bloc de masque de réseau 64 bits, le plus petit bloc ne serait pas, par sa nature même, un bloc de masque de réseau 64 bits, car un masque de réseau plus grand signifie un bloc plus petit. (Par exemple, un bloc de masque de réseau 65 bits est la moitié de la taille d'un bloc de masque de réseau 64 bits). Deuxièmement, toutes les autres machines du réseau disposant actuellement du bloc de masque de réseau 64 bits annoncé avec SLAAC s'attendent à ce que le bloc entier soit directement accessible sur ce segment, et ne vous attendez pas à devoir passer par votre routeur pour atteindre une partie de ce bloc.
Maintenant, il existe un moyen de contourner cela, mais pas par votre machine Ubuntu agissant comme un routeur. Vous pouvez configurer des ports sur une machine Ubuntu pour agir comme un commutateur, en passant de manière transparente le trafic 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 toute configuration dont vous avez besoin (y compris SLAAC) sur votre machine Ubuntu et de lui donner un accès au réseau, tout en permettant au trafic de circuler sans modification entre les deux interfaces physiques de votre machine. Cela fait en sorte que votre machine et les deux réseaux sur son interface physique deviennent tous le même segment (car votre machine fait le travail d'un commutateur).
Pour ce faire, vous souhaiterez mettre en place un pont. Vous voudrez installer le bridge-utils
paquet. Vous voudrez alors supprimer toutes les adresses/configurations de votre interface physique actuelle. Ensuite, vous voudrez 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 voudrez peut-être jeter un œil à https://wiki.debian.org/BridgeNetworkConnections et https://wiki.debian.org/NetworkConfiguration#Bridging pour plus de détails (en particulier comment appliquer la configuration à travers les redémarrages dans/etc/network/interfaces).