J'utilise un serveur Ubuntu (server-box), qui exécute un conteneur LXD (lxd-box), et LXD utilise un pont Ethernet que j'ai configuré en utilisant le guide this . lxd-box exécute une instance de VirtualBox (vbox-box). server-box, lxd-box et vbox-box exécutent tous le serveur Ubuntu 16.04. vbox-box utilise le pontage Ethernet de VirtualBox pour se connecter à eth0 sur lxd-box, qui est lui-même ponté sur enp5s0 sur server-box.
Les trois reçoivent une adresse IP du LAN. Les trois peuvent communiquer avec n'importe quel autre client LAN. De plus, lxd-box peut très bien communiquer avec server-box et vbox-box. Cependant, vbox-box et server-box ne peuvent pas communiquer. Plus précisément, je ne peux pas lancer une session ssh entre eux dans les deux sens, tandis que je peux lancer des sessions vers/depuis les deux depuis/vers lxd-box. Ce n'est pas seulement ssh, j'ai testé sur une poignée de ports en lançant simplement des connexions TCP avec netcat. Même comportement. Ssh est juste plus pratique.
Quelquun sait pourquoi cela se passe? Je suppose que cela a à voir avec les multiples ponts qui se produisent, mais je ne suis pas sûr. Plus important encore, quelqu'un sait-il comment résoudre ce problème?
J'ai eu un problème similaire (bien que légèrement différent du vôtre) et je l'ai finalement résolu.
Je pense que lorsqu'il y a des ponts ara 2, le premier est le pont lxd et le second est celui créé par la boîte virtuelle, vous les rejoignez via un périphérique tuntap.
Voici les détails
scénario:
Dans ma configuration de virtualbox, j'ai rendu l'adaptateur réseau disponible et l'ai connecté à l'adaptateur de pont, en choisissant lxdbr0. Cela semblait fonctionner, mais j'ai trouvé le même problème que vous, je ne pouvais pas ssh vers Ubuntu Host, je ne pouvais pas ssh vers des conteneurs lxc (sur le même pont) et ainsi de suite ...
Après une recherche sur Internet (désolé, je ne peux pas fournir les liens), j'ai trouvé cette solution.
Sur une machine Ubuntu 16.04, avec des privilèges root:
root@ubuntu:~# ip tuntap add mode tap tap0
root@ubuntu:~# ip link set tap0 up
root@ubuntu:~# brctl addif lxdbr0 tap0
root@ubuntu:~# brctl show
bridge name bridge id STP enabled interfaces
lxdbr0 8000.4e76f4d676d5 no tap0
Une fois que vous avez ajouté tap0 au pont, vous pouvez configurer votre machine Virtualbox "connexion de type adaptateur de pont" pour vous connecter à tap0 (qui est déjà dans l'autre pont).
Il semble que vous devriez établir un pont vers une interface au lieu de créer un pont vers un pont.
Dans votre scénario, vous devez créer le tap0 dans votre lxd-box. Ce tap0 sera ajouté à 2 ponts, l'un sur lxd et l'autre sur virtualbox.
Pour tirer parti de la réponse de @ayito, vous pouvez également créer un tap0
dispositif. Éditer /etc/network/interfaces
en utilisant les privilèges root et ajoutez:
iface tap0 inet manual
pre-up ip tuntap add mode tap tap0
up ip link set tap0 up
post-up brctl addif lxdbr0 tap0
pre-down brctl delif lxdbr0 tap0
down ip link set tap0 down
post-down ip link del tap0
Après l'enregistrement, exécutez Sudo ifup tap0
Pour valider qu'il a commencé, exécutez brctl show
. Tu devrais voir tap0
comme interface de lxdbr0
.
Chaque fois que vous redémarrez votre ordinateur et souhaitez utiliser l'interface, exécutez Sudo ifup tap0
Remarque: vous pouvez également l'ajouter en tant que script de démarrage, mais il doit s'exécuter après lxdbr0
a commencé.
Dans Virtualbox, utilisez un "adaptateur ponté" connecté à tap0
:
Vous devriez maintenant pouvoir parler à vos conteneurs LXD et configurer facilement le tap0
interface après redémarrage.