# Add KVM Network With Virsh - Trent's Blog
Trent's blog of mostly technical documentations.

Skip to content

# Add KVM Network With Virsh

date: 2021-10-16

## Introduction

This is a short and sweet walk-through for how to create a new network for `libvirt` for `kvm`, from the command line, using `virsh`.

## Name Resolution

Let's start with name resolution.

- Install `libnss-libvirt`:

      apt install libnss-libvirt

- In `/etc/nsswitch.conf`, add `libvirt` to hosts key.

      # /etc/nsswitch.conf
      # change this
      ...
      hosts:          files dns mymachines
      ...
      # to this
      ...
      hosts:          files libvirt dns mymachines
      ...

## Starter XML

You could dumpxml on the existing default network:

    virsh net-dumpxml default > foonet.xml

Then, edit foonet.xml:

- remove the network uuid
- change the network name to taste
- remove the bridge mac
- change the bridge name to taste
- change the bridge ip address and dhcp range to taste

    <!-- foonet.xml -->
    <network>
      <name>foonet</name>
      <forward mode='nat'>
        <nat>
          <port start='1024' end='65535'/>
        </nat>
      </forward>
      <bridge name='virbr101' stp='on' delay='0'/>
      <ip address='10.55.44.1' netmask='255.255.255.0'>
        <dhcp>
          <range start='10.55.44.2' end='10.55.44.254'/>
        </dhcp>
      </ip>
    </network>

## Define The Network

With the above xml file: `virsh net-define foonet.xml`

The network definition can now be found in `/etc/libvirt/qemu/networks/foonet.xml`

    <!-- /etc/libvirt/qemu/networks/foonet.xml -->
    <!--
    WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
    OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
      virsh net-edit foonet
    or other application using the libvirt API.
    -->

    <network>
      <name>foonet</name>
      <uuid>e6e40bfc-d449-4043-924c-ca0f0edf4210</uuid>
      <forward mode='nat'>
        <nat>
          <port start='1024' end='65535'/>
        </nat>
      </forward>
      <bridge name='virbr111' stp='on' delay='0'/>
      <mac address='52:54:00:49:a7:f8'/>
      <ip address='10.55.44.1' netmask='255.255.255.0'>
        <dhcp>
          <range start='10.55.44.2' end='10.55.44.254'/>
        </dhcp>
      </ip>
    </network>

You could also start the network without defining it using `virsh net-create foonet.xml`.

## Start/Stop

- Start the network
  - `virsh net-start foonet`
- Stop the network
  - `virsh net-destroy foonet`
- Undefine the network
  - `virsh net-undefine foonet`
- Autostart the network
  - `virsh net-autostart foonet`
- Disable autostart for the network
  - `virsh net-autostart foonet --disable`

Tab completion is you friend!