I installed an iso of rhel8 using my fedora laptop running libvirtd/kvm.
My laptop has virbr0 of 192.168.122.1/24 with dhcp/dns - default stuff
The RHEL8 guest installed, but since it installed libvirt* packages, it _also_ created its own virbr0 device with 192.168.122.1, causing the virtio ethernet interface to have no IP whatsoever, presumably due to the conflict of its native ethernet with its own bridge device.
the rhel8 guest virbr0 was not managed with NetworkManager or with ifcfg files. It was created by the libvirt "default" network via /etc/libvirt/qemu/networks/default.xml
Maybe one fix is to not install libvirt* packages per default on a new install of rhel8 when it is detected that it is running in a virtualized environment? Otherwise, if the uplink is 192.168.122.0/24, perhaps the libvirt* install should pick a randomized 192.168.X.0/24 instead to avoid this conflict.
Reassigning to libvirt for knowledgeable input.
I believe this has been addressed in rhel-7.2 bug 956891 and discussed mostly in fedora bug 811967.
Laine, any thoughts?
I just ran into this exact thing with the Fedora 31 Beta running on a Ubuntu 18.04 host. I was running ip addr flush dev virbr0 until I figured out that the libvirt packages were installed and running on boot.
You can make comments specific to Fedora and this issue here: Bug 1146284. Be sure to read the history in Bug 811967
This is very closely connected to 1628074
I posted an RFC patch upstream to help eliminate the effect of this problem (broken host networking due to a conflicting libvirt network) with a NetworkManager dispatcher.d script that checks all libvirt networks for a conflict any time a new interface is brought online, and shuts down any offending libvirt network. This doesn't eliminate the address conflict, but at least mitigates the effect when it happens (network connectivity of L2 guests will be lost, but at least the connection from the L1 "nested host" to the L0 host will be available to allow fixing the conflict (and appropriate errors will be logged so the user can understand what to fix):