This post describes a simple trick for VirtualBox to give host-only virtual machines access the internet or access your host from the guest using NAT. The title could also have been: “Easily access your NAT configured virtual machine.”
The original problem or requirements:
- The host should be able to browser the webserver on the Guest (the virtual machine)
- The guest should be able to access the outside world (intranet/internet)
- Use fixed IP address, no problems with DHCP et al.
Yes, you can use port-forwarding using NAT network interface for the virtual machine. But configuring this is just way to complicate and error prone. A few googles more, and I couldn’t find anything good.
The solution I came up with: configure 2 network interfaces for your Virtual Box host. Simple, isn’t it?
First, we need to make a new network in VirtualBox. You can do this in the GUI preference, which is a bit platform specific, but it’s not easy to miss.
Create a new network in VirtualBox, named like vboxnet2 with following settings (change to suit your needs):
- IPv4 Address: 10.88.12.0
- IPv4 Network Mask: 255.0.0.0
- Leave DHCP disabled if you don’t need it. Fixed IP address are just more predictable
Setup your virtual machine using 2 network adapters. The order doesn’t really matter, but you’ll need one NAT and one Host-Only:
- NAT (not much to configure)
- Host-Only using the network you created earlier, for example, vboxnet2
Boot your virtual machine, and configure the network interfaces in your guest OS (same order as previous point):
- First interface using NAT, which you can use with the internal DHCP
- Second interface using Host-Only will use a fixed IP address and netmask which you configured earlier for the vboxnet2 VirtualBox network. For example, 10.88.12.4.
Guest has access to outside, and host can access services running on guest. This is handy when you have a demo or develop using a service running in the virtual machine, and the virtual machine needs to access the outside world.
(If the above has been posted somewhere else: I was either blind, or it was not visible or indexed enough.)