Network Bridge crash course

Prerequisites:

  • Ubuntu (derivative) or Arch with NetworkManager (ex: Antergos)
  • Wired Connection (LAN)
  • For the LXC part at the bottom: basic knowledge of LXC containers: Getting Started

I use a network bridge to connect my LXC containers to the same subnet as my other devices. This means that I can reach my containers from other machines/devices than my host. They (containers) have their own ip’s and look like any other equipment on the network.

I will use two different methods. The first, which is using NetworkManager will work on both ubuntu and Arch (with NetworkManager (Antergos)). The last will only to my knowledge work in ubuntu but is very useful if you are setting up a server to run a bunch of containers.

Using NetworkManager

Open a terminal:

nm-connection-editor

Select Add –> Bridge –> Create

Connection name, set br0 (or something else 🙂 )
Interface Name: br0 (Wrong in picture)

 

Click Add –> Ethernet

Device: Choose the NIC you want to bridge, if you only have one network card you only have one choice.

Cloned MAC address: Choose Preserve.

Save & save

Your bridge is ready, delete the Wired Connection 1 to use your bridge!
There will be some seconds when your network reconfigures, then you will be connected to your new bridge.

How to make LXC containers use your new bridge is at the bottom of the post.

Ubuntu:

Open a terminal

anders@ubuntults-vm:~$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
 inet 127.0.0.1/8 scope host lo
 valid_lft forever preferred_lft forever
 inet6 ::1/128 scope host 
 valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
 link/ether 00:0c:29:d5:bb:0a brd ff:ff:ff:ff:ff:ff
 inet 10.0.1.41/24 brd 10.0.1.255 scope global dynamic ens33
 valid_lft 86365sec preferred_lft 86365sec
 inet6 fe80::8fd0:7c43:56a4:ab90/64 scope link 
 valid_lft forever preferred_lft forever

See ens33 ? (Yours will be different) That will be the “name” of your network interface. Take a note of that!

Now open /etc/network/interfaces

sudo nano /etc/network/interfaces

It should look like:

# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

We are going to change it to:

# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback


#bridge

auto br0
iface br0 inet dhcp
       bridge-ifaces ens33
       bridge-ports ens33
       up ifconfig ens33 up

       iface eth0 inet manual

exit with ctrl-x –> Y –> Enter

Now run:

sudo ifup br0

Now your bridge is ready! (Nothing happens? Reboot)

Configure lxc to use the bridge:

sudo nano /etc/lxc/default.conf

looks like: (Depending on distro).

lxc.net.0.type = veth
lxc.net.0.link = br0
lxc.net.0.flags = up
lxc.net.0.hwaddr = 00:16:3e:xx:xx:xx

change lxc.net.0.link = lxcbr0 to lxc.net.0.link = br0

Remember to change all your /var/lib/lxc/containername/config files to use br0!

Good luck!

 

Leave a Comment!