ubuntuusers.de

Will dass libvirt-VM sich normal per DHCP IP vom Router holt

Status: Ungelöst | Ubuntu-Version: Kubuntu 26.04 (Resolute Raccoon)
Antworten |

Notting

Anmeldungsdatum:
24. November 2007

Beiträge: 91

Hallo!

Versuche gerade gemäß https://www.home-assistant.io/installation/linux/ Abschnitt KVM (virt-install) diese VM aufzusetzen. Dann ist die aber wohl in einem NAT, ich will aber insb. mit dem Web-Browser von anderen Geräten im LAN auf den HTTP-Dienst unter Port 8123 kommen.

Mein Problem mit den Anleitungen im Internet ist, dass sie total verwirrend sind. Manchmal steht dort ein Konfig-Schnipsel, aber nicht in welche Datei das gehört. Oder ich soll das phys. Interface aus unerklärten Gründen löschen.

Was muss ich also tun?

Aus der VM:

2: enp0s2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:63:b6:a2 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.92/24 brd 192.168.122.255 scope global dynamic noprefixroute enp0s2
       valid_lft 2240sec preferred_lft 2240sec
    inet6 fe80::7b06:663a:d2cd:ef11/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

Vom Host:

# nmcli con show
NAME                         UUID                                  TYPE      DEVICE
Kabelgebundene Verbindung 1  f1c673b9-9cd4-37d2-8268-d00c2745352a  ethernet  enp2s0
lo                           cf095c88-0a05-4486-9bbb-c0dc93c467ec  loopback  lo
virbr0                       578cb48c-428d-439c-872e-f47aa97b8785  bridge    virbr0
vnet0                        2323817b-1e46-473b-bb48-2db9de72e967  tun       vnet0

"Kabelgebundene Verbindung 1" kriegt vom Router wie gewünscht eine IP im Bereich 10.0.0.x. Wüsste nicht, dass ich bewusst virbr0 und vnet0 angelegt hätte, könnte von virt-install gemacht worden sein.

virbr0:

