web statistics

VirtualBox Guest IP Address

Posted on August 22, 2007 by nseidm1.
Categories: dhcp, network bridge, virtualbox.

There are two ways to interact with your guest operating system. You can either forward a port on the host machine, or you can have the guest operating system utilize dhcp to retrieve an IP address from your router.

The following are three terminal commands, utilizing the VBoxManage command with a variety of options. To forward a port to your guest OS do the following; replace guestOS with your VirtualBox OS, port 2222 with the port on your host machine that you want to forward, and port 22 for the desired port on the guest OS:

VBoxManage setextradata guestOSname “VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/HostPort” 2222

VBoxManage setextradata guestOSname “VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/GuestPort” 22

VBoxManage setextradata guestOSname “VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/Protocol” TCP

Now this method I find really really really cool !!!

We are going to configure your VirtualBox guest OS to get a regular IP address from your routers DHCP server. By doing this you will be able to access your VirtualBox guest OS as you would any regular computer. Doing this really establishes a Virtual Operating System that truly and completely functions as a real computer. First install a couple of files via apt; the packages were in my Debian Etch repositories, therefore I have no doubt that they are in Ubuntu’s:

sudo apt-get install bridge-utils uml-utilities

The best part it its only a couple of command that can be thrown in a script that is automatically run on boot. Add the following lines to a script, you can name the file something like “virtualbridge.sh”:

#replace user with the main username that you use to login

sudo tunctl -t tap0 -u user

sudo chmod 666 /dev/net/tun

sudo /usr/sbin/brctl addbr br0

sudo /sbin/ifconfig eth0 0.0.0.0 promisc

sudo /usr/sbin/brctl addif br0 eth0

sudo /sbin/dhclient br0

sudo /usr/sbin/brctl addif br0 tap0

#replace tap0ipaddress with an unused local ipaddress.

sudo ifconfig tap0 tap0ipaddress up

sudo bash -c ‘echo 1 > /proc/sys/net/ipv4/conf/tap0/proxy_arp’

#replace hostipaddress with the ip address of the host computer

sudo route add -host hostipaddress dev tap0

#also replace hostipaddress with the ip address of the host computer

sudo arp -Ds hostipaddress eth0 pub

#END of SCRIPT

Now configure your VirtualBox Guest OS to use the tap0 network interface. This can all be done graphically.

Add these lines to a empty new text file and name it what you wish. Set it to be executable with a quick chmod 777 command. Add it to your sessions to be automatically run on user login. Also add your VirtualBox OS to boot on login; you can do this with:

#replace GuestOS with the desired GuestOS; sorry duhh

VBoxManage startvm GuestOS

Now your script will run automatically on login, and the GuestOS will automatically boot. Viola, you now have a GuestOS that automatically boots, and is practically indistinguishable from a real computer complete with a real local ipaddress :)

6 comments.

outback
Comment on August 28th, 2007.

cheers for that post mate

Comment on August 28th, 2007.

your very welcome. I’m here to help.

Comment on February 13th, 2008.

My network hangs on setting my eth to promisc mode. Any suggestions? Can I ommit this step?

timJae
Comment on August 29th, 2008.

good stuff man, this is tagged.

wetjet
Comment on December 14th, 2008.

could we get instructions for the people who use virtualbox installed on windows?

Comment on March 26th, 2009.

Good example, there is a simpler way to make this permanent instead that using rc.local but editing file /etc/network/interfaces

here is an example

http://docs.google.com/Doc?id=dg3zpxp5_58gxg82vgj

Leave a comment

Names and email addresses are required (email addresses aren't displayed), url's are optional.

Comments may contain the following xhtml tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>