Chapter 10. Network Configuration
This page provides an introduction to the common networking configurations used by libvirt based applications. This information applies to all hypervisors, whether Xen, KVM or another. For additional information consult the libvirt network architecture docs.
The two common setups are "virtual network" or "shared physical device". The former is identical across all distributions and available out-of-the-box. The latter needs distribution specific manual configuration.
Network services on virtualized guests are not accessible by default from external hosts. You must enable either Network address translation (NAT) ir a network Bridge to allow external hosts access to network services on virtualized guests.
10.1. Network address translation (NAT) with libvirt
One of the most common methods for sharing network connections is to use Network address translation (NAT) forwarding (also know as virtual networks).
Host configuration
Every standardlibvirt
installation provides NAT based connectivity to virtual machines out of the box. This is the so called 'default virtual network'. Verify that it is available with the
virsh net-list --all
command.
# virsh net-list --all Name State Autostart ----------------------------------------- default active yes
If it is missing, the example XML configuration file can be reloaded and activated:
# virsh net-define /usr/share/libvirt/networks/default.xml
The default network is defined from
/usr/share/libvirt/networks/default.xml
Mark the default network to automatically start:
# virsh net-autostart default Network default marked as autostarted
Start the default network:
# virsh net-start default Network default started
Once the
libvirt
default network is running, you will see an isolated bridge device. This device does
not have any physical interfaces added, since it uses NAT and IP forwarding to connect to outside world. Do not add new interfaces.
# brctl show bridge name bridge id STP enabled interfaces virbr0 8000.000000000000 yes
libvirt
adds
iptables
rules which allow traffic to and from guests attached to the
virbr0
device in the
INPUT
,
FORWARD
,
OUTPUT
and
POSTROUTING
chains.
libvirt
then attempts to enable the
ip_forward
parameter. Some other applications may disable
ip_forward
, so the best option is to add the following to
/etc/sysctl.conf
.
net.ipv4.ip_forward = 1
Guest configuration
Once the host configuration is complete, a guest can be connected to the virtual network based on its name. To connect a guest to the 'default' virtual network, the following XML can be used in the guest:<interface type='network'> <source network='default'/> </interface>
Note
Defining a MAC address is optional. A MAC address is automatically generated if omitted. Manually setting the MAC address is useful in certain situations.
<interface type='network'> <source network='default'/> <mac address='00:16:3e:1a:b3:4a'/> </interface>