# Accéder aux conteneurs LXC depuis des machines virtuelles KVM/QEMU

**URL:** <https://www.debian-fr.org/t/acceder-aux-conteneurs-lxc-depuis-des-machines-virtuelles-kvm-qemu/79995>\
**Category:** Support Debian\
**Created:** [Août 27, 2019, 8:26 UTC](https://www.debian-fr.org/t/acceder-aux-conteneurs-lxc-depuis-des-machines-virtuelles-kvm-qemu/79995 "2019-08-27T08:26:24Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![chuugar](https://www.debian-fr.org/user_avatar/www.debian-fr.org/chuugar/32/5407_2.png) [@chuugar](https://www.debian-fr.org/u/chuugar)\
**Post date:** [Août 27, 2019, 8:26 UTC](https://www.debian-fr.org/t/acceder-aux-conteneurs-lxc-depuis-des-machines-virtuelles-kvm-qemu/79995/1 "2019-08-27T08:26:24Z")

</div>

Bonjour,

Sur mon hôte je dispose de la configuration suivante :

- Plusieurs conteneurs connectés au bridge généré par `lxc-net` : `lxcbr0`
- Plusieurs machines virtuelles connectés à un bridge que j’ai crée via `systemd-netword` : `br0`

J’arrive à “pinger” et à accéder aux conteneurs depuis l’hôte mais pas depuis les machines virtuelles.  
J’arrive également à “pinger” et à accéder aux machines virtuelles depuis les conteneurs.

Ci-dessous le fichier `/etc/systemd/network/25-bridge-static.network` pour `br0` :

```
[Match]
Name=br0

[Network]
Address=192.168.1.2/24
Gateway=192.168.1.1
DNS=192.168.1.1

```

J’utilise les options par défaut de `lxc-net`, que l’on retrouve dans `/usr/lib/x86_64-linux-gnu/lxc/lxc-net`, à savoir :

```
USE_LXC_BRIDGE="true" 
LXC_BRIDGE="lxcbr0" 
LXC_BRIDGE_MAC="00:16:3e:00:00:00" 
LXC_ADDR="10.0.3.1" 
LXC_NETMASK="255.255.255.0" 
LXC_NETWORK="10.0.3.0/24" 
LXC_DHCP_RANGE="10.0.3.2,10.0.3.254" 
LXC_DHCP_MAX="253" 
LXC_DHCP_CONFILE="" 
LXC_DHCP_PING="true" 
LXC_DOMAIN=""

```

Je dois avouer que j’ai des connaissances limitées en terme de réseau, et je n’arrive pas à saisir pourquoi je peux accéder aux machines virtuelles depuis les conteneurs, mais pas aux conteneurs depuis les machines virtuelles.

Par avance merci.

---

<div class="post-metadata">

**Author:** ![sk4hrr](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/s/7bcc69/32.png) [@sk4hrr](https://www.debian-fr.org/u/sk4hrr)\
**Post date:** [Août 27, 2019, 11:16 UTC](https://www.debian-fr.org/t/acceder-aux-conteneurs-lxc-depuis-des-machines-virtuelles-kvm-qemu/79995/2 "2019-08-27T11:16:23Z")

</div>

Bonjour,

> [@chuugar](#):
>
> Je dois avouer que j’ai des connaissances limitées en terme de réseau

C’est mon cas aussi, mais je crois qu’une piste est à chercher du coté du NAT. Tes deux ponts disposent d’un sous-réseau totalement différent. Tu as dû, je ne sais pas comment, permettre à tes conteneur de communiquer avec tes VM mais pas tes VM avec tes conteneurs.

Je ne sais pas si c’est la méthode la plus efficace, mais je testerais des `traceroute` depuis les VM vers les conteneurs et puis l’inverse, histoire de voir par où ça passe et où ça bloque.

_NB : le réseau n’est vraiment pas mon fort, donc n’hésite pas à attendre des gens plus calés sur le sujet !_

---

<div class="post-metadata">

**Author:** ![chuugar](https://www.debian-fr.org/user_avatar/www.debian-fr.org/chuugar/32/5407_2.png) [@chuugar](https://www.debian-fr.org/u/chuugar)\
**Post date:** [Août 27, 2019, 12:36 UTC](https://www.debian-fr.org/t/acceder-aux-conteneurs-lxc-depuis-des-machines-virtuelles-kvm-qemu/79995/3 "2019-08-27T12:36:26Z")

</div>

IP :

- Machine virtuelle : 192.168.1.100
- Conteneur : 10.0.3.27

Depuis le conteneur :

```
root@nginx:/# traceroute 192.168.1.100
traceroute to 192.168.1.100 (192.168.1.100), 30 hops max, 60 byte packets
1 10.0.3.1 (10.0.3.1) 0.058 ms 0.023 ms 0.028 ms
2 192.168.1.100 (192.168.1.100) 0.124 ms 0.152 ms 0.089 ms

```

Depuis une machine virtuelle :

```
root@vm:/# traceroute 10..0.3.27
traceroute to 10.0.3.27 (10.0.3.27), 30 hops max, 60 byte packets
1 192.168.1.1 (192.168.1.1) 0.678 ms 0.823 ms 1.158 ms
2 145.239.153.11 (145.239.153.11) 24.729 ms 26.631 ms 30.740 ms
3 * * *
5 * * *
6 * * *
7 * * *
8 * * *
9 * * *
10 * * *
...
```

---

<div class="post-metadata">

**Author:** ![mattotop](https://www.debian-fr.org/user_avatar/www.debian-fr.org/mattotop/32/3942_2.png) [@mattotop](https://www.debian-fr.org/u/mattotop)\
**Post date:** [Août 27, 2019, 12:42 UTC](https://www.debian-fr.org/t/acceder-aux-conteneurs-lxc-depuis-des-machines-virtuelles-kvm-qemu/79995/4 "2019-08-27T12:42:05Z")

</div>

> [@sk4hrr](#):
>
> à chercher du coté du NAT

Absolument.  
Je ne connais pas les fonctionnalités de bridging des deux solutions et ce qu’elles bridgent vraiment, mais la config LXC attribue en DHCP des adresses manifestement internes à ton réseau de containers donc elles fonctionnent forcément avec un nat sur ta gateway 10.0.3.1.

De leur coté, les VM QEMU, elles, doivent avoir leur carte réseau virtuelle bridgées chacune avec ta carte lan physique, et elles doivent chacune recevoir une adresse en 192.168.1.X distribuée par le serveur DNS de ton LAN physique, donc elles ne passent pas par un nat, elles sont comme si elles étaient branchées chacunes sur le même switch physique que ta machine physique.  
[espérant avoir été clair].

Si tu veux bosser dans les deux sens, il doit falloir trouver une config du réseau de containers qui ne passe pas par un nat (je ne sais pas si ça existe, je ne connais pas LXC).

---

<div class="post-metadata">

**Author:** ![chuugar](https://www.debian-fr.org/user_avatar/www.debian-fr.org/chuugar/32/5407_2.png) [@chuugar](https://www.debian-fr.org/u/chuugar)\
**Post date:** [Septembre 2, 2019, 12:47 UTC](https://www.debian-fr.org/t/acceder-aux-conteneurs-lxc-depuis-des-machines-virtuelles-kvm-qemu/79995/5 "2019-09-02T12:47:40Z")

</div>

En effet `lxcbr0` est un bridge NAT, il faut donc créer une règle `iptables` qui permettent le transfère de paquet vers l’extérieur.

```
iptables -t nat -A PREROUTING -i eno0 -p tcp --dport 80 -j DNAT --to-destination 10.0.3.10:80     
iptables -t nat -A PREROUTING -i eno0 -p tcp --dport 443 -j DNAT --to-destination 10.0.3.10:443

```

Où `10.0.3.10` est l’adresse de mon container Nginx et `eno0` l’interface réseau de l’hôte.

Merci pour vos explications !
