If you have ever worked with virtualisation platforms before, you would know that some are undoubtedly better than others. But when you also take into the account of costs for each platform, small business might lean towards using Proxmox or OpenStack as free alternatives.

Recently when setting up my most recent server (codename Blitzcrank) I went through the process of installing Proxmox as I normally would. Proxmox I find is one of the simplest and most practical interfaces for managing virtual machines, this is not to say it doesn't have its own little quirks that you should be aware of.

By default you can set up a Virtual Machine using an OpenVZ container, these containers share the vital resources of the operating environment with the host machine making these containers very lightweight (we're talking maybe a few hundred MB per container)! I reguarly choose to use a CentOS 6.3 template to build nearly every service i run and when going through the process of setting up the network settings you are faced with using two options.

  1. venet (Virtual Environment Network Interface)*
  2. vmbr (Virtual Machine Bridge)*

* These are only my understanding of their meanings.

Basically the venet device allows proxmox to control the network interfaces for the container and does some other fancy stuff for routing which I don't have much knowledge of. The other option is using vmbr which is effectively a software based network switch normally used for fully virtualized systems such as KVM.

Proxmox when using venet0 for setting ip addresses, automatically adds entries into /etc/sysconfig/network (RHEL of course). This is quite handy seeing as through you don't need to worry about modifying the files yourself. However there is a problem that arises if you try to switch to vmbr0 from venet0 for network interface. Proxmox itself doesn't actually remove the venet0 settings from /etc/sysconfig/network and when configuring your vmbr0 eth0 interface, the default gateway will refuse to set while the existing venet0 entries still exist.

Here is an example of /etc/sysconfig/network after a switch from venet0 to vmbr0

NETWORKING="yes"
GATEWAY=10.1.1.1
GATEWAYDEV="venet0"
NETWORKING_IPV6="yes"
IPV6_DEFAULTDEV="venet0"
HOSTNAME="your.hostname.com"

You might notice there is quite a lot here for a simple network file and you would be correct, there should only be 2 lines in this file when using vmbr0.

Here are my fully configured files that i use for networking (most of which are just based off the CentOS wiki)

/etc/sysconfig/network

NETWORKING="yes"
HOSTNAME="your.hostname.com"

/etc/sysconfig/network-scripts

DEVICE="eth0"
ONBOOT=yes
USERCTL=no
NETWORK=10.1.1.0
GATEWAY=10.1.1.1
NETMASK=255.255.255.0
IPADDR=10.1.1.12
DNS1=8.8.8.8
DNS2=8.8.4.4