Je voudrais configurer trois interfaces réseau virtuelles ( veth
) qui peuvent communiquer entre elles. Pour simuler un cluster à trois nœuds, chaque programme se lie ensuite à une veth
interface. J'aimerais le faire sans LXC si possible.
J'ai essayé d'utiliser:
- Créé trois
veth
paires:sudo ip link add type veth
- Créé un pont
sudo brctl addbr br0
- Ajout d'une de chaque paire au pont:
sudo brctl addif br0 veth1
sudo brctl addif br0 veth3
sudo brctl addif br0 veth5
- Configuré les interfaces:
sudo ifconfig veth0 10.0.0.201 netmask 255.255.255.0 up
sudo ifconfig veth2 10.0.0.202 netmask 255.255.255.0 up
sudo ifconfig veth4 10.0.0.203 netmask 255.255.255.0 up
Ensuite, j'ai vérifié si cela fonctionne en utilisant: ping -I veth0 10.0.0.202
mais ce n'est pas le cas :(
I ajouté adresses IP aux veth1
, veth3
, veth5
et les br0
interfaces dans la gamme 10.0.1.x / 24. Mais ça n'aide pas.
Des idées? ou un guide, tout ce que je trouve dans la façon de l'utiliser avec LXC. Ou est-ce que j'essaye quelque chose qui n'est pas possible?
linux
networking
Reinder
la source
la source
br0
-il en place?Réponses:
Pour que veth fonctionne, une extrémité du tunnel doit être pontée avec une autre interface. Puisque vous voulez garder tout cela virtuel, vous pouvez relier l'extrémité vm1 du tunnel (vm2 est l'autre extrémité du tunnel) avec une interface virtuelle de type tap, dans un pont appelé brm. Vous donnez maintenant les adresses IP à brm et à vm2 (10.0.0.1 et 10.0.0.2, respectivement), activez le transfert IPv4 au moyen de
mettez toutes les interfaces en place et ajoutez une route indiquant au noyau comment atteindre les adresses IP 10.0.0.0/24. C'est tout.
Si vous souhaitez créer plus de paires, répétez les étapes ci-dessous avec différents sous-réseaux, par exemple 10.0.1.0/24, 10.0.2.0/24, etc. Étant donné que vous avez activé le transfert IPv4 et ajouté des itinéraires appropriés à la table de routage du noyau, ils pourront se parler immédiatement.
Rappelez-vous également que la plupart des commandes que vous utilisez (brctl, ifconfig, ...) sont obsolètes: la suite iproute2 a des commandes pour faire tout cela, voir ci-dessous mon utilisation de la commande ip .
Il s'agit d'une séquence correcte de commandes pour l'utilisation des interfaces de type veth :
créez d'abord toutes les interfaces requises,
Notez que nous n'avons pas fait apparaître brm et vm2 car nous devons leur attribuer des adresses IP, mais nous avons fait apparaître tapm et vm1, ce qui est nécessaire pour les inclure dans le pont brm. Asservissez maintenant les interfaces tapm et vm1 au pont brm,
donner maintenant des adresses au pont et à l'interface veth restante vm2,
maintenant amenez vm2 et brm,
Il n'est pas nécessaire d'ajouter explicitement la route au sous-réseau 10.0.0.0/24, il est généré automatiquement, vous pouvez vérifier avec ip route show . Il en résulte
Vous pouvez également le faire à l'envers, c'est- à- dire de vm2 vers brm:
L'application la plus utile des cartes réseau du type veth est un espace de noms réseau , qui est utilisé dans les conteneurs Linux (LXC). Vous en lancez un appelé nnsm comme suit
puis on y transfère vm2,
nous dotons le nouvel espace de noms du réseau d'une interface lo (absolument nécessaire),
nous autorisons NATting dans la machine principale,
(si vous êtes connecté à Internet via eth0 , sinon changez en conséquence), démarrez un shell dans le nouvel espace de noms du réseau,
et maintenant, si vous commencez à taper le nouveau xterm, vous constaterez que vous êtes dans une machine virtuelle distincte avec l'adresse IP 10.0.0.2, mais vous pouvez accéder à Internet. L'avantage de cela est que le nouvel espace de noms réseau a sa propre pile, ce qui signifie, par exemple, que vous pouvez y démarrer un VPN alors que le reste de votre PC n'est pas sur le VPN. C'est sur quoi s'appuient les LXC.
MODIFIER:
J'ai fait une erreur, apporter l'interface vm2 la fait tomber et efface son adresse. Vous devez donc ajouter ces commandes, à partir de xterm:
et maintenant vous pouvez naviguer depuis xterm.
Les
ip
commandes peuvent également être effectuées avant le xterm avecla source
Voici une configuration de pont à 5 nœuds que j'utilise et qui fonctionne. Vous devriez pouvoir utiliser ifconfig pour attribuer des adresses aux interfaces NodeX
et nettoyer
la source