Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
doc:autres:vm:lxc:reseau-bridge [01/11/2016 13:47] greenmerlin [Introduction] |
doc:autres:vm:lxc:reseau-bridge [23/08/2018 12:15] Beta-Pictoris [Réseau facile avec Network Manager] |
||
---|---|---|---|
Ligne 21: | Ligne 21: | ||
<code root>apt-get install bridge-utils</code> | <code root>apt-get install bridge-utils</code> | ||
- | ==== Créer un pont ==== | + | ==== La configuration réseau de la machine hôte ==== |
+ | Par défaut, un conteneur lxc n'aura aucune conf réseau(sur une jessie en tout cas). Se sera à vous de lui en donner une. | ||
- | Il faut créer un pont pour l'interface réseau. Dans ''/etc/network/interfaces'' | + | Au menu |
+ | * SimpleBridge (NAT) | ||
+ | * MasqueradedBridge | ||
+ | * VlanNetworking | ||
- | <code> | + | Nous ne verrons que le "Pont Simple" dans notre example |
- | auto br0 | + | |
- | iface br0 inet dhcp | + | |
- | bridge_ports eth0 | + | |
- | bridge_fd 0 | + | |
- | bridge_maxwait 0 | + | |
- | </code> | + | |
- | Reconfigurez le réseau avec : | + | Création de l'interface réseaux de pont nommer lxcbr0 |
- | <code root>service network-manager stop</code> | + | <code root>brctl addbr lxcbr0</code> |
- | <code root>ifup br0</code> | + | |
- | <code root>service network-manager start</code> | + | |
- | Voilà, l'hôte est prêt | + | On vérifie par |
- | ===== Le fichier de configuration du conteneur ===== | + | <code root>ip addr show</code> |
- | Dans le fichier de configuration du conteneur, ajouter les lignes suivante | + | On ajoute l'interface a "bridger" |
- | <code> | + | <code root>brctl addif br0 eth0</code> |
+ | |||
+ | puis on active le pont | ||
+ | |||
+ | <code root>ifup lxcbr0</code> | ||
+ | |||
+ | puis on édite /etc/network/interface pour configurer notre pont de manière permanante | ||
+ | |||
+ | <file config /etc/network/interface> | ||
+ | # This file describes the network interfaces available on your system | ||
+ | # and how to activate them. For more information, see interfaces(5). | ||
+ | |||
+ | source /etc/network/interfaces.d/* | ||
+ | |||
+ | # The loopback network interface | ||
+ | auto lo | ||
+ | iface lo inet loopback | ||
+ | |||
+ | # The primary network interface | ||
+ | allow-hotplug eth0 | ||
+ | |||
+ | iface eth0 inet dhcp | ||
+ | |||
+ | # pont réseau | ||
+ | auto lxcbr0 | ||
+ | iface lxcbr0 inet dhcp | ||
+ | bridge_ports eth0 | ||
+ | bridge_stp off | ||
+ | bridge_fd 0 | ||
+ | bridge_maxwait 0 | ||
+ | </file> | ||
+ | |||
+ | Dernier point, modifier la configuration de notre conteneur, on edite le fichier /var/lib/lxc/proxies/config pour remplacer la valeur lxc.network.type = none | ||
+ | <file config /var/lib/lxc/proxies/config> | ||
+ | ... | ||
lxc.network.type = veth | lxc.network.type = veth | ||
lxc.network.flags = up | lxc.network.flags = up | ||
- | lxc.network.link = br0 | + | lxc.network.link = lxcbr0 |
- | lxc.network.hwaddr = 00:00:00:00:00 #votre super adresse Mac unique dans votre réseau, facultatif | + | lxc.network.name = eth0 |
- | lxc.network.ipv4 = 192.168.0.249/24 # votre adresse ipv4, facultatif | + | lxc.network.hwaddr = 00:16:3e:a3:23:1d //l'adresse MAC vous l'inventez bien entendu |
- | lxc.network.ipv4.gateway = 192.168.0.254 # votre passerelle, facultatif | + | lxc.network.mtu = 1500 |
- | </code> | + | ... |
+ | </file> | ||
+ | |||
+ | puis redémarrer votre conteneur pour tester si vous avez le réseau | ||
+ | |||
+ | <note important>vous n'avez pas ping d’installer par default sur votre conteneur c'est normal, tester plutôt avec apt</note> | ||
+ | |||
+ | ===== Réseau facile avec Lxc-net ===== | ||
+ | |||
+ | Stretch apporte une nouvelle version de LXC qui embarque la possibilité de configurer facilement un bridge simple (NAT en IPV4) pour vos conteneurs grâce à lxc-net. | ||
+ | |||
+ | Pour configurer cette interface de bridge lxcbr0 il faut créer un fichier lxc-net dans /etc/default/ et y inscrire ceci : | ||
+ | <code>USE_LXC_BRIDGE="true"</code> | ||
+ | Ensuite il faut éditer le fichier /etc/lxc/default.conf de façon à modifier la partie suivante : | ||
+ | <code>lxc.network.type = empty</code> | ||
+ | par : | ||
+ | <code>#indique la création d'une interface virtuelle rattachée à un bridge. | ||
+ | lxc.network.type = veth | ||
+ | #indique le bridge auquel est rattachée l'interface virtuelle | ||
+ | lxc.network.link = lxcbr0 | ||
+ | #indique d'activer l'interface au démarrage du conteneur. | ||
+ | lxc.network.flags = up | ||
+ | #indique l'adresse MAC attribuée à l'interface | ||
+ | lxc.network.hwaddr = 00:16:3e:xx:xx:xx</code> | ||
+ | |||
+ | Les lignes précédées du # sont juste là pour expliquer la ligne qui suit, il n'est pas utile de les recopier ;-) | ||
+ | |||
+ | Pour finir il faut démarrer le réseau : | ||
+ | <code root>service lxc-net start</code> | ||
+ | Cette commande n'est à faire qu'une seule fois. Par la suite le réseau lxcbr0 démarrera tout seul à chaque démarrage de Debian. | ||
+ | |||
+ | Source : [[https://wiki.debian.org/LXC]] | ||
+ | |||
+ | ===== Réseau facile avec Network Manager ===== | ||
+ | |||
+ | [[doc:reseau:network-manager|Network Manager]] est le démon qui gère les connexions réseaux sous Debian Stretch. | ||
+ | |||
+ | On peut utiliser la commande [[doc:reseau:network-manager#l-interface-commande-nmcli|nmcli]] pour créer, rapidement, des passerelles virtuelles et partager des connexions internet entre l'hôte et ses invités. | ||
+ | |||
+ | ==== Exemple ==== | ||
+ | |||
+ | On veut créer une passerelle nommé lxcbr0, qui aura comme adresse ip 192.168.2.1, sur le réseau 192.168.2.0/24: | ||
+ | <code user>nmcli connection add type bridge con-name lxcbr0 ifname virbr0 ipv4.method shared ipv4.addresses 192.168.2.1/24</code> | ||
+ | |||
+ | ==== Explication ==== | ||
+ | |||
+ | [[doc:reseau:network-manager|Network Manager]] gère les interfaces réseaux à travers des profils appelés 'connection'. | ||
+ | |||
+ | La commande précédente a créé un nouveau profil de type bridge nommé 'lxcbr0' (con-name) associé à l'interface réseau 'virbr0' (ifname). | ||
+ | |||
+ | Comme l'interface réseau 'virbr0' n'existe pas physiquement, elle est créée pour l'occasion et est, donc, une interface virtuelle. | ||
+ | |||
+ | Les directives 'ipv4.method' et 'ipv4.addresses' sont optionnelles. | ||
+ | |||
+ | La directive 'ipv4.method shared' signifie que la passerelle sera de type routeur NAT source. | ||
+ | On peut le vérifier en interrogeant le pare-feu. Par exemple: | ||
+ | <code root>iptables -t nat -L</code> | ||
+ | <code>Chain POSTROUTING (policy ACCEPT) | ||
+ | target prot opt source destination | ||
+ | MASQUERADE all -- 192.168.2.0/24 !192.168.2.0/24</code> | ||
+ | Par ailleurs, le routage ipv4 sera activé: | ||
+ | <code root>cat /proc/sys/net/ipv4/ip_forward</code> | ||
+ | <code>1</code> | ||
+ | De plus, [[doc:reseau:network-manager|Network Manager]] va lancer dnsmasq pour fournir du service dhcp et dns aux invités. | ||
- | Après lancement de la machine((Voir [[:doc:autres:vm:lxc-conteneur|conteneur LXC]])), celle ci dispose d'une adresse IP différente de celle de la machine hôte, octroyée par le DHCP ou, si vous avez spécifié les deux dernières lignes, par vous-même :-) | + | Enfin, si on n'utilise pas la directive 'ipv4.addresses', |
+ | [[doc:reseau:network-manager|Network Manager]] va utilise la plage '10.42.x.0/24' par défaut. |