Browse Docs

๐Ÿ˜ The Basics of KVM

Basic Checks

1virsh nodeinfo

Config a Bridge network

Important note that network are created with root user but VM with current user.

  • Non permanent bridge:
1sudo ip link add virbr1 type bridge
2sudo ip link set eno1 up
3sudo ip link set eno1 master virbr1
4sudo ip address add dev virbr1 192.168.2.1/24
  • Permanent bridge
1sudo nmcli con add ifname virbr1 type bridge con-name virbr1
2sudo nmcli con add type bridge-slave ifname eno1 master virbr1
3sudo nmcli con modify virbr1 bridge.stp no
4sudo nmcli con down eno1
5sudo nmcli con up virbr1
6sudo ip address add dev virbr1 192.168.123.1/24
  • KVM - Bridge Network
 1cat > hostbridge.xml << EOF
 2<network>
 3  <name>hostbridge</name>
 4  <forward mode='bridge'/>
 5  <bridge name='virbr1'/>
 6</network> 
 7EOF
 8
 9sudo virsh net-define hostbridge.xml
10sudo virsh net-start hostbridge
11sudo virsh net-autostart hostbridge
  • Give qemu ACL
1echo "allow all" | sudo tee /etc/qemu-kvm/${USER}.conf
2echo "include /etc/qemu-kvm/${USER}.conf" | sudo tee --append /etc/qemu/bridge.conf
3sudo chown root:${USER} /etc/qemu-kvm/${USER}.conf
4sudo chmod 640 /etc/qemu-kvm/${USER}.conf
  • Check network
1sudo nmcli con show --active
2sudo virsh net-list --all
3sudo virsh net-edit hostbridge
4sudo virsh net-info hostbridge
5sudo virsh net-dhcp-leases hostbridge
  • Check with a small script
 1echo -e "\n##### KVM networks #####\n"
 2kvm_system_networks_all=$(sudo virsh net-list --all)
 3echo -e "Available KVM networks in qemu:///system :\n$kvm_system_networks_all"
 4for net in $(sudo virsh net-list --name); do
 5    bridge_name=$(sudo virsh net-info --network ${net} | grep Bridge | cut -d":" -f2 | sed 's/^[[:space:]]*//')
 6    for br in ${bridge_name}; do
 7        br_info=$(ip -br -c address show dev ${br} || echo "No IP address assigned to bridge ${br}")
 8    done
 9    echo -e "\n\033[1;34m${net}\033[0m have the Bridge: $br_info"
10done
11echo -e "\n"
  • thanks to bridge-utils package installed ealier:
1brctl show
  • Create a VM with this bridge
 1virt-install \
 2--name pfsense --ram 2048 --vcpus 2 \
 3--disk $HOME/pfsense/disk0.qcow2,size=12,format=qcow2 \
 4--autostart \
 5--cdrom $HOME/pfsense/netgate-installer-amd64.iso \
 6--network bridge=virbr0,model=e1000 \
 7--network network=hostbridge,model=e1000 \
 8--graphics vnc,listen=0.0.0.0 --noautoconsole \
 9--osinfo freebsd14.0 \
10--debug
  • Delete network
1sudo virsh net-destroy hostbridge
2sudo virsh net-undefine hostbridge
3sudo nmcli con del virbr1
4sudo nmcli con del eno1

Sources

Blog redhat

Friday, March 13, 2026 Tuesday, August 1, 2023