Centos 7 – libvirt – LXC Container mit public IP und externem Netzwerk

In diesem Tutorial werden wir unseren LXC-Container eine IP aus unserem LAN vergeben. Somit ist es möglich unsere Container direkt von extern anzusprechen.

Voraussetzung für dieses Tutorial ist ein installiertes und lauffähiges libvirt-Setup. Ein detaillierte Anleitung findet man in dem Artikel Centos 7 im LXC-Container. Dieser dient uns auch als Grundlage für dieses HowTo.

Anpassen der Netzwerkkonfiguration

lxc-network-setting
libvirt Netzwerk Umgebung

Zuerst benötigen wir eine Bridge (br0). In diese binden wir unser primäres Netzwerk-Interface ein, also die Netzwerkkarte mit der wir auch mit unserem LAN verbunden sind. Die virtuellen NICs der LXC-Container die eine externe IP bekommen sollen werden dann dieser Bridge hinzugefügt. Alle andern kommen in das interne Netz, also in die Bridge (virbr0).

Netzwerkbrücke konfigurieren (br0)

In diesem Scenario heisst die physisch echte Netzwerkkarte enp2s0f5 dies kann je nach Hardware unterschiedlich sein.

Zuerst erstellen wir eine Netzwerkbrücke br0. Dazu erstellen wir eine Konfigurationsdatei /etc/sysconfig/network-scripts/ifcfg-br0.

dort fügen wir die gewünschte Netzwerkkonfiguration ein. Dies können die gleichen IP-Adressen sein die derzeit für die physische Schnittstelle konfiguriert sind.

Unserer physischen Netzwerkkarte sagen wir nun, dass diese zur Netzwerkbrücke gehört und geben ihr keine IP-Adresse. Diese wird jetzt in der Brücke definiert.

Dazu editieren wie die Datei /etc/sysconfig/network-scripts/ifcfg-enp2s0f5.

und fügen folgende Konfiguration ein.

Das war es schon. Um die Konfiguration der zweiten Brücke brauchen wir uns nicht kümmern, diese wird bei der Installation von libvirt schon angelegt. Nach einen Neustart des Netzwerkdienstes oder Reboot sollte wir mit brctl show unser neues Setup kontrollieren können.

Nun haben wir die Grundvorraussetzung für die Konfiguration von libvirt geschaffen. Wir haben 2 Netzwerkbrücken, jeweils für das externe Netzwerk br0 und für das interne virtuelle Netzwerk virtbr0.

externes Netzwerk in libvirt erstellen

Dazu erzeugen wir uns eine temporäre Datei extern.xml.

Dort definieren wir den Namen und die Netzwerkbrücke.

Eine zufällige MAC-Adressen können wir folgendermaßen erzeugen.

Eine zufällige UUID bekommen wir so.

Jetzt binden wir unser Netzwerk in libvirt ein. Dazu starten wir die Verwaltungskonsole virsh.

Wir können uns alle bestehenden Netzwerke anzeigen lassen.

Unser externes Netzwerk fügen wir nun hinzu.

Nun starten wir das neue externe Netzwerk.

Wir können dies nun wieder anzeigen lassen.

Zum Autostart fügen wir es wie folgt hinzu.

libvirt LXC-Container mit externer IP erstellen

Beim Erstellen eines neuen Containers kann nun mit dem Parameter –network network:extern unser neues Netzwerk ausgewählt werden.

Innerhalb des LXC Containers kann alles wir gewohnt konfiguriert werden. DHCP falls gewünscht bekommt der LXC Container nun vom externen Router nicht mehr von libvirt.

Fazit

Ich weise nochmal darauf hin, dass sich dieses Tutorial auf meine Testumgebung bezieht. Ein stumpfes Abtippen wird nicht zum Erfolg führen :D

Es ist ratsam, sich nochmal die Dokumentation von libvirt zu diesem Thema anzusehen.

Fragen dazu können gern in den Kommentaren gestellt werden.

 

Eine Antwort auf „Centos 7 – libvirt – LXC Container mit public IP und externem Netzwerk“

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.