How To Setup Bridge (br0) Network on Ubuntu Linux 14.04 and 16.04 LTS

I am a new Ubuntu Linux 16.04 LTS user. How do I setup a network bridge on the host server powered by Ubuntu 14.04 LTS or 16.04 LTS operating system?

A Bridged networking is nothing but a simple technique to connect to the outside network through the physical interface. It is useful for LXC/KVM/Xen/Containers virtualization and other virtual interfaces. The virtual interfaces appear as regular hosts to the rest of the network. In this tutorial I will explain how to configure a Linux bridge with bridge-utils (brctl) command line utility on Ubuntu server.

Our sample bridged networking

Fig.01: Sample Ubuntu Bridged Networking Setup For Kvm/Xen/LXC Containers (br0)

In this example eth0 and eth1 is the physical network interface. eth0 connected to the LAN and eth1 is attached to the upstream ISP router/Internet.

Install bridge-utils

Type the following apt-get command to install the bridge-utils:
$ sudo apt-get install bridge-utils
$ sudo apt install bridge-utils
Sample outputs:

Fig.02: Ubuntu Linux install bridge-utils package

Creating a network bridge on the Ubuntu server

Edit /etc/network/interfaces using a text editor such as nano or vi, enter:
$ sudo cp /etc/network/interfaces /etc/network/interfaces.bakup-1-july-2016
$ sudo vi /etc/network/interfaces

Let us setup eth1 and map it to br1, enter (delete or comment out all eth1 entries):

# br1 setup with static wan IPv4 with ISP router as gateway
auto br1
iface br1 inet static
        bridge_ports eth1
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0

To setup eth0 and map it to br0, enter (delete or comment out all eth1 entries):

auto br0
iface br0 inet static
        # set static route for LAN 
	post-up route add -net netmask gw
	post-up route add -net netmask gw
        bridge_ports eth0
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0

A note about br0 and DHCP

DHCP config options:

auto br0
iface br0 inet dhcp
        bridge_ports eth0
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0

Save and close the file.

Restart the server or networking service

You need to reboot the server or type the following command to restart the networking service (this may not work on SSH based session):
$ sudo systemctl restart networking
If you are using Ubuntu 14.04 LTS or older not systemd based system, enter:
$ sudo /etc/init.d/restart networking

Verify connectivity

Use the ping/ip commands to verify that both LAN and WAN interfaces are reachable:
# See br0 and br1
ip a show
# See routing info
ip r
# ping public site
ping -c 2
# ping lan server
ping -c 2

Sample outputs:

Fig.03: Verify Bridging Ethernet Connections

Now, you can configure XEN/KVM/LXC containers to use br0 and br1 to reach directly to the internet or private lan. No need to setup special routing or iptables SNAT rules.

🐧 Please support my work on Patreon or with a donation.
🐧 Get the latest tutorials on Linux, Open Source & DevOps via:
CategoryList of Unix and Linux commands
File Managementcat
FirewallAlpine Awall CentOS 8 OpenSUSE RHEL 8 Ubuntu 16.04 Ubuntu 18.04 Ubuntu 20.04
Network Utilitiesdig host ip nmap
OpenVPNCentOS 7 CentOS 8 Debian 10 Debian 8/9 Ubuntu 18.04 Ubuntu 20.04
Package Managerapk apt
Processes Managementbg chroot cron disown fg jobs killall kill pidof pstree pwdx time
Searchinggrep whereis which
User Informationgroups id lastcomm last lid/libuser-lid logname members users whoami who w
WireGuard VPNAlpine CentOS 8 Debian 10 Firewall Ubuntu 20.04
1 comment… add one
  • ThanksATon Jul 13, 2016 @ 15:14

    Worked perfectly after setting my Juniper network switch configuration:

    # set chassis aggregated-devices ethernet device-count {number} <-- (This will be a number between 1 and 111.)
    # set interfaces ae0 aggregated-ether-options link-speed 1g
    # set interfaces ae0 aggregated-ether-options lacp active
    # set interfaces ae0 aggregated-ether-options lacp periodic fast
    # set interfaces ae0 unit 0 family ethernet-switching vlan members {vlan id}
    # set interfaces ge-0/0/1 ether-options 802.3ad ae0 <-- (Using 'ae0' for this example. Use the next available ae interface number.)
    # set interfaces ge-0/0/2 ether-options 802.3ad ae0

    Thanks a ton.

Leave a Reply

Your email address will not be published. Required fields are marked *

Use HTML <pre>...</pre> for code samples. Problem posting comment? Email me @