Tutorial: VMs mit libvirt und virtuellem Netzwerk

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
Benutzeravatar
paedubucher
Beiträge: 856
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Tutorial: VMs mit libvirt und virtuellem Netzwerk

Beitrag von paedubucher » 01.08.2020 23:05:36

Ich habe mir länger daran die Zähne ausgebissen mit libvirt eine Reihe von VMs aufzusetzen, die untereinander und mit dem Host kommunizieren können. Da ich es nun doch fertig gebracht habe, habe ich meine Erfahrungen in einem kleinen Tutorial zusammengetragen: Virtual Machines with libvirt and Networking. Vielleicht ist dieser Artikel jemandem hier dienlich, und vielleicht hat auch jemand Verbesserungsvorschläge. Vielleicht hat noch jemand von Erfahrungen mit anderen Werkzeugen (VirtualBox, Vagrant usw.) zu berichten. Das würde mich auch interessieren!
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

Benutzeravatar
novalix
Beiträge: 1909
Registriert: 05.10.2005 12:32:57
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: elberfeld

Re: Tutorial: VMs mit libvirt und virtuellem Netzwerk

Beitrag von novalix » 02.08.2020 12:44:45

Gute Sache!

Ich habe vor ein paar Wochen ein ähnliches Setup bei mir zu Hause ad hoc aufgesetzt, um einen uralten Webauftritt auf einem ebenso uralten Serversystem (SLES 8.1) in ein modernes System zu migrieren.
Die virsh ist ja so ein umfangreiches tool, dass man im ersten Zugriff davor steht wie der Ochse vorm Berg. Überraschenderweise gibt es nur wenige so klar strukturierte Tutorials für die Basics der Netzwerkeinrichtung, wie das von Dir vorgelegte. Hätte mir ein paar Stündchen Einrichtungszeit gespart. :mrgreen:
Ansonsten benutze ich für die logische Separierung, so lange das Sinn macht, Linux Container. Das oben angesprochene Legacy System läuft mittlerweile als Buster LXC-Container auf einer gemieteten KVM-Instanz.
Das Wem, Wieviel, Wann, Wozu und Wie zu bestimmen ist aber nicht jedermannns Sache und ist nicht leicht.
Darum ist das Richtige selten, lobenswert und schön.

Benutzeravatar
paedubucher
Beiträge: 856
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Re: Tutorial: VMs mit libvirt und virtuellem Netzwerk

Beitrag von paedubucher » 02.08.2020 14:52:35

novalix hat geschrieben: ↑ zum Beitrag ↑
02.08.2020 12:44:45
Ich habe vor ein paar Wochen ein ähnliches Setup bei mir zu Hause ad hoc aufgesetzt, um einen uralten Webauftritt auf einem ebenso uralten Serversystem (SLES 8.1) in ein modernes System zu migrieren.
Bei mir ist es ein aktuelles Debian-System. Ich möchte dieses aber nicht manuell administrieren, sondern automatisiert.
novalix hat geschrieben: Die virsh ist ja so ein umfangreiches tool, dass man im ersten Zugriff davor steht wie der Ochse vorm Berg.
Und vor allem muss man die verschiedenen Sachen auseinanderhalten: KVM, libvirt, qemu. Sonst sucht man sich dämlich.

Auch hatte ich zu Beginn viele Sachen als normaler Benutzer gemacht. Ohne root/sudo gibt es aber keinen Zugriff auf das Netzwerk.
novalix hat geschrieben: Überraschenderweise gibt es nur wenige so klar strukturierte Tutorials für die Basics der Netzwerkeinrichtung, wie das von Dir vorgelegte. Hätte mir ein paar Stündchen Einrichtungszeit gespart. :mrgreen:
Danke für die positive Rückmeldung! Tutorials müssen halt von jemandem geschrieben werden. Und wenn keine da sind, hat man eben die Gelegenheit, derjenige zu sein, der den ersten Schritt macht. Ich war aber auch überrascht, nichts zu finden, was so ein Setup erläutern würde.
novalix hat geschrieben: Ansonsten benutze ich für die logische Separierung, so lange das Sinn macht, Linux Container. Das oben angesprochene Legacy System läuft mittlerweile als Buster LXC-Container auf einer gemieteten KVM-Instanz.
LXC habe ich noch gar nicht gekannt. Ist das grob wie ein Container zu verstehen, der sowas wie systemd als ersten Prozess ausführt?
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