connection.id:                          virbr0
connection.uuid:                        578cb48c-428d-439c-872e-f47aa97b8785
connection.stable-id:                   --
connection.type:                        bridge
connection.interface-name:              virbr0
connection.autoconnect:                 ja
connection.autoconnect-priority:        0
connection.autoconnect-retries:         -1 (default)
connection.multi-connect:               0 (default)
connection.auth-retries:                -1
connection.timestamp:                   1782457134
connection.permissions:                 --
connection.zone:                        --
connection.controller:                  --
connection.master:                      --
connection.slave-type:                  --
connection.port-type:                   --
connection.autoconnect-slaves:          -1 (default)
connection.autoconnect-ports:           -1 (default)
connection.down-on-poweroff:            -1 (default)
connection.secondaries:                 --
connection.gateway-ping-timeout:        0
connection.ip-ping-timeout:             0
connection.ip-ping-addresses:           --
connection.ip-ping-addresses-require-all:-1 (default)
connection.metered:                     unbekannt
connection.lldp:                        default
connection.mdns:                        -1 (default)
connection.llmnr:                       -1 (default)
connection.dns-over-tls:                -1 (default)
connection.mptcp-flags:                 0x0 (default)
connection.wait-device-timeout:         -1
connection.wait-activation-delay:       -1
802-3-ethernet.port:                    --
802-3-ethernet.speed:                   0
802-3-ethernet.duplex:                  --
802-3-ethernet.auto-negotiate:          nein
802-3-ethernet.mac-address:             --
802-3-ethernet.cloned-mac-address:      --
802-3-ethernet.generate-mac-address-mask:--
802-3-ethernet.mac-address-denylist:    --
802-3-ethernet.mtu:                     auto
802-3-ethernet.s390-subchannels:        --
802-3-ethernet.s390-nettype:            --
802-3-ethernet.s390-options:            --
802-3-ethernet.wake-on-lan:             default
802-3-ethernet.wake-on-lan-password:    --
802-3-ethernet.accept-all-mac-addresses:-1 (default)
ipv4.method:                            manual
ipv4.dns:                               --
ipv4.dns-search:                        --
ipv4.dns-options:                       --
ipv4.dns-priority:                      0
ipv4.addresses:                         192.168.122.1/24
ipv4.gateway:                           --
ipv4.routes:                            --
ipv4.route-metric:                      -1
ipv4.route-table:                       0 (unspec)
ipv4.routing-rules:                     --
ipv4.replace-local-rule:                -1 (default)
ipv4.dhcp-send-release:                 -1 (default)
ipv4.routed-dns:                        -1 (default)
ipv4.ignore-auto-routes:                nein
ipv4.ignore-auto-dns:                   nein
ipv4.dhcp-client-id:                    --
ipv4.dhcp-iaid:                         --
ipv4.dhcp-dscp:                         --
ipv4.dhcp-timeout:                      0 (default)
ipv4.dhcp-send-hostname-deprecated:     ja
ipv4.dhcp-send-hostname:                -1 (default)
ipv4.forwarding:                        -1 (default)
ipv4.dhcp-hostname:                     --
ipv4.dhcp-fqdn:                         --
ipv4.dhcp-hostname-flags:               0x0 (none)
ipv4.never-default:                     nein
ipv4.may-fail:                          ja
ipv4.required-timeout:                  -1 (default)
ipv4.dad-timeout:                       -1 (default)
ipv4.dhcp-vendor-class-identifier:      --
ipv4.dhcp-ipv6-only-preferred:          -1 (default)
ipv4.link-local:                        0 (default)
ipv4.dhcp-reject-servers:               --
ipv4.auto-route-ext-gw:                 -1 (default)
ipv4.shared-dhcp-range:                 --
ipv4.shared-dhcp-lease-time:            0 (default)
ipv6.method:                            disabled
ipv6.dns:                               --
ipv6.dns-search:                        --
ipv6.dns-options:                       --
ipv6.dns-priority:                      0
ipv6.addresses:                         --
ipv6.gateway:                           --
ipv6.routes:                            --
ipv6.route-metric:                      -1
ipv6.route-table:                       0 (unspec)
ipv6.routing-rules:                     --
ipv6.replace-local-rule:                -1 (default)
ipv6.dhcp-send-release:                 -1 (default)
ipv6.routed-dns:                        -1 (default)
ipv6.ignore-auto-routes:                nein
ipv6.ignore-auto-dns:                   nein
ipv6.never-default:                     nein
ipv6.may-fail:                          ja
ipv6.required-timeout:                  -1 (default)
ipv6.ip6-privacy:                       -1 (default)
ipv6.temp-valid-lifetime:               0 (default)
ipv6.temp-preferred-lifetime:           0 (default)
ipv6.addr-gen-mode:                     default
ipv6.ra-timeout:                        0 (default)
ipv6.mtu:                               auto
ipv6.dhcp-pd-hint:                      --
ipv6.dhcp-duid:                         --
ipv6.dhcp-iaid:                         --
ipv6.dhcp-timeout:                      0 (default)
ipv6.dhcp-send-hostname-deprecated:     ja
ipv6.dhcp-send-hostname:                -1 (default)
ipv6.dhcp-hostname:                     --
ipv6.dhcp-hostname-flags:               0x0 (none)
ipv6.auto-route-ext-gw:                 -1 (default)
ipv6.token:                             --
bridge.mac-address:                     --
bridge.stp:                             ja
bridge.priority:                        32768
bridge.forward-delay:                   2
bridge.hello-time:                      2
bridge.max-age:                         20
bridge.ageing-time:                     300
bridge.group-forward-mask:              0
bridge.multicast-snooping:              ja
bridge.vlan-filtering:                  nein
bridge.vlan-default-pvid:               1
bridge.vlans:                           --
proxy.method:                           none
proxy.browser-only:                     nein
proxy.pac-url:                          --
proxy.pac-script:                       --
GENERAL.NAME:                           virbr0
GENERAL.UUID:                           578cb48c-428d-439c-872e-f47aa97b8785
GENERAL.DEVICES:                        virbr0
GENERAL.IP-IFACE:                       virbr0
GENERAL.STATE:                          aktiviert
GENERAL.DEFAULT:                        nein
GENERAL.DEFAULT6:                       nein
GENERAL.SPEC-OBJECT:                    --
GENERAL.VPN:                            nein
GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/3
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/3
GENERAL.ZONE:                           --
GENERAL.MASTER-PATH:                    --
IP4.ADDRESS[1]:                         192.168.122.1/24
IP4.GATEWAY:                            --
IP4.ROUTE[1]:                           dst = 192.168.122.0/24, nh = 0.0.0.0, mt = 0
IP6.GATEWAY:                            --

vnet0:

