Ubuntu 18.04: Bridge interface

This article will describe creating bridge interface of ethernet. This makes that other machines in network can connect to virtual machines on KVM and containers on LXD via network.

1 bridge-utils + DHCP

$ INTERFACE=ens3
$ sudo apt install -y bridge-utils
$ cat <<EOF | sudo tee /etc/network/interfaces
auto lo
iface lo inet loopback
auto br0
iface br0 inet dhcp
      bridge_ports ${INTERFACE}
      bridge_stp off
      bridge_maxwait 0
EOF
$ sudo reboot

2 bridge-utils + Static IP Address

$ INTERFACE=ens3
$ sudo apt install -y bridge-utils
$ cat <<EOF | sudo tee /etc/network/interfaces
auto lo
iface lo inet loopback
auto br0
iface br0 inet static
      address 192.168.11.250
      netmask 255.255.255.0
      network 192.168.11.0
      broadcast 192.168.11.255
      gateway 192.168.11.1
      dns-nameservers 192.168.11.2
      dns-search hiroom2.com
      bridge_ports ${INTERFACE}
      bridge_stp off
      bridge_maxwait 0
EOF
$ sudo sed -i /etc/systemd/resolved.conf \
        -e 's/^#DNS=/DNS=192.168.11.2/g' \
        -e 's/^#Domains=/Domains=hiroom2.com/g'
$ sudo reboot

3 nmcli + DHCP

$ sudo nmcli con add type bridge ifname br0
$ sudo nmcli con mod bridge-br0 bridge.stp no
$ sudo nmcli con add type bridge-slave ifname ${INTERFACE} master bridge-br0
$ sudo reboot

4 nmcli + Static IP Address

$ sudo nmcli con add type bridge ifname br0
$ sudo nmcli con mod bridge-br0 bridge.stp no
$ sudo nmcli con add type bridge-slave ifname ${INTERFACE} master bridge-br0
$ sudo nmcli con modify bridge-br0 ipv4.method manual \
       ipv4.address "192.168.11.250/24" \
       ipv4.gateway "192.168.11.1" \
       ipv4.dns "192.168.11.2" \
       ipv4.dns-search "hiroom2.com"
$ sudo reboot

5 systemd-networkd + DHCP

$ INTERFACE=ens3
$ MACADDR=$(ip a s ${INTERFACE} | grep 'link/ether' | awk '{ print $2 }')
$ cat <<EOF | sudo tee /etc/systemd/network/br0.netdev
[NetDev]
Name=br0
Kind=bridge
EOF
$ cat <<EOF | sudo tee /etc/systemd/network/br0.network
[Match]
Name=br0

[Link]
MACAddress=${MACADDR}

[Network]
DHCP=yes
EOF
$ cat <<EOF | sudo tee /etc/systemd/network/${INTERFACE}.network
[Match]
Name=${INTERFACE}

[Network]
Bridge=br0

[Network]
DHCP=no
EOF
$ sudo systemctl enable systemd-networkd
$ sudo reboot

6 systemd-networkd + Static IP Address

$ INTERFACE=ens3
$ MACADDR=$(ip a s ${INTERFACE} | grep 'link/ether' | awk '{ print $2 }')
$ cat <<EOF | sudo tee /etc/systemd/network/br0.netdev
[NetDev]
Name=br0
Kind=bridge
EOF
$ cat <<EOF | sudo tee /etc/systemd/network/br0.network
[Match]
Name=br0

[Link]
MACAddress=${MACADDR}

[Network]
Address=192.168.11.250/24
Gateway=192.168.11.1
DNS=192.168.11.2
Domain=hiroom2.com
EOF
$ cat <<EOF | sudo tee /etc/systemd/network/${INTERFACE}.network
[Match]
Name=${INTERFACE}

[Network]
Bridge=br0

[Network]
DHCP=no
EOF
$ sudo systemctl enable systemd-networkd
$ sudo reboot