Stations de travail en ligne OnWorks Linux et Windows

Logo

Hébergement gratuit en ligne pour les postes de travail

<Précédent | Table des matières | Suivant>

6.4. La mise en réseau


Par défaut, LXC crée un espace de noms de réseau privé pour chaque conteneur, qui comprend une pile réseau de couche 2. Les conteneurs se connectent généralement au monde extérieur en faisant passer une carte réseau physique ou un point de terminaison de tunnel veth dans le conteneur. LXC crée un pont NAT, lxcbr0, au démarrage de l'hôte. Les conteneurs créés à l'aide de la configuration par défaut auront une carte réseau veth avec l'extrémité distante connectée au pont lxcbr0. Un NIC ne peut exister que dans un espace de noms à la fois, donc un NIC physique passé dans le conteneur n'est pas utilisable sur l'hôte.


Il est possible de créer un conteneur sans espace de noms de réseau privé. Dans ce cas, le conteneur aura accès au réseau hôte comme n'importe quelle autre application. Notez que ceci est particulièrement dangereux si le

conteneur exécute une distribution avec upstart, comme Ubuntu, puisque les programmes qui parlent à init, comme shutdown, parlera via le socket de domaine Unix abstrait au parvenu de l'hôte et arrêtera l'hôte.


Pour donner aux conteneurs sur lxcbr0 une adresse IP persistante basée sur le nom de domaine, vous pouvez écrire des entrées dans /etc/lxc/dnsmasq.conf comme:


dhcp-host=lxcmail,10.0.3.100 dhcp-host=trss,10.0.3.101


S'il est souhaitable que le conteneur soit accessible au public, il existe plusieurs manières de procéder. L'une consiste à utiliser

iptables pour transférer les ports hôtes vers le conteneur, par exemple


iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 587 -j DNAT \

--vers la destination 10.0.3.100:587


Une autre consiste à ponter les interfaces réseau de l'hôte (voir le chapitre Configuration réseau du Guide du serveur Ubuntu, Section 1.4, « Pontage » [p. 46]). Ensuite, spécifiez le pont de l'hôte dans le fichier de configuration du conteneur à la place de lxcbr0, par exemple


lxc.network.type = veth lxc.network.link = br0


Enfin, vous pouvez demander à LXC d'utiliser macvlan pour la carte réseau du conteneur. Notez que cela a des limites et, selon la configuration, peut ne pas permettre au conteneur de parler à l'hôte lui-même. Par conséquent, les deux autres options sont préférées et plus couramment utilisées.


Il existe plusieurs façons de déterminer l'adresse IP d'un conteneur. Tout d'abord, vous pouvez utiliser lxc-ls --fantaisie qui imprimera les adresses IP de tous les conteneurs en cours d'exécution, ou lxc-info -i -H -n C1 qui imprimera l'adresse IP de C1. Si dnsmasq est installé sur l'hôte, vous pouvez également ajouter une entrée à /etc/dnsmasq.conf comme suit


serveur=/lxc/10.0.3.1


après quoi dnsmasq résoudra C1.lxc localement, de sorte que vous puissiez faire :


ping C1 ssh C1


Pour plus d'informations, consultez la page de manuel lxc.conf ainsi que les exemples de configurations réseau sous /usr/share/doc/lxc/examples/.


Meilleur système d'exploitation Cloud Computing chez OnWorks :