Zend certified PHP/Magento developer

Troubleshooting a Network Bond in Centos8

I’m working on a VM managed through VSphere running a minimal install of Centos 8.

The VM has three NICs. One of them is up and running on a separate network–a backdoor into the VM, as it were, because it’s easer to work ssh’d into the VM than through VSphere’s webconsole. I’m trying to get the other two NICs set up as a working bond. This is my first time doing this, so I’ve been following Redhat’s documentation. I’ve been asked to provide ‘clean’ files for the NICs that are slaved to the bond–the scare quotes indicate that I’m not entirely sure what a ‘clean’ file looks like. On my first attempt, I started with two completed ifcfg files and then modified those connections to be slaves to the bond. The bond worked, but I was told that there was a lot of unnecessary clutter in the slave files that I needed to deal with.

So, I deleted everything and used the NMCLI command to recreate the connections (ENS160 and ENS192 respectively) and the bond. However, now I can’t get the bond working. I’ve completely configured the ifcfg file for the bond and it is identical (except the UUID, I think) to the previous iteration when it was working.

BONDING_OPTS=mode=active-backup
TYPE=Bond
BONDING_MASTER=yes
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ionicbond
UUID=9a0862b2-007d-49d8-9580-57ef959bcf7b
DEVICE=bond0
ONBOOT=yes
IPADDR=216.128.202.80
PREFIX=26
GATEWAY=216.128.202.65
DNS1=216.128.200.2
DNS2=216.128.200.3

For the NICS, NMCLI created ifcfg files with the following content:

TYPE=Ethernet
NAME=slave-ens160
UUID=ad830e29-bd72-4283-ae73-59fb91680525
DEVICE=ens160
ONBOOT=yes
MASTER=bond0
SLAVE=yes

I’ve tried play around with this to see what I can get working and what I can’t. If I cut/paste the lines (excluding TYPE, NAME, UUID, DEVICE, BONDING MASTER, and BONDING_OPTS from the bond ifcfg file into the ens160 ifcfg file, remove the MASTER and SLAVE lines and restart the VM then I can ping the IP from my laptop. If I then copy/paste the same lines from the ens160 ifcfg file back to the bond ifcfg file and restart the VM then I can ping anything within my subnet, including my gateway, but can’t ping anything past the gateway. If I then delete those lines from the ens160 ifcfg file, I can still ping the gateway, but again, nothing outside of the gateway. However, from my laptop I can ping anything else inside the subnet–so I’m inclined to think that it’s a problem with my VM rather than a problem with the gateway itself.

I’m fairly new to networking. So, I have at least three central questions (probably more that I haven’t considered yet):

I’m pretty sure that the ability to ping the gateway, but not beyond the gateway, is significant. However, I’m not completely sure of this, and if it is significant, what is it actually telling me?

What should a working slave file contain? Does it need IP, GATEWAY, and DNS?

Is there something wrong with my actual bond file, or should I be looking somewhere else?

For instance, when I look in the /proc/net/bonding/bond0 file, it also looks to me like the bond should be working.

Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: ens160
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Peer Notification Delay (ms): 0

Slave Interface: ens160
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:50:56:a0:78:d4
Slave queue ID: 0

Slave Interface: ens192
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:50:56:a0:7b:ad
Slave queue ID: 0

What are my next troubleshooting steps? Part of the problem I’m having is that I’ve run out of things that I know to do. So I need some ideas for where to look next.