Using VirtualBox to test Ubuntu Server configurations
October 31st, 2008
In a previous article, we discussed configuring Postfix, Dovecot, SpamAssassin, Amavisd and ClamAV
for secure mail relaying. It's a lot of configuration, and if something is done
wrong, the whole setup doesn't work. It's great to have a test plaform for all
of this. Ideally a test plaform should be easy to use from a desktop computer
and should not require dedicated hardware. VirtualBox is the way to go for this
usage. In this article, we'll use VirtualBox to run Ubuntu Hardy Heron Server
within Ubuntu Hardy Heron desktop.
Step 1: install VirtualBox
Use the normal package tools (apt-get) to install.
Make sure to install the propper virtualbox-ose-modules-2.6.???-generic
module. Activate VirtualBox and create a new guest. It's straightforward
to create a guest Ubuntu Server, booting from the ISO image.
Boot from the image and go through a normal installation.
Step 2: make the installation bootable
The installation will not actually boot. It needs to be fixed. Boot the guest again from the ISO image, and go to recovery mode, and run a shell on the installation device. Run the following:
apt-get update apt-get install linux-386 apt-get remove linux-server
Now you can boot from the hard drive of the guest.
I hope that some future release of Ubuntu Server will be directly installable on a VirtualBox
Step 3: Configure port forwarding to access the virtual server
Shut down the guest, using a normal shutdown -h now
command.
There are many advanced networking options within VirtualBox for many different types of usage. We'll use the simplest: NAT networking, which is the default, with port forwarding. Port forwarding allows us to bind a port of the guest to a port on the host. For example, let's turn on port forwarding for SSHD:
VBoxManage setextradata global \
"VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/Protocol" TCP
VBoxManage setextradata global \
"VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/GuestPort" 22
VBoxManage setextradata global \
"VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/HostPort" 2222
This changes the setting globally (for all virtual machines). This assumes
that the pcnet device is being used. If you get an error like
VERR_PDM_DEVICE_NOT_FOUND it means the device name
is incorrect.
Now restart the VM and you can telnet to it with:
ssh localhost -p 2222
We'll open additional ports for whichever services we need to work on.