Ubuntu virtualbox guest does not get ipv4 in bridged mode

bridgedipv4networkingUbuntuvirtualbox

I have a fresh virtual box Ubuntu Server 16.04 32-bit guest installation on a Linux Mint 18 Cinnamon 64-bit host. I want to have the guest system to appear to the local network like a physical machine. Therefore, I need bridged network mode for the guest—host-only and/or NAT won't do. The host system is connected via ethernet cable and guest additions are installed on the virtual machine.

The odd thing is, during installation, the guest system is perfectly able to download additional packages. Once logged in, however, I can neither ping computers in the local network nor external servers like google.com.

For google.com, it says "ping: host unknown", for the local router (192.168.178.1), it says "connect: Network is unreachable".

Upon closer examination, I found out that the virtual machine has not received an IPv4 address from the DHCP server of my router. However, my router displays that an address has been assigned (the fourth entry).

I tried setting a static IPv4. Then, the according address shows up on ipconfig. But still, the guest cannot ping anything. Also, actually I want the virtual machine to receive its IPv4 address from the local DHCP server anyways.

In /etc/network/interfaces, the network interface from ipconfig is initialized as follows:

allow-hotplug enp0s17
iface enp0s17 inet dhcp

Things I tried:

  • setting the guest to a static IPv4
  • disabling IPv6
  • deleting /etc/udev/rules.d/70-persistent-net.rules
  • sudo ip link set enp0s17 up
  • dhclient enp0s17

None of these worked. Can anyone help me to solve this problem?

Best Answer

The first answer to this seems a little over-complex to me. The following should work. Open the guest machine and do the following:

You might want to disable it right from the boot. For this purpose, open:

/etc/default/grub

with your favorite text editor with root access:

i.e.

gksu gedit /etc/default/grub

or if you prefer to work with command line only:

sudo nano /etc/default/grub

In this file, find this line:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

and change it to:

GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 quiet splash"

Save the file and update GRUB by running:

sudo update-grub

If you tried the sysctl method:

See the following question/highest voted answer, because you can set ip6 values to 0 and if you do not init sysctl as part of boot it would ignore it anyway (read the default ip6 value after you set everything to 1 to disable if the system reports 0 you need to get sysctl running):

How to disable IPv6 in Ubuntu 14.04?

I like my method because it disables ip6 at boot, so nothing tries to go the ip6 route during boot (some may even get errors with it enabled at boot and disabled inside the OS itself). It's also only a small adjustment to one line in one file making things really easy, and you are not forced to sacrifice line speed as you would be doing if using less than the 100 MHz Full Duplex or 1000 MHz Full Duplex (if you have Gig it is the latter if 100 Meg router or switch it will be the former).

Related Question