Skip to main content

Virtualbox networking workarounds

Virtualbox networking setup is a tedious task to understand and implement the very first time. This is mainly because of the multiple network options that it provides and the different locations used to setup those networks. Please follow this virtualbox networking manual to learn about virtualbox networking options. This post builds on the above manual to demonstrate a custom case for setting up a local network of 4 virtual machines (VMs) with internet access and also give the host access to these machines.

The specific networking requirement was not addressed by any of the network options provided by virtualbox. Let's understand it through the table provided in the above manual:

ModeVM→Host VM←Host VM1↔VM2 VM→Net/LAN VM←Net/LAN
Host-only + + +
Internal +
Bridged + + + + +
NAT + Port forward + Port forward
NATservice + Port forward + + Port forward
Requirement + + + + Port forward

As can be seen, the requirement is to have host access the VMs seamlessly but do not allow the outside network to access the VMs without port forwarding. A workaround to fulfill this requirement is to set up two networks that together satisfy the requirements. From the above table, two networks can be:
  1. A host-only network and a NAT
    OR 
  2. A host-only network and a NAT service.
It was decided to setup a host-only network and a NAT service network. The setup is simple,

Host-only network

  1. Navigate to File -> Host Network Manager (This path may change based on virtualbox version.)
  2. Create a new network
  3. Go to "properties" tab and edit the properties of the network adapter. Apply the properties.

    NOTE: Make sure the IPv4 address doesn't include network address
    For example, in the settings shown in the image, the IPv4 address should not be 10.0.1.0/24 but 10.0.1.1/24 otherwise it causes issues.
  4. If you want DHCP managed IPs, tick the DHCP checkbox.
  5. Edit the DHCP server properties in the "DHCP server" tab. Apply the settings

Now edit the network settings for all the VMs and add a new adapter with host-only network as below.


 

NAT service network / NAT network

  1. To setup this network, navigate to Virtualbox -> preferences -> Network (This path may change based on virtualbox version.)
  2. Create a new network
  3. Navigate to preferences tab and configure necessary settings.

    In the image, the "Supports DHCP" checkbox is disabled. This is because the intention is to setup static IPs on all the VMs on the NAT network interface.

Again edit the network settings for all the VMs and add a new adapter with NAT network.


Test

(Re)start the VMs and check their network interfaces.


Apart from the loopback address, there are two other interfaces, enp0s3 on 10.0.1.1/24 host-only network and enp0s8 on 10.0.2.0/24 NAT network.


Conclusion

Even though virtualbox network modes may not cover all the networking requirements, a combination of multiple networking modes can be used to set up-to 4 network interfaces on the VMs to achieve the desired configuration.

Comments

Popular posts from this blog

The Changing Nature of Reality Shows in India

It's been almost two decades since the modern day reality shows started in India. And the nature of these reality shows has changed drastically during this time. "Kaun Banega Crorepati (KBC)" is no longer a show just about knowledge, "Indian Idol" and "Sa Re Ga Ma Pa" are no longer just singing shows. They all have become entertainment shows. This post is an attempt to find out the reasons of this transition, analyze the current nature of these shows and assess their impact. Reasons of this change Competition from TV Serials / Soap Opera TV serials or Soap Opera as it is commonly known is very popular among the Indian masses. India being a country where family ties are very strong, for a long time, the main theme in most popular TV shows has been "family drama". Additionally, there is no dearth of TV channels, actors, producers and the crew. TV show and film production is a major employment generator in India. And so the episodes of serials a...

Local domain name resolution using /etc/hosts

The /etc/hosts file is a powerful mechanism for managing the information about hosts in the local network in the absence of a local DNS server. Setup We have 4 VMs in the local /24 network. The following are the details: vm-1-ubuntu-16-04 - 10.0.1.11 vm-2-ubuntu-16-04 - 10.0.1.12 vm-1-ubuntu-18-04 - 10.0.1.21 vm-2-ubuntu-18-04 - 10.0.1.22 The VMs are reachable via their IP address but not by their hostnames. This is problematic because we have to remember their IP addresses everytime we want to access these hosts. It is would be much simpler to remember and access the servers by their hostnames. For that we need some sort of mapping between the IP addresses and their corresponding host names. There are 3 common ways of achieving this mapping. Setup a DNS server which handles resolution for your local network. Use an existing DNS server of the local Internet Service Provider (ISP) or any other higher level ISP. Note that a public static IP address is required for this s...

Manage system hostname with hostnamectl

This article explains the simplest method to set hostname and Fully Qualified Domain Name (FQDN/fqdn) of any given system using hostnamectl Check that hostnamectl is present on the system by typing it in a shell. You will see output similar to the one given below. In case hostnamectl is not found, it is a good idea to install it. sudo apt update sudo apt install systemd-services Verify the static hostname given above using the following command: Also verify it by checking /etc/hostname file Change the hostname and set the desired hostname by running the following command and authenticating with the password. hostnamectl set-hostname <hostname> Start a new shell session or reconnect to the server to see the change in the hostname Again run above steps to verify that hostname has been changed correctly. Configure FQDN While the above process may suffice to identify the host in the local network, it is not enough when the host is to be identifi...