Updated: 30 September 2026 · Applies to: NetworkManager 1.54 and 1.56 on AlmaLinux and Rocky Linux 9 and 10 and RHEL 9 and 10; netplan 1.1 on Ubuntu 24.04 and 26.04

ethtool changes network card settings such as offloading features, speed and duplex, but those changes are lost at the next reboot. On CentOS 6 and 7 (both end of life) you added ETHTOOL_OPTS to an ifcfg file. Current releases use NetworkManager or netplan instead, which can store these settings in the connection itself. We generated the configurations below with NetworkManager 1.56 (AlmaLinux 10) and netplan 1.1 (Ubuntu 24.04).

1. Test the setting first

ethtool -k eth0 | grep -E 'tcp-segmentation|generic-receive'   # current offload settings
ethtool -K eth0 tso off gro off                                 # change them until the next reboot
ethtool eth0                                                    # speed, duplex, auto-negotiation

Only make a setting permanent after you have confirmed that it helps.

2a. AlmaLinux, Rocky Linux and RHEL (NetworkManager)

Find the connection name with nmcli connection show, then set the features on it:

nmcli connection modify eth0 ethtool.feature-tso off ethtool.feature-gro off
nmcli connection up eth0

Speed and duplex are ethernet properties of the connection. Fixed values need auto-negotiation turned off, which the switch port must match:

nmcli connection modify eth0 802-3-ethernet.auto-negotiate no 802-3-ethernet.speed 1000 802-3-ethernet.duplex full

Check the stored settings with nmcli connection show eth0 | grep -E 'ethtool|802-3-ethernet'. Other feature names follow the same pattern: ethtool.feature-rx, ethtool.feature-tx, ethtool.feature-gso and so on.

2b. Ubuntu (netplan)

Netplan supports the common offload settings directly. In your file in /etc/netplan/:

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: true
      tcp-segmentation-offload: false
      generic-receive-offload: false
netplan try

For settings netplan does not cover, such as fixed speed and duplex, run ethtool from a small systemd service at boot:

[Unit]
Description=ethtool settings for eth0
After=network-pre.target
Before=network.target

[Service]
Type=oneshot
ExecStart=/usr/sbin/ethtool -s eth0 speed 1000 duplex full autoneg off

[Install]
WantedBy=multi-user.target

Save it as /etc/systemd/system/ethtool-eth0.service and enable it with systemctl enable ethtool-eth0.service.

Be careful

  • A wrong speed or duplex setting can cut the server off the network. Test from the console, not over SSH alone.
  • On virtual servers, many ethtool settings are not supported by the virtual network card and return "Operation not supported".

Official documentation: NetworkManager settings reference and netplan YAML reference.

Related services

KVM VPS hosting

NVMe SSD and full root access, with Free Basic Managed Support.

Unmanaged dedicated servers

full root access and free IPMI KVM, with Free Basic Managed Support.

Linux server management

hardening, patching, monitoring and automation for Ubuntu, Debian, RHEL and AlmaLinux.

Was this answer helpful?

Still stuck? Open a ticket