VirtualBox: two network interfaces (NAT and host-only ones) in a Debian guest on Ubuntu
Solution 1
The solution was pretty simple: I just had to add the following lines into the Debian virtual machine's /etc/network/interfaces
file:
allow-hotplug eth1
iface eth1 inet dhcp
The second line instructs the interface to obtain an IP via DHCP. The first line loads the interface at boot time.
To apply the changes to a running system, invoke:
ifup eth1
The name for the eth1
interface may vary, use ifconfig -a
to list all available interfaces.
EDIT: full /etc/network/interfaces
:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp
allow-hotplug eth1
iface eth1 inet dhcp
Solution 2
I was facing similar problem with my Ubuntu 14.04 VM, and Solution suggested by @brandizzi for Debian worked with little change.
EDIT: file /etc/network/interfaces:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet dhcp
For UBUNTU 16.04
Run command
ifconfig -a
Look for new interface like in my case it is 'enp0s8'
EDIT file /etc/network/interfaces:
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto enp0s3
iface enp0s3 inet dhcp
auto enp0s8
iface enp0s8 inet dhcp
Solution 3
In Ubuntu 18.04 host, VirtualBox 6.1, using Ubuntu 19.04 as guest
In the guest edit /etc/netplan/50-cloud-init.yaml
file, add two lines as shown below (before the version line). Looks like the network configuration in the guest is set up only to handle one network and the second one has to be added manually
network:
ethernets:
enp0s3:
dhcp4: true
enp0s8:
dhcp4: true
version: 2
Solution 4
Both adapter should be configured in Debian
It seems that in both case you only have one adapter configured, hence your problem.
Create 2 adapters in the VirtualBox configuration of your VM and then start it. If you see only one configured adapter when using ifconfig (a single eth0, no eth1 too), then you should use the network configuration tool for Debian (Network Manager, ifupdown, etc.) to configure both interface in DHCP. So you should have eth0 and eth1 in DHCP.
Related videos on Youtube
brandizzi
Updated on September 18, 2022Comments
-
brandizzi over 1 year
I created a Debian VM on VirtualBox with two interfaces: a NAT one (for accessing internet) and a host-only one. However, I do not know how to make both interfaces work at the same time. If I the define the host-only as the adapter 1, I can access my VM from the host but not the internet; if I define the NAT one as adapter 1, I can access the internet but cannot reach my guest Debian.
So, how could I make both interfaces work together?
Note: I am still trying to map some port from my host to the SSH port from my guest SO, so there is no need to suggest me to do it :)
EDIT: This is the output of
ifconfig
when the first adapter is the host-only one:eth0 Link encap:Ethernet HWaddr 08:00:27:f6:b2:45 inet addr:192.168.56.101 Bcast:192.168.56.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fef6:b245/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:495 errors:0 dropped:0 overruns:0 frame:0 TX packets:206 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:48187 (47.0 KiB) TX bytes:38222 (37.3 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:8 errors:0 dropped:0 overruns:0 frame:0 TX packets:8 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:560 (560.0 B) TX bytes:560 (560.0 B)
This is the output of
netstat -nr
when the first adapter is the host-only one:Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 192.168.56.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
This is the output of
ifconfig
when the first adapter is the NAT one:eth0 Link encap:Ethernet HWaddr 08:00:27:f6:b2:45 inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fef6:b245/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:53 errors:0 dropped:0 overruns:0 frame:0 TX packets:59 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:6076 (5.9 KiB) TX bytes:5526 (5.3 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:16 errors:0 dropped:0 overruns:0 frame:0 TX packets:16 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1664 (1.6 KiB) TX bytes:1664 (1.6 KiB)
This is the output of
netstat -nr
when the first adapter is the NAT one:Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 10.0.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 0.0.0.0 10.0.2.2 0.0.0.0 UG 0 0 0 eth0
-
brandizzi about 12 yearsWell, they are separated (my NAT space is 10.0.2.0/24 and my NAT is 192.168.56.0/24).
-
George M about 12 yearsCan you edit your question to include the output of
ifconfig
andnetstat -nr
so we can see how the interfaces and routing are configured? -
brandizzi about 12 yearsOk, I added the output of the commands to the question.
-
davolfman over 11 yearsI can confirm. Debian doesn't setup the second interface in
/etc/network/interfaces
. Fixed my problem, thanks. For potential debugging, this is two virtio interfaces provided by Virtualbox. One is the NAT interface used for internet access (NATs are provided individually by vbox), the other is a host-only network with DHCP in a completely different private IP class. Debian version tested 6.0.6 x64. -
John Nicholas about 10 yearscan you please post your whole /etc/network/interfaces please. Have been struggling with this for 2 days now.
-
brandizzi about 10 years@JohnNicholas done. Note that you should edit the guest
/etc/network/interfaces
file. -
John Nicholas about 10 yearscheers, mine was the same. My problem was that when i had the NAT adapter first in vbox the other (host) adapter would try to use the dhcp server on that adapter and all would go wrong. When I ordered the adapters in vbox as host only then NAT all started to work (irrespective of their ordering in linux interestingly enough). Netctl didn't have this problem in another vm.
-
Elliot Su about 9 yearsUnder centOs there is no directory /etc/network. Still I would like to have both the NAT networking and host-only working. When I do ifconfig, I can only see one interface. Any ideas what I need to do on CentOs?
-
brandizzi about 9 years@user152468 I know nothing about CentOS. You might prefer to ask a new question on how to do it on CentOS.
-
Maksim Luzik about 6 yearsThis also now applies to Debian 9+ (Ubuntu 16 setup)
-
yahermann over 5 yearsThis works great, thanks! However Ubuntu 18 now uses a new interface called "netplan". Any idea how to replicate the above in netplan?
-
Seb T about 4 yearsIn Ubuntu 19.10 the file is called
/etc/netplan/01-netcfg.yaml
. After the change executesudo netplan apply
to make the changes effective. -
camillo777 over 3 yearsThis worked as well for Debian 10 on a OSX host VirtualBox 6.1.12
-
Hzzkygcs over 2 yearsThank you! You might want to make your words clearer. The name for the
eth1
interface may vary. Useifconfig -a
to find the interface name. I myself added the interface name that existed inifconfig -a
, but didn't exist inifconfig
.