When installing a VirtualBox virtual machine, the network card is configured in NAT mode, which has not advanced network and, therefore, the performance of the network interface are very limited. In this mode, VirtualBox uses its own router and DHCP , allowing out to the internet from the virtual machine, but preventing, among other things, to communicate with the host computer or, if we have two virtual machines on the same host team, communicate them. To know the limitations we have with this configuration, please consult the help of VirtualBox: Virtual networking -> Networking Address Translation -> NAT Limitations .
This article will configure the network card of the virtual machine so you do not have these limitations and, for example, can connect to the host computer and connection of two or more virtual machines created in the same host computer.
Proper setup is to create a bridge
(bridge) to join the network interfaces the host computer and virtual machine or machines. Let it (remember that the host team has installed a Linux distribution, in my case, Ubuntu Linux 8.04).
All the operations we carry out from a terminal. When administrative tasks we will run the command sudo su
and write our password to avoid typing
sudo before every command.
The initial configuration of the computer's network card can host
consult the file / etc / network / interfaces :
elnuevo root @: / home / coralie # cat / etc / network / interfaces
car as
inet loopback iface what
auto eth0
Iface eth0 inet dhcp
lines relating to the interface eth0
may not be included in this file if you are using roaming.
The command ifconfig
will display information on network cards:
elnuevo root @: / home / coralie # ifconfig
eth0 Link encap: Ethernet direcciónHW 00:1 d: 72:07: df: f0
inet addr: 192.168.1.33 Broadcast: 192.168.1.255 Mask: 255.255.255.0
address inet6: fe80:: 21d: 72FF: fe07: dff0/64 Scope: Link
UP BROADCAST RUNNING MULTICAST MTU: 1500 Metric: 1
RX packets: 9 errors: 0 dropped: 0 overruns: 0 frame: 0
TX packets: 40 errors: 0 dropped: 0 overruns: 0 carrier: 0
collisions: 0 txqueuelen: 1000
RX bytes: 1254 (1.2 KB) TX bytes: 6028 (5.8 KB)
Interruption: 16
lo Link encap: Local Loopback
inet addr: 127.0.0.1 Mask: 255.0.0.0
address inet6:: 1 / 128 Scope: Host
UP LOOPBACK RUNNING MTU: 16436 Metric: 1
RX packets: 1252 errors: 0 dropped: 0 overruns: 0 frame: 0
TX packets: 1252 errors: 0 dropped: 0 overruns: 0 carrier: 0
collisions: 0 txqueuelen: 0
RX bytes: 62600 (61.1 KB) TX bytes: 62600 (61.1 KB)
To create and use the bridge
must download and install the package bridge-utils
:
elnuevo root @: / home / coralie # apt-get install bridge -utils
This software installs the necessary utilities to manage the bridge
. If we run the
order brctl show some of these utilities:
elnuevo root @: / home / coralie # brctl
The next action to take is to create the bridge
:
elnuevo root @: / home / coralie br0 # brctl addbr
Then, create a virtual interface to be used from the virtual machine (this action is performed with the order
VBoxAddIF VirtualBox provides, available assistance VirtualBox For more information about these commands):
root @ elnuevo: / home / coralie # VBoxAddIF vbox0 coralie br0
VirtualBox host networking interface creation utility, version 1.6. 0
(C) 2005-2007 Sun Microsystems, Inc.
All rights reserved.
Creating the permanent host networking interface "vbox0" for coralie user.
VBoxAddIF
Order creates a virtual interface
vbox0 be used by the virtual machine, assign permissions to the user
coralie to use the interface (this means that this interface can not use another user) and refers to the bridge br0
created previously.
If we use another virtual machine on the same host computer, create another virtual interface for this new machine, since each virtual machine should have its own virtual interface. In the following command creates the virtual interface
vbox1 to be used by the user
coralie and added to the br0 bridge
created above:
elnuevo root @: / home / coralie # VBoxAddIF vbox1 coralie br0
VirtualBox host networking interface creation utility, version 1.6.0
(C) 2005-2007 Sun Microsystems, Inc.
All rights reserved.
Creating the permanent host networking interface "vbox1" for coralie user.
can see
bridge configuration with two interfaces virtual have been added by running the following command:
elnuevo root @: / home / coralie # brctl show
bridge name bridge id STP enabled interfaces
br0 8000.00ff09719902 vbox0 not
vbox1
The next action is
edit the / etc / network / interfaces for the bridge
configuration and network cards real and virtual take effect when you turn on the system or restart networking service
. The contents of this file is as follows:
elnuevo root @: / home / coralie # gedit / etc / network / interfaces
car as
the inet loopback iface
Auto eth0
iface eth0 inet dhcp
auto br0
iface br0 inet dhcp
bridge_ports eth0 vbox0 vbox1
The block on the bridge br0
get the IP address for br0
DHCP service
and indicates that all information entering or leaving by
interfaces eth0, and vbox0 vbox1 be addressed to the bridge
.
For everything to work is that
lift bridge and restart the networking
:
elnuevo root @: / home / coralie # ifconfig br0 up
root @ elnuevo: / home / coralie # / etc / init.d / networking restart
With this configuration everything should work fine, but it is not. The problem is that both the real network card as virtual function intermittently: sometimes yes and sometimes no. The command ifconfig
see the configuration we have done:
root @ elnuevo: / home / coralie # ifconfig
br0 Link encap: Ethernet direcciónHW 00: ff: 09:71:99:02
inet addr: 192.168.1.33 Broadcast: 192.168.1.255 Mask: 255.255.255.0
address inet6: fe80:: 2ff: 9ff: fe71: 9902/64 Scope: Link
UP BROADCAST RUNNING MULTICAST MTU: 1500 Metric: 1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:25 errors:0 dropped:0 overruns:0 carrier:0
colisiones:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:5534 (5.4 KB)
eth0 Link encap:Ethernet direcciónHW 00:1d:72:07:df:f0
inet dirección:192.168.1.33 Difusión:192.168.1.255 Máscara:255.255.255.0 address
inet6: fe80:: 21d: 72FF: fe07: dff0/64 Scope: Link
UP BROADCAST RUNNING MULTICAST MTU: 1500 Metric: 1
RX packets: 15 errors: 0 dropped: 0 overruns: 0 frame: 0
TX packets: 43 errors: 0 dropped: 0 overruns: 0 carrier: 0
collisions: 0 txqueuelen: 1000
RX bytes: 1826 (1.7 KB) TX bytes: 6379 (6.2 KB)
Interruption: 16
lo Link encap: Local Loopback
inet addr: 127.0.0.1 Mask: 255.0.0.0
address inet6:: 1 / 128 Scope: Host
UP LOOPBACK RUNNING MTU: 16436 Metric: 1
RX packets: 1270 errors: 0 dropped: 0 overruns: 0 frame: 0
TX packets: 1270 errors: 0 dropped: 0 overruns: 0 carrier: 0
collisions: 0 txqueuelen: 0
RX bytes: 63500 (62.0 KB) TX bytes: 63500 (62.0 KB)
vbox0 Link encap: Ethernet direcciónHW 00: ff: 09:71:99:02
address inet6: fe80:: 2ff: 9ff: fe71: 9902/64 Scope: Link
UP BROADCAST RUNNING MULTICAST MTU : 1500 Metric: 1
RX packets: 0 errors: 0 dropped: 0 overruns: 0 frame: 0
TX packets: 0 errors: 0 dropped: 25 overruns: 0 carrier: 0
collisions: 0 txqueuelen: 500
RX bytes: 0 (0.0 B) TX bytes: 0 (0.0 B)
vbox1 Link encap: Ethernet direcciónHW 00: ff: ca: ec: c2: 8c
address inet6: fe80:: 2ff: caff: FEEC: c28c/64 Scope: Link
UP BROADCAST RUNNING MULTICAST MTU: 1500 Metric: 1
RX packets: 0 errors: 0 dropped: 0 overruns: 0 frame: 0
TX packets: 0 errors: 0 dropped: 25 overruns: 0 carrier : 0
collisions: 0 txqueuelen: 500
RX bytes: 0 (0.0 B) TX bytes: 0 (0.0 B)
After trying various configurations, I have come to conclusion that the problem arises because the real network card (eth0
) and
bridge (br0
) share the same IP address (you can see them in the previous output of the command ifconfig
).
The solution I've found is to build the interface eth0
without assigning any IP address and only bridge br0
obtain the IP address. New content
file / etc / network / interfaces would be:
root @ elnuevo: / home / coralie # gedit / etc / network / interfaces
car as
inet loopback iface what
auto eth0
iface eth0 inet manual
auto br0
iface br0 inet dhcp
eth0 bridge_ports vbox0 vbox1
The only change I made in this file is changing the line iface eth0 inet dhcp
the line iface eth0 inet manual
, thereby making interface eth0
adjournment but is not given any direction IP. These settings have been experimenting with two virtual machines (with dual boot Windows and Linux both) over the host team and has worked steadily for several days.
For this configuration to take effect, restart the networking service
:
elnuevo root @: / home / coralie # / etc / init.d / networking restart
The command ifconfig see that all interfaces are raised but the interface
eth0 has no IP address:
elnuevo root @: / home / coralie # ifconfig
br0 Link encap: Ethernet direcciónHW 00:1 d: 72:07: df: f0
inet addr : 192.168.1.33 Broadcast: 192.168.1.255 Mask: 255.255.255.0
address inet6: fe80:: 21d: 72FF: fe07: dff0/64 Scope: Link
UP BROADCAST RUNNING MULTICAST MTU: 1500 Metric: 1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:27 errors:0 dropped:0 overruns:0 carrier:0
colisiones:0 txqueuelen:0
RX bytes:1042 (1.0 KB) TX bytes:4565 (4.4 KB)
eth0 Link encap:Ethernet direcciónHW 00:1d:72:07:df:f0
dirección inet6: fe80::21d:72ff:fe07:dff0/64 Alcance:Vínculo
UP BROADCAST RUNNING MULTICAST MTU: 1500 Metric: 1
RX packets: 8 errors: 0 dropped: 0 overruns: 0 frame: 0
TX packets: 27 errors: 0 dropped: 0 overruns : 0 carrier: 0
collisions: 0 txqueuelen: 1000
RX bytes: 1186 (1.1 KB) TX bytes: 4697 (4.5 KB)
Interruption: 16
lo Link encap: Local Loopback
inet addr: 127.0.0.1 Mask: 255.0.0.0
address inet6:: 1 / 128 Scope: Host
UP LOOPBACK RUNNING MTU: 16436 Metric: 1
RX packets: 1288 errors: 0 dropped: 0 overruns: 0 frame: 0
TX packets: 1288 errors: 0 dropped: 0 overruns: 0 carrier: 0
collisions: 0 txqueuelen: 0
RX bytes: 64400 (62.8 KB) TX bytes: 64400 (62.8 KB)
vbox0 Link encap: Ethernet direcciónHW 00: ff: 09:71:99:02
address inet6: fe80 :: 2ff: 9ff: fe71: 9902/64 Scope: Link
UP BROADCAST RUNNING MULTICAST MTU: 1500 Metric: 1
RX packets: 0 errors: 0 dropped: 0 overruns: 0 frame : 0
TX packets: 0 errors: 0 dropped: 55 overruns: 0 carrier: 0
collisions: 0 txqueuelen: 500
RX bytes: 0 (0.0 B) TX bytes: 0 (0.0 B)
vbox1 Link encap: Ethernet direcciónHW 00: ff: ca: ec: c2: 8c
address inet6: fe80:: 2ff: caff: FEEC: c28c/64 Scope: Link
UP BROADCAST RUNNING MULTICAST MTU: 1500 Metric: 1
RX packets: 0 errors: 0 dropped: 0 overruns: 0 frame: 0
TX packets: 0 errors: 0 dropped: 33 overruns: 0 carrier: 0
collisions: 0 txqueuelen: 500
RX bytes: 0 (0.0 B) TX bytes: 0 (0.0 B)
If we see the bridge
configuration, we get the following output:
elnuevo root @: / home / coralie # brctl show
bridge name bridge id STP enabled interfaces
8000.001d7207dff0 br0 eth0 no
vbox0
vbox1
This output indicates that
interfaces eth0, vbox0 vbox1 and are using the bridge Br0
.
Then, assign permissions to users on the directory
/ dev / net / tun using the system for managing virtual interfaces.
elnuevo root @: / home / coralie # chmod 0666 / dev / net / tun
Finally, you must specify the settings the virtual machine network (from VirtualBox) to be the configuration from the host interface and virtual interface has been created. This action is displayed in the window in Figure 1.
Figure 1
In this window you selected
Anfirtión Interface in paragraph Connect and included
vbox0 in paragraph
Interface name. For the second virtual machine should include vbox1
in paragraph
Interface Name and keep the other parameters in Figure 1.
If only going to itself uses a virtual machine on the host computer would have to omit all the settings made for the virtual interface
vbox1 .
Remember that the user who will run the virtual machines must be a member of vboxusers
.
One final note. If we use virtual machines with other users, create virtual interfaces for these users. Keep in mind that the permission to use the virtual interface is assigned when it is created, using the command VBoxAddIF vbox0
coralie br0. For example, if the user
pepe use a virtual machine could not use virtual interfaces created for another user, and would have to use your own. To do this, run the command should VBoxAddIF vbox2
br0 pepe. In addition, the network configuration of your virtual machine (Figure 1), should be included
vbox2 in paragraph
Interface name. Do not forget
edit the file / etc / network / interfaces and add the interface vbox2
in block bridge interface br0
, as follows: eth0 bridge_ports
vbox0 vbox1 vbox2.
How could it be otherwise, Sun Microsystems, as of version 2.1.2 of VirtualBox, this configuration has been simplified network.
In this article I posted the new method.