How to Create NIC Teaming or Bonding in CentOS 8 / RHEL 8

NIC teaming is the aggregation or joining of two or more network links into a single logical link to provide redundancy and high availability. The logical link / interface is known as the computer interface. In the event that the active physical link goes down, one of the reserved or backup links is automatically activated and ensures an uninterrupted connection to the server.

Step 1: Install the teamd Daemon in CentOS

Teamd is the daemon that is responsible for creating a network team that will act as the logical interface during runtime. By default, it comes installed with CentOS/RHEL 8. But if, for whatever reason, it’s not installed, execute the following dnf command to install it.

$ sudo dnf install teamd

 

 

Once installed verify that teamd is installed by running the rpm command:

$ rpm -qi teamd

 

 

Step 2: Configure NIC Teaming in CentOS

To configure NIC teaming we will use the handy nmcli tool that can be used for the management of NetworkManager service. In my system, I have 2 NIC cards that I’m going to bond or combine to create a logical team interface: enp0s3 and enp0s8. This may be different in your case.

To confirm the active network interfaces run:

$ nmcli device status

 

 

The output confirms the existence of 2 active network connections. To gather more information about the interfaces like UUID, run the command:

$ nmcli connection show

 

 

To create a network teaming link or interface, which will be our logical link, we are going to delete the existing network interfaces. Thereafter we will create slave interfaces using the deleted interfaces and then associate them with the teaming link.

Using their respective UUID’s execute the commands below to delete the links:

$ nmcli connection delete e3cec54d-e791-4436-8c5f-4a48c134ad29
$ nmcli connection delete dee76b4c-9alb-4f24-a9f0-2c9574747807

 

 

This time when you check the interfaces, you’ll notice that they are disconnected and provide no connection to the server. Basically, your server will be isolated from the rest of the network.

$ nmcli device status

 

 

Next, we are going to create a team interface called team0 in active-backup runner mode. As earlier stated, the active backup runner mode uses one active interface and reserves the others for redundancy in case the active link goes down.

$ nmcli connection add type team con-name team0 ifname team0 config '{"runner": {"name": "activebackup"}}'

 

 

To view the attributes assigned to the team0 interface run the command:

$ nmcli connection show team0

 

 

Perfect! At this point, we only have one interface up, which is the team0 interface as shown.

$ nmcli connection show

 

 

Next, configure IP address for the team0 interface as shown using the nmcli command. Be sure to assign the IP’s according to your network’s subnet & IP addressing scheme.

$ nmcli con mod team0 ipv4.addresses 192.168.2.100/24
$ nmcli con mod team0 ipv4.gateway 192.168.2.1
$ nmcli con mod team0 ipv4.dns 8.8.8.8
$ nmcli con mod team0 ipv4.method manual
$ nmcli con mod team0 connection.autoconnect yes

 

 

Thereafter, create slave links and associate the slaves to the team link:

$ nmcli con add type team-slave con-name team0-slave0 ifname enp0s3 master team0
$ nmcli con add type team-slave con-name team0-slave1 ifname enp0s8 master team0

 

 

Check the status of the links again, and you’ll notice that the slave links are now active.

$ nmcli connection show

 

 

Next, deactivate and activate the team link. This activates the connection between the slave links and the team link.

$ nmcli connection down team0 && nmcli connection up team0

 

 

Next, verify the state of the team link connection as shown.

$ ip addr show dev team0

 

 

We can see that the link is up with the correct IP addressing that we configured earlier.

To retrieve additional details about the team link, run the command:

$ sudo teamdctl team0 state

 

 

From the output, we can see that both links (enp0s3 y enp0s8) are up and that the active link is enp0s8.

Step 3: Testing Network Teaming Redundancy

To test our active-backup teaming mode, we will disconnect the currently active link – enp0s3 – and check whether the other link kicks in.

$ nmcli device disconnect enp0s3
$ sudo teamdctl team0 state

 

 

When you check the status of the teaming interface, you’ll find that the link enp0s8 has kicked in and serving connections to the server. This confirms that our setup is working!

Step 4: Deleting a Network Teaming Interface

If you wish to delete the teaming interface/link and revert to default network settings, first bring down the teaming link:

$ nmcli connection down team0

Next, delete the slaves.

$ nmcli connection delete team0-slave0 team0-slave1

Finally, delete the teaming interface.

$ nmcli connection delete team0

 

 

 

At this point, all the interfaces are down and your server is not reachable. To activate your network interfaces and regain connectivity, run the commands.

$ sudo ifconfig enp0s3 up
$ sudo ifconfig enp0s8 up
$ sudo systemctl restart NetworkManager

Link: https://www.tecmint.com/create-nic-channel-bonding-in-redhat-centos-fedora/