A qemu-kvm/libvirt virtual network
This page doesn't aim to be a full fledged tutorial on how to build a virtual network using open source tools; it is more like a todo with a bit of extra wording to keep the pieces together.
Be sure to have the relevant tools installed and read on.
Lan Gateway configuration
Supposing 192.168.1.16 is the IP address of the virtual host, the first step is to instruct the LAN gateway on how to reach virtual guests. This actually means that all relevant packages should be routed through the virtual host.
This is done by setting up a static route in the LAN gateway:
#> ip route add 192.168.11.0/24 via 192.168.1.16 dev eth0
Virtual network configuration
On the virtual host, define a routed virtual network. Create the XML file first:
#> vi /tmp/deepblue.xml <network> <name>deepblue</name> <bridge name="virbr1" /> <forward mode="route"/> <ip address="192.168.11.1" netmask="255.255.255.0"> </ip> </network>
then instruct libvirt
to define the network, mark it for autostart and start
it:
#> virsh net-define /tmp/deepblue.xml #> virsh net-autostart deepblue #> virsh net-start deepblu
Enabling NAT
In case the new virtual network is behind a firewall, we need to add at least a rule to enable virtual guests to reach the Internet:
#> iptables -t nat -A POSTROUTING -s 192.168.11.0/24 -o-j MASQUERADE
Create a virtual guest
Now create a disk pool to store the virtual guest hard disks and mark it for autostart:
#> virsh pool-define-as <pool_name> dir --target <pool_directory> #> virsh pool-autostart <pool_name>
Virtual disks will be stored inside the
<pool_directory>
.
Then perform the actual installation:
#> virt-install -n debian-testing \ --memory 2048 --vcpus=2 \ --cpu host \ -c ./netinst/debian-6.0.7-amd64-netinst.iso \ --os-type=linux --os-variant=debiansqueeze \ --disk pool=<pool_name>,size=2,format=qcow2 \ -w network=<virtual_network>
To connect to the virtual guest from a remote host (provided
virt-viewer
is installed):
$> virt-viewer -c qemu+ssh://<server>/system <guest>
where guest
is the name specified with the -n
option at installation time and server
is the virtual host.