Benutzeravatar
novalix
Beiträge: 1909
Registriert: 05.10.2005 12:32:57
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: elberfeld

Re: Tutorial: VMs mit libvirt und virtuellem Netzwerk

Beitrag von novalix » 02.08.2020 19:21:14

paedubucher hat geschrieben: ↑ zum Beitrag ↑
02.08.2020 14:52:35
LXC habe ich noch gar nicht gekannt. Ist das grob wie ein Container zu verstehen, der sowas wie systemd als ersten Prozess ausführt?
Ja genau, das Akronym steht für LinuX Container. Das basiert auf Kernel Namespaces und Cgroups und ist dementsprechend leichtgewichtig. Die BSDs hatten so etwas schon lange Zeit vorher unter dem Bezeichner Jails.
Docker hat zu Beginn auf LXC aufgesetzt, sich dann aber verselbstständigt.
Im Vergleich zu Docker ist LXC weniger ein geschlossener Container, den man mehr oder weniger nur von aussen mit dem Kran anpackt, sondern ein vollständiges Userland, dass sich dementsprechend administrieren lässt.
Das Wem, Wieviel, Wann, Wozu und Wie zu bestimmen ist aber nicht jedermannns Sache und ist nicht leicht.
Darum ist das Richtige selten, lobenswert und schön.

TomL

Re: Tutorial: VMs mit libvirt und virtuellem Netzwerk

Beitrag von TomL » 03.08.2020 19:37:45

paedubucher hat geschrieben: ↑ zum Beitrag ↑
02.08.2020 14:52:35
Ich war aber auch überrascht, nichts zu finden, was so ein Setup erläutern würde.
Ich glaube, das hängt damit zusammen, dass dieses Thema von seinem Wesen und Umfang her schlichtweg untutorialierbar ist (*lol* habe gerade ein neues Wort erfunden). Es fängt genau ab dem Moment an, untutorialierbar zu sein, wenn man mehr als das eher anspruchslose Setup mit dem genatteten Default-Netzwerk im Sinne hat. Die Variabilität der Distributionen beim Einsatz ihrer Netzwerk-Einrichtungstools bremst einen dann an jeder nur denkbaren Stelle wirksam aus. Man weiß irgendwann gar nicht mehr, wo man ansetzen soll, wenn man ein Paar erläuternde Zeilen schreibt, die auf der einen Distribution funktionieren, aber mit laufenden Tools einer anderen Distri in Konflikt stehen. Oder wenn ein Setup zwar mit eth funktioniert, aber auf einem anderen System nicht mit wlan. Und wenns dann auch noch um den Anspruch "strukturiert" geht, ist man am Ende der Sackgasse angelangt. Ich habs im letzten Winter über mehrere Wochen versucht ... aussichtslos, ich habe einen nach dem anderen Entwurf als untauglich deklarieren müssen.... bis ich irgendwann entnervt aufgehört habe.

Im Frühjahr, so Anfang April, hatte ich eine neue Idee, wie man die feststeckende Karre mit einem vollständigen Perspektiv-Wechsel vielleicht doch noch ans rollen bringen kann. Die Idee war: alles zurück auf Start.... eine vergleichbare Basis schaffen, egal was als Default-Setup fürs Netzwerk eingerichtet wurde. Seit dem bastele ich daran rum. Und auch dabei hatte ich mehr als nur einmal den Finger auf der F8-Taste im Midnight-Commander und war versucht, das als zu kompliziert zu verwerfen. Es ist jetzt ein zufälliges Ereignis, dass gerade jetzt dieser Thread das Thema öffnet. Vielleicht enthält mein Versuch zu einem Tutorial ja doch noch ein paar Hilfen und Anregungen.

