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
, addlibvirt
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
- 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!