Virtual Machine Manager | Bridged Network | Why so complicated to achiev?

(I use the Mate-Compiz spin on my desktop computer [IntensePC])

How I was able to achieve it:

  1. Connection Details, Virtual Networks, clicking on the "+" change mode to "Open" (the rest is all default). This creates me a "virbr0"
  2. Now I stop "virbr0" on the red minus icon and while clicking o the trash it disappears in the connection details. While changing to terminal and type nmcli c it is still active. I stop it with nmcli c down virbr0
  3. Back in the “Connection Details” i do create "+"a new virtual network using the default as name: network
    This time I choose Mode: NAT and do let everything as it was (default). This creates me a Network connected to virbr0
  4. Opening my VM (QEMU/KVM) under NIC I select the Network source: Virtual network 'network :NAT'
  5. Now i can start the WM and do get DHCP working. I am able to ping my host and also able to communicate between them.

I used Virtualbox before and had the option there to create a bridged connection on the vm guest choosing the Host’s NW-adapter I wanted to use as bridge.

Is there a simpler way to achieve this? And is there a tool where i can control the status of the connections? A script I can use in terminal would be ok.

1 Like

If you want to bridge the physical network to the VM, you first have to create the bridge in NetworkManager and add the physical NIC as a port of the bridge.

In this example, I’m bridging eth0 to a new bridge br0:

# nmcli con add con-name br0 ifname br0 type bridge autoconnect yes ipv4.method auto ipv6.method auto
# nmcli con add con-name br0-port ifname eth0 type ethernet slave-type bridge master br0 autoconnect yes

Note that your existing connection for the ethernet interface will have to be removed:

# nmcli con    # (Get the connection name)
# nmcli con delete "Wired connection 1"

With that in place, you can choose br0 as the bridge for your VMs.

4 Likes

Thanks that worked. What I observed is that the connection is much slower this way.

It also created me an Auto Ethernet connection. Is this normal ?

I’m not sure about that. I’d disable the autoconnect option of that new connection just to make sure it doesn’t get in the way:

# nmcli con modify "Auto Ethernet" connection.autoconnect no
1 Like

Would like to link a topic from Ask-fp-org who shows that I’m not alone with this libvirt/networking issues.

Learning by doing :muscle: :wink:

Since i use the bridged network as here described, and restrict the network management by using nmcli or nm-connection-editor I do have much more peace with libvirt :grin:

In Virtual Machine Manager > Edit > Connection Details > Virtual Networks, remove all networks.

Afterwards check the two points @glb mentions in the topic below.
Br0 suddenly stopped passing traffic - #5 by glb - Ask Fedora

When this done, do select the network on the specific VM as in the picture below:

Select_brindge_br0

Now you can start the VM

With this procedure you theoretically created you a virtual x-port switch where you connect all your VM’s.

If you use Fedora Workstation please do you the favor and use the nm-connection-editor instead of the build in Network editor in the Settings of Gnome 4.2x. Otherwise you will get bothered wit auto network etc … really annoying.

Of course, if you are a happy :grinning: Terminal user make use of nmcli to manage your network.

If you can, try to include toolbox or ‘podman’ with rootless containers, in your workflow.
I think this way you not have to fight wit this unnecessary routing troubles.

I will add this mini tutorial to the discussion on discussion.fp.org. Might be that I will get some more Tricks/Tips to tweak the libvirt/network workflow.

Good luck

Thanks again @jorti

1 Like

Since middle of may i do use this kind of bridge. It serves very well.

Sometimes i do switch of the network with nmcli n off and nmcli n on
In this case it takes me quite a while till i get a network connection.

Comparing with a default network connection I saw that there is not ip4.route in the details while the default connection has one, like:

connection.id:                          Wired connection 1
...
IP4.ROUTE[1]:                           dst = 0.0.0.0/0, nh = 10.0.0.1, mt = 100
IP4.ROUTE[2]:                           dst = 10.0.0.0/24, nh = 0.0.0.0, mt = 100
...

My question is now how this route get added, and what it means. A part I understand:
dst=destination nh=next hop mt=?

Route 1 = to all addresses (no restriction ?) to default Gateway
Route 2 = to my network to all /24 (254) addresses in it.

Would this speed up the availability of the bridge (br0) if i would have this route set too?
I guess I have to set the network 10.0.0.1/24 manually?

Thanks in advance for some hints.