Skip to content

How to setup bonding

Debian

Install ifenslave package:

apt-get install ifenslave

Edit /etc/network/interfaces file and change eth0 settings:

auto bond0  
iface bond0 inet static  
        address x.x.x.x  
        netmask x.x.x.x  
        gateway x.x.x.x  
        dns-nameservers 78.24.12.150 217.16.191.70  
        dns-search vshosting.cz  
        bond-mode 802.3ad  
        bond-xmit-hash-policy layer3+4  
        bond-lacp-rate 1  
        bond-miimon 100  
        bond-downdelay 200  
        bond-updelay 200  
        bond-slaves eth0 eth1

Ubuntu 18.04 and newer

Create /etc/netplan/config.yaml with the following contents:

network:
 version: 2
 renderer: networkd
 ethernets:
 eno1:
 dhcp4: no
 eno2:
 dhcp4: no
 bonds:
 bond0:
 addresses:
        - XXX.XXX.XXX.XXX/YY
 gateway4: XXX.XXX.XXX.XXX
 nameservers:
 addresses:  
 - 78.24.12.150  
 - 217.16.191.70
 interfaces:
        - eno1
        - eno2
 parameters:
 mode: 802.3ad
 mii-monitor-interval: 100

Then runnetplan apply.

Ubuntu 16.04

The configuration steps are the same as with Debian.

Centos 7 and 8

First you have to enable automatic loading of the bonding support module.

modprobe --first-time bonding

Create  ifcfg-bond0 file:

vi /etc/sysconfig/network-scripts/ifcfg-bond0

and insert

DEVICE=bond0  
NAME=bond0  
TYPE=Bond  
BONDING_MASTER=yes  
IPADDR=x.x.x.x  
PREFIX=xx  
ONBOOT=yes  
BOOTPROTO=none  
BONDING_OPTS="miimon=100 mode=4 lacp_rate=1 xmit_hash=1 downdelay=200 updelay=200"

Configure both interfaces that we want to have in bonding (edit the highlighted line)

vi /etc/sysconfig/networks-scripts/ifcfg-encp0sX
HWADDR="08:00:27:04:03:86"  
TYPE="Ethernet"  
**BOOTPROTO="none"**  
DEFROUTE="yes"  
PEERDNS="yes"  
PEERROUTES="yes"  
IPV4_FAILURE_FATAL="no"  
IPV6INIT="yes"  
IPV6_AUTOCONF="yes"  
IPV6_DEFROUTE="yes"  
IPV6_PEERDNS="yes"  
IPV6_PEERROUTES="yes"  
IPV6_FAILURE_FATAL="no"  
NAME="enp0s8"  
UUID="a97b23f2-fa87-49de-ac9b-39661ba9c20f"  
ONBOOT="yes"  
MASTER=bond0  
SLAVE=yes

Do the same also for the second interface.

Then start the interfaces

ifup ifcfg-enp0sX

If you use Network Manager, you'll need to reload the connection:

nmcli con reload

Finally, restart the network

systemctl restart network

Check the status of bonding

cat /proc/net/bonding/bond0

Centos 6.5

Create ifcfg-bond0 file,

vi /etc/sysconfig/network-script/ifcfg-bond0

and insert:

DEVICE=bond0  
BOOTPROTO=none  
ONBOOT=yes  
IPADDR=x.x.x.x  
NETWORK=x.x.x.x  
NETMASK=x.x.x.x  
USERCTL=no  
BONDING_OPTS="mode=4 miimon=100 lacp_rate=1 xmit_hash=1 downdelay=200 updelay=200"

Create bonding.conf file

vi /etc/modprobe.d/bonding.conf

and insert

alias bond0 bonding

Edit settings for eth0:

vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth1  
MASTER=bond0  
SLAVE=yes  
USERCTL=no  
ONBOOT=yes  
BOOTPROTO=none

Same for eth1.

Run:

modprobe bonding
service network restart

And check the status of bonding:

cat /proc/net/bonding/bond0