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 [23/08/2018 11:51] Beta-Pictoris [Réseau facile avec Network Manager] |
doc:autres:vm:lxc:reseau-bridge [09/12/2018 14:53] Beta-Pictoris [Réseau facile avec Network Manager] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== TP : Configurer des conteneurs LXC en mode Bridge ====== | + | ====== LXC en mode Bridge - Configuration ====== |
- | * Objet : Configurer les conteneurs LXC et l'hote afin que les conteneurs dispose d'un accés ethernet exterieur par le biais de la machine hote | + | * Objet : Configurer les conteneurs LXC et l'hôte afin que les conteneurs dispose d'un accés ethernet extérieur par le biais de la machine hôte. |
* Niveau requis :{{tag>avisé}} | * Niveau requis :{{tag>avisé}} | ||
- | * Commentaires : //Modifier la configuration réseau d'un environnement LXC // [[:doc:autres:vm:lxc-conteneur|Installer un conteneur LXC]] :-) | + | * Commentaires : //Modifier la configuration réseau d'un// : [[:doc:autres:vm:lxc|environnement LXC]]. ;-) |
* Suivi : | * Suivi : | ||
- | * Création par [[user>bendia]] 22/03/2014 | + | * Création par [[user>bendia]] 22/sources03/2014 |
* Mis à jour par [[user>greenmerlin]] 29/10/2016 | * Mis à jour par [[user>greenmerlin]] 29/10/2016 | ||
* Testé par [[user>captnfab]] le 01/07/2014 | * Testé par [[user>captnfab]] le 01/07/2014 | ||
Ligne 12: | Ligne 12: | ||
===== Introduction ===== | ===== Introduction ===== | ||
- | Lors d'une installation par défaut d'un conteneur LXC, le conteneur partage la même interface réseau que la machine hôte. Elle dispose donc de la même adresse IP, et partage les mêmes ports. On peut modifier la configuration réseau afin d'individualiser cette adresse. | + | Lors d'une [[doc:autres:vm:lxc|installation par défaut d'un conteneur LXC]], le conteneur partage la même interface réseau que la machine hôte. \\ |
- | ===== Préparer la machine hôte ===== | + | Elle dispose donc de la même [[doc:reseau:ip|adresse IP]], et en partage les mêmes ports. |
- | ==== Les outils ==== | + | On peut alors modifier la configuration réseau afin d'**individualiser cette adresse** ! ^_^ |
- | Il est nécessaire que la paquet //bridge-utils// soit installé. Si ce n'est pas le cas | + | ===== Préparer la machine hôte ===== |
+ | <note important>Il est nécessaire que la paquet //bridge-utils// soit installé.</note> | ||
+ | Si ce n'est pas le cas : | ||
<code root>apt-get install bridge-utils</code> | <code root>apt-get install bridge-utils</code> | ||
==== La configuration réseau de la machine hôte ==== | ==== 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. | ||
- | Au menu | + | Par défaut, un conteneur lxc n'aura aucune configuration réseau((sur une [[doc:systeme:apt:branches-debian|jessie]] //en tout cas//)), il revient d'abord de lui en configurer une. |
+ | |||
+ | **Au menu** : | ||
* SimpleBridge (NAT) | * SimpleBridge (NAT) | ||
* MasqueradedBridge | * MasqueradedBridge | ||
* VlanNetworking | * VlanNetworking | ||
- | + | <note tip>Dans notre exemple, nous ne verrons que le cas d'un //Pont Simple//</note> | |
- | Nous ne verrons que le "Pont Simple" dans notre example | + | - Création de l'interface réseaux de pont nommer lxcbr0<code root>brctl addbr lxcbr0</code> |
- | + | - On vérifie en utilisant [[doc:reseau:ip|la commande ip]] :<code root>ip addr show</code> | |
- | Création de l'interface réseaux de pont nommer lxcbr0 | + | - On ajoute l'interface a //bridger// : <code root>brctl addif br0 eth0</code> |
- | + | - Puis [[doc:systeme:ifup|on active le pont]] :<code root>ifup lxcbr0</code> | |
- | <code root>brctl addbr lxcbr0</code> | + | - [[doc:editeurs:nano|On édite]] ''/etc/network/interface'' pour configurer notre pont de manière permanente :<file config /etc/network/interface> |
- | + | ||
- | On vérifie par | + | |
- | + | ||
- | <code root>ip addr show</code> | + | |
- | + | ||
- | On ajoute l'interface a "bridger" | + | |
- | + | ||
- | <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 | # This file describes the network interfaces available on your system | ||
# and how to activate them. For more information, see interfaces(5). | # and how to activate them. For more information, see interfaces(5). | ||
Ligne 72: | Ligne 59: | ||
bridge_maxwait 0 | bridge_maxwait 0 | ||
</file> | </file> | ||
- | + | - À la suite, modifier la configuration de notre conteneur : \\ on édite le fichier ''/var/lib/lxc/proxies/config'' pour remplacer la valeur ''lxc.network.type = none'' :<file config /var/lib/lxc/proxies/config> | |
- | 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 | ||
Ligne 84: | Ligne 69: | ||
... | ... | ||
</file> | </file> | ||
- | + | - Redémarrez maintenant votre conteneur pour tester si vous avez le réseau. \\ **Note :** Vous n'avez pas **[[doc:reseau:ping|ping]]** d’installé par défaut sur votre conteneur c'est normal, testez plutôt avec **[[doc:systeme:apt:apt|apt]]** | |
- | 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 ===== | ===== Réseau facile avec Lxc-net ===== | ||
Ligne 93: | Ligne 75: | ||
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. | 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 : | + | Pour configurer cette interface de bridge lxcbr0 il faut créer un fichier //lxc-net// dans ''/etc/default/'' : |
+ | <code root>> /etc/default/lxc-net</code> | ||
+ | et y inscrire ceci : | ||
<code>USE_LXC_BRIDGE="true"</code> | <code>USE_LXC_BRIDGE="true"</code> | ||
- | Ensuite il faut éditer le fichier /etc/lxc/default.conf de façon à modifier la partie suivante : | + | Ensuite il faut éditer le fichier ''/etc/lxc/default.conf'' de façon à modifier la partie suivante : |
<code>lxc.network.type = empty</code> | <code>lxc.network.type = empty</code> | ||
par : | par : | ||
Ligne 106: | Ligne 90: | ||
#indique l'adresse MAC attribuée à l'interface | #indique l'adresse MAC attribuée à l'interface | ||
lxc.network.hwaddr = 00:16:3e:xx:xx:xx</code> | lxc.network.hwaddr = 00:16:3e:xx:xx:xx</code> | ||
- | + | [[doc:systeme:programmation:commenter|Les lignes précédées du #]] sont justes là en aide-mémoire pour expliquer la ligne qui les suit((il n'est donc pas nécessaire de les recopier ;-))). | |
- | 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 : | Pour finir il faut démarrer le réseau : | ||
<code root>service lxc-net start</code> | <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. | + | <note tip>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.</note> |
Source : [[https://wiki.debian.org/LXC]] | Source : [[https://wiki.debian.org/LXC]] | ||
Ligne 117: | Ligne 100: | ||
===== Réseau facile avec Network Manager ===== | ===== 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. | + | [[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-network-manager-command-line-interface|nmcli]] pour créer, rapidement, des bridges virtuels et partager des connexions internet entre l'hôte et des machines virtuelles.\\ | ||
+ | On peut utiliser cet outil aussi bien avec lxc que qemu. | ||
- | 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 ==== | ==== 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: | + | On veut créer un bridge, nommé ''lxcbr0'', sur l'hôte, qui aura comme [[doc:reseau:ip|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> | + | <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). | + | === Explication === |
- | Comme l'interface réseau 'virbr0' n'existe pas physiquement, elle est créée pour l'occasion et est, donc, virtuelle. | + | [[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**). \\ | ||
+ | L'interface réseau ''virbr0'' n'existe pas physiquement, elle n'est créée que pour l'occasion et donc elle est une //interface virtuelle//. | ||
+ | <note tip>En pratique, on essayera de donner le même nom au profil et à son interface réseau.</note> | ||
+ | Les directives //ipv4.method// et //ipv4.addresses// sont optionnelles. | ||
- | Les directives 'ipv4.method' et 'ipv4.addresses' sont optionnelles. | + | La directive **ipv4.method shared** signifie que le [[https://fr.wikipedia.org/wiki/Network_address_translation|NAT]] va être activé pour les machines virtuelles connectées au bridge.\\ |
+ | On peut le vérifier en interrogeant [[doc:reseau:iptables|le pare-feu]]. | ||
- | La directive 'ipv4.method shared' signifie que la connexion sera de type routeur NAT source. | + | Par exemple : |
- | On peut le vérifier en interrogeant le pare-feu. Par exemple: | + | |
<code root>iptables -t nat -L</code> | <code root>iptables -t nat -L</code> | ||
<code>Chain POSTROUTING (policy ACCEPT) | <code>Chain POSTROUTING (policy ACCEPT) | ||
target prot opt source destination | target prot opt source destination | ||
MASQUERADE all -- 192.168.2.0/24 !192.168.2.0/24</code> | MASQUERADE all -- 192.168.2.0/24 !192.168.2.0/24</code> | ||
+ | Par ailleurs, la directive **ipv4.method shared** active aussi le routage ipv4: | ||
+ | <code root>cat /proc/sys/net/ipv4/ip_forward</code> | ||
+ | <code>1</code> | ||
+ | De plus, elle lance //dnsmasq// pour fournir du service [[doc:reseau:dhcp|dhcp]] et [[doc:reseau:dns|dns]] aux invités. | ||
- | De plus, [[doc:reseau:network-manager|Network Manager]] va lancer dnsmasq pour fournir du service dhcp et dns aux invités. | + | Enfin, si on n'utilise pas la directive **ipv4.addresses**, |
+ | [[doc:reseau:network-manager|Network Manager]] va utiliser le réseau ''10.42.x.0/24'' par défaut. |