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
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.
Type the following apt-get command to install the bridge-utils:
$ sudo apt-get install bridge-utils
$ sudo apt install bridge-utils
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 address 220.127.116.11 network 255.255.255.248 netmask 255.255.255.0 broadcast 18.104.22.168 gateway 22.214.171.124 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 address 10.18.44.26 netmask 255.255.255.192 broadcast 10.18.44.63 dns-nameservers 10.0.80.11 10.0.80.12 # set static route for LAN post-up route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.18.44.1 post-up route add -net 126.96.36.199 netmask 255.255.0.0 gw 10.18.44.1 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
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
# ping public site
ping -c 2 cyberciti.biz
# ping lan server
ping -c 2 10.0.80.12
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.