Skip to content
Commitpedia
Log in Join & edit

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?

Edit history of Fix: “Requested operation is not valid: network ‘default’ is not active”: 1 recorded edit
Edit history · 1 edit
Type
Article
Edits
1
Editors
1
First issued
15 Oct 2026
Last edit
15 Oct 2026
Reading
3 min

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 example sudo ip link set virbr0 down and sudo ip link delete virbr0, and run net-start again.
  • 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 journalctl for a dnsmasq error. Either disable the system dnsmasq if you do not need it, or set bind-interfaces plus interface= or listen-address= in /etc/dnsmasq.conf so 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 backend means 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 default and 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

History

Every saved edit is kept. The plot on the sleeve draws one line per edit. Open any edit to see exactly what changed.

  1. Dominik +3,565 chars

Report a problem

Something wrong, unsafe or copied? Tell the editors.
What is wrong?