network bridge

VirtualBox Host Networking (Grab an IP Via DHCP)

A little diagram of an IP address (IPv4)
Image via Wikipedia

I use the following commands in a boot script. I posted about this a while back, and ran into some trouble re-doing the procedure, so I though I would post about what I learned the second time around.

Replace “primaryusername” with the user that you login with. Replace eth0 with your primary adapter name. Replace 192.168.0.11 with an unused IP address that is provided by your DHCP server. Replace 192.168.0.2 with another IP address that is provided by your DHCP server. Make sure both IP addresses are not currently in use!!!!!!

sudo tunctl -t tap0 -u primaryusername

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

sudo ifconfig tap0 192.168.0.11 up

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

sudo route add -host 192.168.0.2 dev tap0

sudo arp -Ds 192.168.0.2 eth0 pub

After these commands are run, configure your VirtualBox to use Host Networking, with the device name being tap0.

Reblog this post [with Zemanta]

VirtualBox Guest IP Address

UPDATE: VirtualBox host networking is much easier now, and is completely automated on both Windows and Linux.

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
sudo route add -host hostipaddress dev tap0 #also replace hostipaddress with the host ip address
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
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 :)