How to configure a Network Bridge on Ubuntu Server

NOTE: This guide has been tested on Lucid Lynx 10.04 and Karmic Koala 9.10 although it may work equally well on earlier or later version of Ubuntu.

If you would like your virtual machines to be visible on your network and have them accept connections from other computers and devices on your network, so they appear as tho they were distinct physical machines, then you need to create what is called a Network Bridge. This process will “share” the physical network adapter on your host computer with each of the virtual machines. You can only configure a Network Bridge using a wired network adapter. It is not possible to use a wireless device for this.

You need to make a couple of changes to a file on the host computer. So, issue the following command either from a Putty Session or from a Terminal (Applications -> Accessories -> Terminal). You could of course do this directly from the command line on your server:

sudo vim /etc/network/interfaces

The contents of your file probably looks something similar to this:

# 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

Note: If you’re currently using a fixed IP address then the auto eth0 section of the file will look different to the above.

How to create a network bridge using DHCP

If you are using DHCP to allocate an IP address to your server then change the contents of the file as follows:

If you’re not familiar with using the vim editor then you press the [Insert] key once to switch into “edit mode” to allow you to type or paste new content into the file.

# 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 br0
iface br0 inet dhcp
    bridge_ports eth0
    bridge_fd 9
    bridge_hello 2
    bridge_maxage 12
    bridge_stp off

Don’t forget to mask out the auto eth0 and iface eth0 inet dhcp lines

Once you’ve made the changes then press the [Esc] key once and type :wq to save and quit out of the file. If you make a mistake then issue :q! instead of :wq to abort your changes.

Once you’ve made the changes to the file then issue the following command to make them active:

sudo /etc/init.d/networking restart

How to create a network bridge using a static IP address

If you are currently using a static IP address for your server or you wish to switch to using a static IP address for your server then change the contents of the file as follows:

obviously you must substitute the values for address, broadcast, netmask & gateway to those applicable to your own network. Don’t simply use the ones that work in my setup!

If you’re not familiar with using the vim editor then you press the [Insert] key once to switch into “edit mode” to allow you to type or paste new content into the file.

# 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 br0
iface br0 inet static
    address 192.168.1.200
    broadcast 192.168.1.255
    netmask 255.255.255.0
    gateway 192.168.1.254
    bridge_ports eth0
    bridge_fd 9
    bridge_hello 2
    bridge_maxage 12
    bridge_stp off

Don’t forget to mask out the auto eth0 and iface eth0 inet dhcp lines

Once you’ve made the changes then press the [Esc] key once and type :wq to save and quit out of the file. If you make a mistake then issue :q! instead of :wq to abort your changes.

Once you’ve made the changes to the file then issue the following command to make them active:

sudo /etc/init.d/networking restart