Benutzeravatar
paedubucher
Beiträge: 856
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Re: Tutorial: VMs mit libvirt und virtuellem Netzwerk

Beitrag von paedubucher » 04.08.2020 19:50:53

@TomL: Da mein Setup so trivial ist, ist es doch so überraschend, dass man kaum Tutorials dazu findet. Du hast natürlich einen weit grösseren Anspruch. Dass überhaupt jemand an einem solchen Tutorial arbeitet, überrascht mich doch positiv. Ich werde mich gelegentlich damit beschäftigen, und glaube, dass ich davon viel lernen kann!
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

TomL

Re: Tutorial: VMs mit libvirt und virtuellem Netzwerk

Beitrag von TomL » 04.08.2020 20:18:08

paedubucher hat geschrieben: ↑ zum Beitrag ↑
04.08.2020 19:50:53
Da mein Setup so trivial ist,....
Das habe ich aber so nicht ausdrücken wollen. Ich halte das ganze Thema nämlich überhaupt nicht für trivial. Es ist nur das Setup, was als einziges als Startup-Setup direkt vom Virt-Manager unterstützt wird und sowohl auf eth- als auch auf wlan-Devices läuft. Es wird die Bridge eingerichtet, der DHCP-Server und das Masquerading fürs NAT über den Paketfilter. Das ist wirklich nicht trivial, man kriegt das nur nicht mit, weils der Virt-Manager tut. Aber dieses Setup hat eben auch Grenzen. Und wenn man die hinter sich lassen will, wird es meiner Meinung nach eben sehr anspruchsvoll.

Benutzeravatar
paedubucher
Beiträge: 856
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Re: Tutorial: VMs mit libvirt und virtuellem Netzwerk

Beitrag von paedubucher » 04.08.2020 21:49:45

TomL hat geschrieben: ↑ zum Beitrag ↑
04.08.2020 20:18:08
paedubucher hat geschrieben: ↑ zum Beitrag ↑
04.08.2020 19:50:53
Da mein Setup so trivial ist,....
Das habe ich aber so nicht ausdrücken wollen. Ich halte das ganze Thema nämlich überhaupt nicht für trivial. Es ist nur das Setup, was als einziges als Startup-Setup direkt vom Virt-Manager unterstützt wird und sowohl auf eth- als auch auf wlan-Devices läuft.
Vielleicht nicht trivial, aber zumindest "üblich" oder "grundlegend". Ein paar VMs, die miteinander und gegen aussen kommunizieren können ist wohl der zweite Schritt, nachdem man mal eine einzelne VM aufgesetzt hat.

Tatsächlich sind hier einige Schritte dabei, die mich einiges an Zeit gekostet haben.
TomL hat geschrieben: Es wird die Bridge eingerichtet, der DHCP-Server und das Masquerading fürs NAT über den Paketfilter. Das ist wirklich nicht trivial, man kriegt das nur nicht mit, weils der Virt-Manager tut. Aber dieses Setup hat eben auch Grenzen. Und wenn man die hinter sich lassen will, wird es meiner Meinung nach eben sehr anspruchsvoll.
Das erwünschte Setup ist eigentlich ein ganz gewöhnlicher Use Case, die Einrichtung ist aber, wie wir festgestellt haben, alles andere als trivial. Es fragt sich, warum. Sind die Tools noch nicht ausgereift? Verstehen wir diese noch zu wenig? Oder haben wir es bei VMs mit Netzwerk schlichtweg mit einer "leaky abstraction" zu tun, und wir also tieferes Verständnis über das Problem benötigen?
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

Antworten