Updated: 29 September 2026 · Applies to: NetworkManager 1.54 and 1.56 on AlmaLinux and Rocky Linux 9 and 10 and RHEL 9 and 10; netplan 1.1 on Ubuntu 24.04 and 26.04

Virtual machines on a KVM host (including hosts managed by panels such as SolusVM) usually connect to the network through a bridge: a virtual switch, often called br0, that joins the host's network card and the virtual machines' network cards. This guide replaces the old CentOS steps with ifcfg files and bridge-utils, which current releases no longer use: ifcfg files are deprecated on version 9 and not supported on version 10. We generated and checked the configurations below with NetworkManager 1.54 (AlmaLinux 9) and 1.56 (AlmaLinux 10) and netplan 1.1 (Ubuntu 24.04).

Before you start

  • Moving the server's IP address to a bridge interrupts the network for a moment, and a mistake cuts you off. Work from the out-of-band console (IPMI, KVM over IP or your provider's VNC console), not only over SSH.
  • Note the current settings: ip -br addr, ip route and nmcli connection show.
  • Check with your provider how extra MAC addresses are handled. Many data centre networks accept only the server's own MAC address on the port, so virtual machines on a public bridge need MAC addresses assigned by the provider, or a routed setup instead.
  • If you use a virtualization panel, check its documentation for the bridge name it expects (commonly br0).

AlmaLinux, Rocky Linux and RHEL (NetworkManager)

This example moves the address 203.0.113.10/24 from eth0 to the new bridge br0. Use your own interface name, addresses and gateway:

nmcli connection add type bridge ifname br0 con-name br0 \
    ipv4.method manual ipv4.addresses 203.0.113.10/24 ipv4.gateway 203.0.113.1 \
    ipv4.dns "1.1.1.1 8.8.8.8" bridge.stp no
nmcli connection add type ethernet ifname eth0 con-name br0-port0 master br0 slave-type bridge
nmcli connection down eth0 ; nmcli connection up br0

The last line takes the old connection down and brings the bridge up in one step, so run it from the console. The name of the old connection may differ; check it with nmcli connection show. When everything works, stop the old profile from starting again: nmcli connection modify eth0 connection.autoconnect no.

For a second, internal bridge (for example intbr0 on eth1 for a private network between hosts), repeat the two add commands with the internal interface and address, and without a gateway.

Ubuntu (netplan)

Create /etc/netplan/60-bridge.yaml (and move the old settings for eth0 out of the existing netplan file):

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: false
      dhcp6: false
  bridges:
    br0:
      interfaces: [eth0]
      addresses: [203.0.113.10/24]
      routes:
        - to: default
          via: 203.0.113.1
      nameservers:
        addresses: [1.1.1.1, 8.8.8.8]
      parameters:
        stp: false
        forward-delay: 0
chmod 600 /etc/netplan/60-bridge.yaml
netplan try

netplan try applies the change and rolls it back after 120 seconds unless you confirm it, which protects you from locking yourself out.

Check the bridge

ip -br addr show br0          # the IP address is now on br0
bridge link                   # eth0 (and later the VMs' vnet interfaces) are ports of br0
ip route                      # the default route uses br0
ping -c 3 1.1.1.1

In libvirt, attach virtual machines to the bridge with --network bridge=br0 in virt-install, or choose "Bridge device" with the name br0 in Cockpit or virt-manager.

Official documentation: RHEL 9: configuring a network bridge and netplan YAML reference.

Ucartz services for this topic

Was this answer helpful? 0 Users Found This Useful (9 Votes)