VirtualBox 2.1.0 released, with much better network support

Published: 2008-12-23
2.1.0 is a major update for VirtualBox. Here are the main new features:
The last item is particularly important, as the default NAT setup in VirtualBox didn't allow guests to act as servers (and rightfully so!).

To run a guest as a server, you had to create a complex network configuration involving TUN/TAP devices, a bridge, etc. It kind of worked (not with wireless though) but who enjoys messing with their network setup? Not me.

Let's try it! Start VirtualBox, select your favorite guest and edit its network settings: that's Settings, then Network (duh). This brings you to the screen below.

Technical illustration
All you need to do is:
  1. Set Attached to to 'Host Interface'
  2. Select in Host Interfaces the physical interface you want the guest to access (wlan0 in my case)
  3. Click OK and start the guest
Here's the network configuration for the CentOS 5.2 guest (/etc/sysconfig/network-scripts/ifcfg-eth0):

DEVICE=eth0
ONBOOT=yes
HWADDR=08:00:27:0A:91:29

If all goes well, the guest will use DHCP to get its network setup from my wireless router. Let's boot it.

A few seconds later: grrr, this is not working. Why?

A few minutes later: ah, silly me :) My wireless router is filtering MAC addresses (it's not because you're paranoid that they're not after you) and obviously it has never heard of the MAC address used by the guest. There are two options:
  1. Disable MAC address filtering (no way)
  2. Add the guest's MAC address to the list of authorized clients (you bet!)
OK, let's reboot the guest, log in and run a few network checks....

Ha ha, it looks like DHCP worked: I've got an IP address (ifconfig eth0), a default route to the gateway (route -a) and up to date DNS information (/etc/resolv.conf).

Let's ping the host:

[julien@centos ~]$ ping -c 3 192.168.0.2
PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.
64 bytes from 192.168.0.2: icmp_seq=1 ttl=64 time=0.340 ms
64 bytes from 192.168.0.2: icmp_seq=2 ttl=64 time=0.220 ms
64 bytes from 192.168.0.2: icmp_seq=3 ttl=64 time=0.276 ms
--- 192.168.0.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2006ms
rtt min/avg/max/mdev = 0.220/0.278/0.340/0.052 ms

Good, now let's ping the world :)

[julien@centos ~]$ ping -c 3 www.gnu.org
PING gnu.org (199.232.41.10) 56(84) bytes of data.
64 bytes from www.gnu.org (199.232.41.10): icmp_seq=1 ttl=48 time=141 ms
64 bytes from www.gnu.org (199.232.41.10): icmp_seq=2 ttl=48 time=141 ms
64 bytes from www.gnu.org (199.232.41.10): icmp_seq=3 ttl=48 time=139 ms
--- gnu.org ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 139.440/140.698/141.344/0.941 ms

DNS and internet access are up as well. Now, let's try it from the host:

ubuntu% ping -c 3 192.168.0.6
PING 192.168.0.6 (192.168.0.6) 56(84) bytes of data.
64 bytes from 192.168.0.6: icmp_seq=1 ttl=64 time=0.401 ms
64 bytes from 192.168.0.6: icmp_seq=2 ttl=64 time=0.221 ms
64 bytes from 192.168.0.6: icmp_seq=3 ttl=64 time=0.235 ms
--- 192.168.0.6 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.221/0.285/0.401/0.084 ms

ubuntu% ssh julien@192.168.0.6
julien@192.168.0.6's password:
Last login: Tue Dec 23 15:00:58 2008 from 192.168.0.2
[julien@centos ~]$ exit

That's really cool: no more messing around with the network configuration. This makes VirtualBox even greater :)