Fix: “Requested operation is not valid: network ‘default’ is not active”
A libvirt VM will not start because the virtual network it uses, usually the NAT network 'default', is stopped. Start the network and mark it autostart, or fix whatever stops it from starting.
Drafted with AI from official documentation. Scripts were run in a test environment and repository links verified. Awaiting a human check. Did it work for you? Last edited Outdated?
You try to start or install a VM and libvirt refuses. In virt-manager the message looks like this:
Error starting domain: Requested operation is not valid: network 'default' is not active
During an install it can appear as Unable to complete install: 'Requested operation is not valid: network 'default' is not active', and Python tools show libvirt.libvirtError: Requested operation is not valid: network 'default' is not active.
It means exactly what it says: the VM has a network interface attached to the libvirt virtual network named default (the NAT network with bridge virbr0), and that network is not running, so the VM cannot be started.
Step 1: check the network state
Make sure you look at the same connection the VM uses. Most VMs live in qemu:///system, which needs root or libvirt group access; running virsh as a normal user may show a different, per-user list.
Check before you run this
- Runs with administrator rights. Make sure you understand every line.
sudo virsh net-list --all
If default is listed as inactive, go to step 2. If it is not listed at all, go to step 4.
Step 2: start it and enable autostart (most common fix)
Check before you run this
- Runs with administrator rights. Make sure you understand every line.
sudo virsh net-start default
sudo virsh net-autostart default
sudo virsh net-list --all
net-start only lasts until the next host reboot; net-autostart makes libvirt start the network every time. Now start the VM again.
Step 3: if net-start fails
- The bridge already exists. If you see
internal error: Network is already in use by interface virbr0, a leftover bridge is blocking it. Find the bridge name in the network XML (sudo virsh net-dumpxml default), check nothing else uses it, then remove it, for examplesudo ip link set virbr0 downandsudo ip link delete virbr0, and runnet-startagain. - dnsmasq cannot start. libvirt runs its own dnsmasq for DHCP and DNS on the network. The libvirt wiki names a system-wide dnsmasq already listening on libvirt’s bridge as a common cause. Check the libvirt daemon log or
journalctlfor a dnsmasq error. Either disable the system dnsmasq if you do not need it, or setbind-interfacesplusinterface=orlisten-address=in/etc/dnsmasq.confso it only uses your physical interface, restart it, then start the network. - Firewall backend missing. An error like
internal error: Failed to initialize a valid firewall backendmeans libvirt cannot set up NAT rules. Install the firewall packages your distribution’s libvirt expects (for example dnsmasq and an iptables/nftables provider), restart the libvirt daemon, and try again. - Address conflict. If the network’s subnet (often 192.168.122.0/24) overlaps a real network on the host, change the network’s IP range with
sudo virsh net-edit defaultand restart it.
Step 4: if the default network does not exist
The libvirt wiki documents re-creating it from the example definition that libvirt installs:
Check before you run this
- Runs with administrator rights. Make sure you understand every line.
sudo virsh net-define /usr/share/libvirt/networks/default.xml
sudo virsh net-autostart default
sudo virsh net-start default
If that file is missing, your distribution may ship the default network in a separate package (for example a libvirt-daemon-config-network package on some distributions); install it or define your own network XML.
Alternative: use a different network
If you do not want the NAT network at all, attach the VM to a host bridge instead with virsh edit VM (change the interface to type='bridge' with <source bridge='br0'/>), or create new VMs with virt-install --network bridge=br0.
Official documentation
Did this work for you?
No votes yet. Be the first.
If it did not work, the report form below tells the editors what went wrong.
See also
- 0098 What Proxmox VE is: KVM virtual machines, LXC containers and a web UI Proxmox VE is an open source virtualization platform based on Debian. It runs KVM virtual machines and LXC containers and is managed… Beginner · Explains an idea · Linux Article Basics · Installation & first steps 15 Oct 2026
- 0100 Create a VM and a cloud-init template with qm Create KVM virtual machines from the command line with qm, then build a reusable cloud-init template from a cloud image and clone… Intermediate · Step by step · Linux Article Basics · VMs & containers 15 Oct 2026
- 0123 KVM vs QEMU vs libvirt: how Linux virtualization fits together KVM is the Linux kernel part that uses CPU virtualization extensions, QEMU is the program that emulates a full machine around it,… Beginner · Explains an idea · Linux Article Basics 15 Oct 2026
- 0124 virsh cheat sheet: everyday libvirt commands A quick reference for virsh: list, start, stop and inspect VMs, change CPUs and memory, manage networks, storage pools and snapshots, with… Intermediate · Cheat sheet · Linux Article Basics 15 Oct 2026
- 0125 Create a KVM virtual machine with virt-install Use virt-install to create libvirt/KVM guests: install from an ISO, run a text-only install over the serial console, or import a cloud… Intermediate · Step by step · Linux Article Basics 15 Oct 2026
- 0126 KVM snapshots and cloning with virsh and virt-clone Take, list, revert and delete libvirt snapshots with virsh, understand internal vs external and disk-only snapshots, and clone a stopped VM with… Advanced · Step by step · Linux Article Basics 15 Oct 2026
Repos in the wild
- proxmox/qemu-server: the Proxmox VE virtual machine manager proxmox/qemu-server Read-only GitHub mirror of qemu-server, the Proxmox VE package that manages QEMU/KVM virtual machines and provides the qm and qmrestore commands. GitHub
- libvirt: virtualization API and daemon (GitHub mirror) libvirt/libvirt libvirt is the toolkit that manages KVM/QEMU and other hypervisors through one API, plus the virsh client. The GitHub repository is a read-only mirror; development happens on GitLab. GitHub
History
Every saved edit is kept. The plot on the sleeve draws one line per edit. Open any edit to see exactly what changed.
- Dominik +3,565 chars