connection.id:                          vnet0
connection.uuid:                        2323817b-1e46-473b-bb48-2db9de72e967
connection.stable-id:                   --
connection.type:                        tun
connection.interface-name:              vnet0
connection.autoconnect:                 ja
connection.autoconnect-priority:        0
connection.autoconnect-retries:         -1 (default)
connection.multi-connect:               0 (default)
connection.auth-retries:                -1
connection.timestamp:                   1782460229
connection.permissions:                 --
connection.zone:                        --
connection.controller:                  578cb48c-428d-439c-872e-f47aa97b8785
connection.master:                      578cb48c-428d-439c-872e-f47aa97b8785
connection.slave-type:                  bridge
connection.port-type:                   bridge
connection.autoconnect-slaves:          -1 (default)
connection.autoconnect-ports:           -1 (default)
connection.down-on-poweroff:            -1 (default)
connection.secondaries:                 --
connection.gateway-ping-timeout:        0
connection.ip-ping-timeout:             0
connection.ip-ping-addresses:           --
connection.ip-ping-addresses-require-all:-1 (default)
connection.metered:                     unbekannt
connection.lldp:                        default
connection.mdns:                        -1 (default)
connection.llmnr:                       -1 (default)
connection.dns-over-tls:                -1 (default)
connection.mptcp-flags:                 0x0 (default)
connection.wait-device-timeout:         -1
connection.wait-activation-delay:       -1
bridge-port.priority:                   32
bridge-port.path-cost:                  2
bridge-port.hairpin-mode:               nein
bridge-port.vlans:                      --
tun.mode:                               2 (tap)
tun.owner:                              --
tun.group:                              --
tun.pi:                                 nein
tun.vnet-hdr:                           nein
tun.multi-queue:                        nein
GENERAL.NAME:                           vnet0
GENERAL.UUID:                           2323817b-1e46-473b-bb48-2db9de72e967
GENERAL.DEVICES:                        vnet0
GENERAL.IP-IFACE:                       vnet0
GENERAL.STATE:                          aktiviert
GENERAL.DEFAULT:                        nein
GENERAL.DEFAULT6:                       nein
GENERAL.SPEC-OBJECT:                    --
GENERAL.VPN:                            nein
GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/4
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/4
GENERAL.ZONE:                           --
GENERAL.MASTER-PATH:                    /org/freedesktop/NetworkManager/Devices/3
IP4.GATEWAY:                            --
IP6.ADDRESS[1]:                         fe80::fc54:ff:fe63:b6a2/64
IP6.GATEWAY:                            --
IP6.ROUTE[1]:                           dst = fe80::/64, nh = ::, mt = 256

Danke im Voraus.

leidenlinux27

Anmeldungsdatum:
25. Mai 2026

Beiträge: 30

Du willst nicht virbr0 benutzen, das ist das libvirt-NAT mit 192.168.122.0/24. Wenn die VM direkt eine 10.0.0.x vom Router bekommen soll, brauchst du eine Bridge auf der echten Karte enp2s0 und die VM muss an diese Bridge statt an default/virbr0 gehängt werden.

Mit NetworkManager ist der grobe Weg: neue Bridge z.B. br0 anlegen, enp2s0 als Bridge-Port hinzufügen, die bisherige IPv4/DHCP-Konfiguration von "Kabelgebundene Verbindung 1" auf br0 legen, dann die VM-Netzwerkkarte in virt-manager auf Bridge br0 umstellen. Nicht vnet0 manuell anfassen, das ist nur das TAP-Interface der laufenden VM.

Notting

(Themenstarter)

Anmeldungsdatum:
24. November 2007

Beiträge: 91

Hab mich an https://lukas.zapletalovi.com/posts/2015/fedora-22-libvirt-with-bridge/ orientiert.

export MAIN_CONN=enp0s2
bash -x <<EOS
systemctl stop libvirtd
nmcli c delete "$MAIN_CONN"
nmcli c delete "Kabelgebundene Verbindung 1"
nmcli c add type bridge ifname br0 autoconnect yes con-name br0 stp off
nmcli c add type bridge-slave autoconnect yes con-name "$MAIN_CONN" ifname "$MAIN_CONN" master br0
systemctl restart NetworkManager
systemctl start libvirtd
systemctl enable libvirtd
echo "net.ipv4.ip_forward = 1" | sudo tee /etc/sysctl.d/99-ipforward.conf
sysctl -p /etc/sysctl.d/99-ipforward.conf
EOS

Ausgabe über SSH:

