Ok, donc je veux savoir comment faire du réseautage sur des conteneurs LXC. Pas seulement le genre d'informations vagues que vous obtenez des autres sites Web, mais un véritable guide pour les débutants pour les faire fonctionner .. Étant donné que la plupart des exemples sont essentiellement configurés pour que les gens puissent les tester, je veux exécuter un service sur un ... comme un serveur web par exemple.
J'utilise Ubuntu 12.04 LTS et j'ai installé LXC et je peux créer, démarrer et arrêter un conteneur. Mon serveur a évidemment une adresse IP publique et je voudrais savoir comment configurer un conteneur pour qu'il puisse lui aussi avoir une adresse IP publique. Puisqu'il semble déjà y avoir un pont en place à partir de mon conteneur actuel, il semblerait que je dois donner aux conteneurs une plage DHCP publique pour qu'ils fonctionnent ou attribuer manuellement une adresse IP statique à mon conteneur.
Si je veux attribuer statiquement une IP au conteneur, comment faire? Dois-je apporter des modifications à ma configuration de pont sur l'hôte? Est-il vraiment préférable de le faire avec l'option MACVLAN?
Toute aide serait appréciée.
Réponses:
Mon approche suppose que votre serveur possède une seule carte réseau et que vous devez partager cette carte réseau entre l'hôte et les invités LXC. Cela implique l'utilisation d'un pont. Le pont possède et gère
eth0
. L'hôte configure maintenant son propre réseau surbr0
au lieu deeth0
. Les invités LXC sont configurés pour se connecter au pont.Sur l'hôte,
sudo apt-get install bridge-utils
.Sur l'hôte, remplacez
eth0
par un pont:C'est dangereux. Se tromper et vous pourriez être verrouillé hors de votre serveur. Assurez-vous d'avoir une connexion locale activée et que l'accès à la console locale fonctionne, afin que vous puissiez annuler cette modification en cas de problème.
Dans
/etc/network/interfaces
:auto eth0
parauto br0
.Remplacer:
avec:
Si vous aviez une configuration réseau statique, vous remplaceriez alors:
avec:
Vous êtes juste changer
eth0
pourbr0
et en ajoutant labridge_ports eth0
ligne.Redémarrez l'hôte. Si vous faisiez cela localement, alors en cours d'exécution
sudo ifdown eth0
avant de commencer, etsudo ifup br0
ensuite le ferait également. Notez que le pont peut prendre un peu de temps à se lever, alors donnez-lui cinq minutes après le redémarrage avant de supposer que tout est perdu.Pour déplacer un conteneur LXC nommé donné vers une IP publique:
/var/lib/lxc/container_name/config
lxc.network.link
br0
/var/lib/lxc/container_name/rootfs/etc/network/interfaces
eth0
Pour modifier la valeur par défaut des nouveaux conteneurs LXC, modifiez
/etc/lxc/default.conf
sur l'hôte et changezlxc.network.link
enbr0
.Si vous n'avez pas du tout besoin du pont NAT fourni par LXC (c'est-à-dire que tous vos conteneurs utiliseront le nouveau pont à la place), alors sur l'hôte, éditez
/etc/default/lxc
et changezUSE_LXC_BRIDGE
en"false"
, puis sur l'hôtesudo service lxc restart
.la source
Robie, merci beaucoup d'avoir posté cette réponse, j'ai taré mes cheveux en essayant de faire avancer les choses et cela a été la seule méthode qui a fonctionné!
J'ai pensé que je devrais mentionner quelques choses que j'ai découvertes afin d'aider à clarifier les instructions pour les autres administrateurs.
Mon hôte avait plusieurs alias IP statiques assignés à eth0 sur l'invité, par exemple:
Maintenant, nous ne voulons pas configurer br0 de la même manière, nous voulons juste une adresse IP sans alias comme Robie indiqué ci-dessus.
Disons donc que vous voulez que 5.5.5.5 soit assigné au conteneur debian8.
Modifiez
/var/lib/lxc/debian8/etc/network/interfaces
et ajoutez:Exécutez ensuite cette commande:
route add default gw <gateway-ip, in my case 5.5.5.1>
Après cela, redémarrez le conteneur et tout devrait enfin fonctionner! :)
la source
J'ai eu le même problème et j'ai cette solution (rapide et sale).
Sur le serveur:
route add -host 194.99.99.99 gw 10.255.255.100 dev lxdbr0
En outre, si nécessaire, ajoutez une route aux routeurs en amont.
Probablement pas la meilleure solution mais cela ne demande pas beaucoup d'efforts! À votre santé.
la source