After a lot of farting around with different virtual network adapter types and use cases I finally settled on a networking configuration that works well for developing web apps inside a Debian Virtual Machine running inside Virtualbox on my Windows laptop.
The problem:
- VM needs to be accessible by the windows host even when laptop is “offline” so I can work on the plane.
- When laptop is “online”, VM can also access the internet
- VM should be accessed by host via a static IP address so that dev environment settings persist beyond a reboot
The Solution:
- Two virtual network adapters in the VM’s network tab in Virtualbox:
- Adapter #1: “NAT” / DHCP
- Adapter #2: “Host-only” / Static IP
The NAT adapter should already be set up by default when you do a fresh install of Debian in Virtualbox. It enables the VM to access the wider internet.
Meanwhile the Host-only adapter enables the host machine to see the VM and persists even when internet connectivity drops allowing you to carry on working.
- Set up the Virtualbox Host-only network.
Click File > Preferences > Network, then select “Virtualbox Host-only ethernet adapter” (or whichever host only adapter you selected in the VM’s host-only network adapter tab). Click the edit button which looks like a screwdriver. Enter an unused network in the 192.168.x.x Ip range. I’m using 213.1 because my router is on 192.168.0.1, but I could use anything in that 3rd octet except 0 I think. The netmask should be 255.255.0.0 but for some reason it still works with 255.255.255.0 – I’m still not quite sure why that is though.
Click the “DHCP server” tab and uncheck the ‘Enable Server’ checkbox – we don’t need DHCP because we’ll be using a static IP address.
- Configure the networking inside the VM
Log into the VM as root and edit /etc/network/interfaces – it should look like this:
# The loopback network interface
auto lo
iface lo inet loopback# The NAT virtual adapter
allow-hotplug eth0
iface eth0 inet dhcp# The Host-only virtual adapter
auto eth1
iface eth1 inet static
address 192.168.213.9 # this must match Virtualbox host-only network
netmask 255.255.255.0
- Reset the VM and you should now be up and running
Many thanks this really helped me……
Many thanks this really helped me……
Thanks for posting this article.
If you could post about enabling networking on ArchLinux running as guest OS on virtualbox Windows host, it would be a great relief !!!
Also, my wired internet connection on Windows is behind one of two available proxy servers with authentication, preventing multiple login of a user from the same proxy.
Sorry my lase comments made mistake, please remove. Thank you!
Many thanks this really helped me……
But for me it works only when I check the ‘Enable Server’ to ON and skip Step 3 of your Tutorial.
Perfect, thanks!
Worked for me only after including Vladimir’s comment. Thanks to both of you.
Thank you so much! it’s great