Here are some notes, mostly for my future self about how to set up bond + vlan + bridge networks in Centos 8 in order to create a highly resilient virtual machine host server.
Firstly, create the bond interface and set the options:
nmcli con add type bond ifname bond0 bond.options "mode=802.3ad,miimon=100" ipv4.method disabled ipv6.method ignore connection.zone trusted
Note the 802.3ad option – this says we are going to be using the LACP protocol which requires router support, however you can look at the different mode options in the kernel documentation.
Then, we add the required interfaces into the bond – in this case enp131s0f0 and enp131s0f1
nmcli con add type ethernet ifname enp131s0f0 master bond0 slave-type bond connection.zone trusted nmcli con add type ethernet ifname enp131s0f1 master bond0 slave-type bond connection.zone trusted
If you want to create a standard vlan interface over the top of the bond for vlan tag 123 we can do this just with 1 more command:
nmcli con add type vlan ifname bond0.123 dev bond0 id 123 ipv4.method manual ipv4.addresses a.b.c.d/24 ipv4.gateway a.b.c.d ipv4.dns 8.8.8.8 connection.zone public
Alternatively if you want to set up a bridge on this interface:
nmcli con add ifname br.123 type bridge ipv4.method manual ipv4.addresses a.b.c.d/24 ipv4.gateway a.b.c.d ipv4.dns 8.8.8.8 \ bridge.stp no bridge.forward-delay 0 connection.zone public nmcli con add type vlan ifname bond0.123 dev bond0 id 123 master br.123 slave-type bridge connection.zone trusted
If you don’t want the default route or DNS, simply remove the ipv4.gateway
and ipv4.dns
options above.
If you want to create a bridge which doesn’t have any IP address on the host (just bridges through to the host vm’s) then replace all the ipv4 settings with: ipv4.method disabled ipv6.method ignore
.