Configure NIC(Network Interface Card) bonding in CentOS 7 / RHEL 7

NIC(Network Interface Card) bonding is also known as Network bonding. It can be defined as the aggregation or combination of multiple NIC  into a single bond interface. It’s main purpose is to provide high availability and redundancy.

In this article we will learn how to configure nic or netwok bonding in CentOS 7 & RHEL 7. In my case i have two interface cards (enp0s3 & enp0s8) and will form a bond interface (bond0).

Prerequisite :

If bonding module is not loaded on your linux box then use the below command to load.

[root@openstack ~]# modprobe bonding

To list the bonding module info, use following command.

[root@openstack ~]# modinfo bonding

Output will be something like below

modinfo-bonding

Step:1 Create Bond Interface File

Create a bond interface file (ifcfg-bond0) under the folder “/etc/sysconfig/network-scripts/

[root@openstack network-scripts]# vi ifcfg-bond0
DEVICE=bond0
TYPE=Bond
NAME=bond0
BONDING_MASTER=yes
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.1.70
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
BONDING_OPTS="mode=5 miimon=100"

Save & exit the file.

Specify the IP address, Netmask & bonding modes as per your requirement. In my example i am using ‘mode=5′ which is used to provide fault tolerance and load balancing.

Please refer this for Different Modes in NIC bonding

Step:2 Edit the NIC interface files

For ifcfg-enp0s3

[root@openstack ~]# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
TYPE=Ethernet
BOOTPROTO=none
DEVICE=enp0s3
ONBOOT=yes
HWADDR="08:00:27:69:60:c9"
MASTER=bond0
SLAVE=yes

For ifcfg-enp0s8

[root@openstack ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp0s8
TYPE=Ethernet
BOOTPROTO=none
DEVICE=enp0s8
ONBOOT=yes
HWADDR="08:00:27:ea:71:8d"
MASTER=bond0
SLAVE=yes
Step:3 Restart the Network Service

Below command will restart the network service and will bring above changes into the effect.

[root@openstack ~]# systemctl restart network.service

Step:4 Test & Verify bond interface.

Use ‘ifconfig‘ & ‘ip add‘ command to check bond interface along with its slave interfaces.

ifconfig-bond

Use following command to view bond interface settings like bonding mode & slave interface.

[root@openstack ~]# cat /proc/net/bonding/bond0

bonding-settings

Step:5 Fault tolerance testing

To test the fault tolerance we can down one interface and check whether you are still able access the server.

[root@openstack ~]# ifdown enp0s8
Device 'enp0s8' successfully disconnected.
[root@openstack ~]#

fault-tolerance-bonding

1 Response

  1. two cents ... says:

    Simpler solution, also we shouldn’t use bond in Redhat/Centos 7 – its deprecated, insted that use teamd :D.

    #show all device
    nmcli -p dev status
    #add interface with ipv4 only address, two slaves and active-backup
    nmcli connection add type bond ifname bond0 con-name bond0 mode active-backup primary enp0s3 miimon 200 ip4 213.222.208.14 gw4 213.222.208.1
    nmcli connection mod bond0 ipv4.dns “8.8.8.8” ipv6.method “ignore”
    nmcli connection add type bond-slave ifname enp0s3 master bond0
    nmcli connection add type bond-slave ifname enp0s8 master bond0

    #ifup 😀
    nmcli c u bond0

    #verification
    nmcli -p connection show bond0 | less
    nmcli -p connection show -a
    nmcli network connectivity

Leave a Reply

Your email address will not be published. Required fields are marked *