VM mittels Vagrant/libvirt im Netz verfügbar machen
-
Hallo,
ich will mir für Experimente ein kleines Neutzwerk aufbauen und habe mangels Blech vor, das Ganze mittels VMs auf einem extra Rechner umzusetzen. Hierz nutze ich Vagrant mit libvirt im Hintergrund auf einem Debian Bookworm.
Der Einfachheit halber möchte ich sämtliche virtuellen Maschinen direkt von meinem PC aus erreichen können.Hierzu baut nach meinem Verständniss libvirt eine virtuelle bridge auf (virbr0) die ich auch sehen kann, allerdings nur als root:
$ sudo brctl show bridge name bridge id STP enabled interfaces virbr0 8000.52540096e2dd yes
Was mich hier wundert ist, dass der bridge kein Interface zugeordnet ist, ich Nappel weiß aber auch nicht, wie ich dieses tun sollte.. Mein letzter Versuch endete damit, dass der Server gar nicht mehr im Netz verfügbar war und ich ihn neu starten musste.. (Edit siehe unten)
Laut Anleitung soll dann das Vagrantfile ca. so aussehen.
# -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure("2") do |config| # first initialize the basic box parameters config.vm.box = "generic/debian11" config.vm.host_name = "draft" config.vm.network :public_network, :dev => "virbr0", :mode => "bridge", :type => "bridge" end
Wenn ich die Maschine starten möchte passiert aber Folgendes
$ vagrant up Bringing machine 'default' up with 'libvirt' provider... There are errors in the configuration of this machine. Please fix the following errors and try again: Libvirt Provider: * network configuration 0 for machine default is a public_network referencing host device 'virbr0' which does not exist, consider adding ':dev => ....' referencing one of eno1
Meine aktuelle Vermutung ist, dass da ein Berechtigungsproblem existiert.. Aber ich hab keinen Plan, wo genau in dieser Kette OS<->qemu<->libvirt<->vagrant das liegt..
Hat jemand das Phänomen schonmal gehabt und kann mir einen Hinweis geben? Die gemeingültigen Suchmaschinen sind mir da nicht geholfen...
Edit:
Das virbr0 ist auf jeden fall auch auf dem Host da:$ ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master virbr0 state UP group default qlen 1000 link/ether 40:b0:34:f7:c5:39 brd ff:ff:ff:ff:ff:ff altname enp0s31f6 inet 192.168.178.146/24 brd 192.168.178.255 scope global dynamic eno1 valid_lft 780289sec preferred_lft 780289sec inet6 2a02:2454:3d9:600:42b0:34ff:fef7:c539/64 scope global dynamic mngtmpaddr valid_lft 6721sec preferred_lft 3121sec inet6 fe80::42b0:34ff:fef7:c539/64 scope link valid_lft forever preferred_lft forever 3: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 52:54:00:96:e2:dd brd ff:ff:ff:ff:ff:ff inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0 valid_lft forever preferred_lft forever
Zwischenzeitlich hab ich noch rausgefunden, dass ein Neustart nach dem brctl addif virbr0 eno1 nicht notwendig gewesen wäre, der Rechner kriegt sich nach zwei Minuten auch so wieder ein.. Netzwerken war noch nie meine Stärke.. Deshalb mach ich den Blödsinn ja zu Fuß..
Ändert aber leider nix am Gesamtergebnis..
-
Ich erinner mich an ein aehnliches problem das ich vor einigen jahren hatte. libvirt konnte keine systemd networkd managed networks finden. allerdings wurde das soweit mir bekannt upstream gefixt, sollte also kein problem mehr sein wenn du einen halbewegs aktuellen stack benutzt.
kannst mal output von
virsh -c qemu:///system iface-list --all
undvirsh version
posten?
-
Aber sicher:
$ virsh -c qemu:///system iface-list --all Name Status MAC-Adresse --------------------------------------- eno1 Aktiv 40:b0:34:f7:c5:39 lo Inaktiv 00:00:00:00:00:00 virbr0 Inaktiv 52:54:00:96:e2:dd $ virsh version Kompiliert gegen die Bibliothek: libvirt 9.0.0 Verwende Bibliothek: libvirt 9.0.0 Verwende API: QEMU 9.0.0 Laufender Hypervisor: QEMU 7.2.0 $ uname -a Linux kublech 6.1.0-7-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.20-1 (2023-03-19) x86_64 GNU/Linux