root@b-ha-p845t:~# export MAIN_CONN=enp0s2
bash -x <<EOS
systemctl stop libvirtd
nmcli c delete "$MAIN_CONN"
nmcli c delete "Kabelgebundene Verbindung 1"
nmcli c add type bridge ifname br0 autoconnect yes con-name br0 stp off
nmcli c add type bridge-slave autoconnect yes con-name "$MAIN_CONN" ifname "$MAIN_CONN" master br0
systemctl restart NetworkManager
systemctl start libvirtd
systemctl enable libvirtd
echo "net.ipv4.ip_forward = 1" | sudo tee /etc/sysctl.d/99-ipforward.conf
sysctl -p /etc/sysctl.d/99-ipforward.conf
EOS
+ systemctl stop libvirtd
Stopping 'libvirtd.service', but its triggering units are still active:
libvirtd-admin.socket, libvirtd.socket, libvirtd-ro.socket
+ nmcli c delete enp0s2
Fehler: Unbekannte Verbindung »enp0s2«.
Fehler: Unbekannte Verbindung(en) »'enp0s2'« kann/können nicht gelöscht werden.
+ nmcli c delete 'Kabelgebundene Verbindung 1'
Verbindung »Kabelgebundene Verbindung 1« (f1c673b9-9cd4-37d2-8268-d00c2745352a) erfolgreich gelöscht.
+ nmcli c add type bridge ifname br0 autoconnect yes con-name br0 stp off

Beim Reboot hing der Network-Manager ewig. Nach dem Reboot ist enp2s0 up, kriegt aber keine IP mehr, kann also nur noch lokal was machen. br0 ist down. Was jetzt?

Notting

(Themenstarter)

Anmeldungsdatum:
24. November 2007

Beiträge: 91

Habe es jetzt wohl über die GUI hingekriegt (Network-Manager).

  1. Die normale standardmäßig eingerichtete LAN-Verbindung löschen (der Teil fehlt IMHO in https://forum.ubuntuusers.de/post/9507726/ und könnte das Problem gewesen sein, warum das bisher nicht funktioniert hat, kann aber auch an anderer Stelle Fehler gemacht haben).
    Dann geht natürlich kein SSH von außen mehr 😉

  2. Eine Bridge einrichten, hier "br0" genannt. Dort kann man aber nur z. B. die LAN-Schnittstelle auswählen, aber habe dort nichts bzgl. libvirt ausgewählt. Der Rechner sollte nun wieder mit dem LAN verbunden sein.

  3. In den Einstellungen der VM (wenn das Fenster der VM offen ist: Anzeigen - Details) als Netzwerkquelle das Überbrückungsgerät (auch Bridge genannt...) mit dem Gerätenamen eintragen, hier "br0". Am Ende rechts unten "Übernehmen" nicht vergessen. Nicht irritieren lassen, dass dort immer "IP-Adresse: Unbekannt" steht, acuh wenn man den Neuladen-Button anklickt.

Möglicherweise kann man das auch gleich im Kommandozeilen-Aufruf zur Einrichtung des VM-Images mit libvirt richtig eintragen.

Muss es aber nochmal von vorne durchtesten. Z. B. weiß ich nicht mehr wo man die MAC nicht einstellen darf, weil die VM ihre eigene zufällige MAC haben soll. Finde sowas gehört auf die Bridge-Seite im Wiki bzw. mit Links von der libvirt-Seite im Wiki.

notting

Bearbeitet von schwarzheit:

Bitte verwende in Zukunft Listen, um die Lesbarkeit zu verbessern! Und benutze bitte den Vorschaubutton. Danke.

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 10362

Wohnort: Münster

Notting schrieb:

[…] VM […] NAT

DHCP funktioniert von sich aus nicht über einen Router, schon gar nicht über einen solchen mit NAT.

Möglich sind diese Alternativen:

  • Dem virtuellen Gast eine Schnittstelle in Hardware zuordnen.

  • Statt Router mit NAT eine Netzwerkbrücke zur Kopplung zwischen Host und Gast verwenden.

  • Zur Kopplung einen Router ohne NAT, aber mit einer DHCP-Brücke einsetzen. Zusätzlich muss dieser Router auch noch dem vorgelagerten Router bekannt gemacht werden. Ist daher in der Praxis eher zu vergessen.

Wie man das konkret konfiguriert, hängt ab von der Software, die Du zur Konfiguration des Netzwerks verwendest.

Antworten |