Ok, ich möchte wissen, wie man auf LXC-Containern vernetzt. Nicht nur die vagen Informationen, die Sie von den anderen Websites erhalten, sondern auch eine echte Anleitung für Anfänger, um sie zum Laufen zu bringen. Da die meisten Beispiele im Wesentlichen für Testzwecke eingerichtet sind, möchte ich einen Dienst für einen ... wie einen Webserver zum Beispiel.
Ich verwende Ubuntu 12.04 LTS und habe LXC installiert und kann einen Container erstellen, starten und stoppen. Mein Server hat offensichtlich eine öffentlich zugängliche IP und ich möchte wissen, wie man einen Container einrichtet, damit auch er eine öffentliche IP haben kann. Da anscheinend bereits eine Brücke zu meinem aktuellen Container vorhanden ist, muss ich den Containern entweder einen öffentlichen DHCP-Bereich zuweisen, damit sie arbeiten können, oder meinem Container manuell eine statische IP-Adresse zuweisen.
Wie kann ich dem Container eine statische IP zuweisen? Muss ich Änderungen an meiner Bridge-Konfiguration auf dem Host vornehmen? Ist es eigentlich besser, es mit der MACVLAN-Option zu tun?
Jede Hilfe wäre dankbar.
Antworten:
Mein Ansatz geht davon aus, dass Ihr Server eine einzige Netzwerkkarte hat und Sie diese Netzwerkkarte zwischen dem Host und den LXC-Gästen teilen müssen. Dies beinhaltet die Verwendung einer Brücke. Die Brücke besitzt und verwaltet
eth0
. Der Host konfiguriert nun seine eigene Vernetzung aufbr0
statteth0
. Die LXC-Gäste sind für die Verbindung mit der Bridge konfiguriert.Auf dem Host
sudo apt-get install bridge-utils
.Ersetzen Sie auf dem Host durch
eth0
eine Brücke:Das ist gefährlich. Wenn Sie dies falsch verstehen, können Sie von Ihrem Server ausgeschlossen werden. Stellen Sie sicher, dass eine lokale Anmeldung aktiviert ist und der lokale Konsolenzugriff funktioniert, damit Sie diese Änderung bei Problemen rückgängig machen können.
In
/etc/network/interfaces
:auto eth0
durchauto br0
.Ersetzen:
mit:
Wenn Sie eine statische Netzwerkkonfiguration hätten, würden Sie Folgendes ersetzen:
mit:
Sie ändern nur
eth0
fürbr0
und das Hinzufügen derbridge_ports eth0
Linie.Starten Sie den Host neu. Wenn Sie dies lokal tun, müssen
sudo ifdown eth0
Sie vor undsudo ifup br0
nach dem Start ausführen. Beachten Sie, dass das Hochfahren der Bridge einige Zeit dauern kann. Geben Sie sie daher fünf Minuten nach dem Neustart ein, bevor Sie davon ausgehen, dass alles verloren ist.So verschieben Sie einen angegebenen benannten LXC-Container auf eine öffentliche IP:
/var/lib/lxc/container_name/config
lxc.network.link
br0
/var/lib/lxc/container_name/rootfs/etc/network/interfaces
eth0
Wenn Sie die Standardeinstellung für neue LXC-Container ändern möchten, bearbeiten Sie sie
/etc/lxc/default.conf
auf dem Host und ändern Sie sielxc.network.link
inbr0
.Wenn Sie die von LXC bereitgestellte NAT-Bridge überhaupt nicht benötigen (dh alle Ihre Container verwenden stattdessen die neue Bridge), bearbeiten
/etc/default/lxc
und ändern SieUSE_LXC_BRIDGE
sie"false"
auf dem Host und führen Sie sie dann aussudo service lxc restart
.quelle
Robie, vielen Dank, dass du diese Antwort gepostet hast. Ich habe versucht, alles in Ordnung zu bringen, und das war die einzige Methode, die funktioniert hat!
Ich dachte, ich sollte ein paar Dinge erwähnen, die ich herausgefunden habe, um die Anweisungen für andere Administratoren zu klären.
Mein Host hatte auf dem Gast mehrere statische IP-Aliase, die eth0 zugewiesen waren, zum Beispiel:
Jetzt wollen wir br0 nicht so einrichten, wir wollen nur eine IP ohne Aliase wie Robie, wie oben angegeben.
Nehmen wir also an, Sie möchten, dass 5.5.5.5 dem Container debian8 zugewiesen wird.
Bearbeiten
/var/lib/lxc/debian8/etc/network/interfaces
und hinzufügen:Dann geben Sie diesen Befehl ein:
route add default gw <gateway-ip, in my case 5.5.5.1>
Danach starten Sie den Container neu und alles sollte endlich funktionieren! :)
quelle
Ich hatte das gleiche Problem und ich habe diese Lösung (schnell und schmutzig).
Auf dem Server:
route add -host 194.99.99.99 gw 10.255.255.100 dev lxdbr0
Fügen Sie bei Bedarf auch Route zu Upstream-Routern hinzu.
Wahrscheinlich nicht die beste Lösung, erfordert aber keinen großen Aufwand! Prost.
quelle