If you recently upgraded to RHEL 10, Rocky Linux 10, or AlmaLinux 10 and your scripts are failing with “ifup: command not found” or “ifdown: command not found”, you are not dealing with a broken installation. These commands have been deliberately removed. The traditional network-scripts package that provided ifup and ifdown has been deprecated since RHEL 8 and is fully gone in RHEL 10 and its downstream rebuilds.

This guide explains what replaced them, how to accomplish the same tasks with NetworkManager tools, and how networking works on Ubuntu systems using Netplan for anyone managing mixed environments.

Why ifup and ifdown Were Removed

The ifup and ifdown commands came from the network-scripts package (also known as the “legacy network service”). This package used shell scripts in /etc/sysconfig/network-scripts/ to manage interfaces. It worked fine for static server configurations, but it had no support for modern requirements like Wi-Fi management, VPN integration, connection priorities, or dynamic interface handling.

NetworkManager has been the default network management daemon on RHEL-based systems since RHEL 7. Starting with RHEL 10, the legacy package is no longer available at all – not even as an optional install. All network management goes through NetworkManager, and the primary CLI tool is nmcli.

The nmcli Equivalents for ifup and ifdown

Here is what to use instead. Every example assumes NetworkManager is running, which it is by default on RHEL 10, Rocky 10, and AlmaLinux 10.

Bring an Interface Up

The old way:

sudo ifup eth0

The NetworkManager way:

sudo nmcli connection up eth0

Verify it is active:

nmcli connection show --active

Bring an Interface Down

The old way:

sudo ifdown eth0

The NetworkManager way:

sudo nmcli connection down eth0

Verify it went down:

nmcli device status

Restart All Networking

The old way:

sudo systemctl restart network

The NetworkManager way:

sudo systemctl restart NetworkManager

Verify the service is running:

systemctl status NetworkManager

Creating Connection Profiles with nmcli

In the old model, you would create a file like /etc/sysconfig/network-scripts/ifcfg-eth0. With NetworkManager, you create connection profiles using nmcli.

Static IP Configuration

sudo nmcli connection add \
  con-name "static-eth0" \
  type ethernet \
  ifname eth0 \
  ipv4.addresses 192.168.1.50/24 \
  ipv4.gateway 192.168.1.1 \
  ipv4.dns "8.8.8.8,8.8.4.4" \
  ipv4.method manual \
  autoconnect yes

Activate the profile:

sudo nmcli connection up static-eth0

Verify the IP was assigned:

ip addr show eth0

DHCP Configuration

sudo nmcli connection add \
  con-name "dhcp-eth0" \
  type ethernet \
  ifname eth0 \
  ipv4.method auto \
  autoconnect yes

Activate and verify:

sudo nmcli connection up dhcp-eth0
ip addr show eth0

Modifying an Existing Connection

Change the DNS servers on an existing profile:

sudo nmcli connection modify static-eth0 ipv4.dns "1.1.1.1,9.9.9.9"
sudo nmcli connection up static-eth0

Add a secondary IP address:

sudo nmcli connection modify static-eth0 +ipv4.addresses 192.168.1.51/24
sudo nmcli connection up static-eth0

Verify the changes:

nmcli connection show static-eth0 | grep ipv4

Listing and Deleting Profiles

# List all connection profiles
nmcli connection show

# Delete a profile you no longer need
sudo nmcli connection delete dhcp-eth0

Using nmtui for Interactive Configuration

If you prefer a text-based menu interface over typing nmcli commands, use nmtui. It provides a curses-based interface for editing connections, activating or deactivating them, and setting the hostname.

sudo nmtui

Navigate with arrow keys and Tab. Select “Edit a connection” to modify interface settings, or “Activate a connection” to bring interfaces up or down. This is especially handy when working over a console where you need to reconfigure the network interface you are connected through – nmtui applies changes atomically, reducing the chance of locking yourself out.

Updating Legacy Scripts

If you have automation scripts that call ifup or ifdown, replace those calls with nmcli equivalents. Here is a quick mapping:

Legacy CommandNetworkManager Equivalent
ifup eth0nmcli connection up eth0
ifdown eth0nmcli connection down eth0
ifconfig eth0ip addr show eth0
service network restartsystemctl restart NetworkManager
route -nip route show

For Ansible playbooks, switch from the old service module targeting the network service to the nmcli module or community.general.nmcli collection. This gives you declarative control over connection profiles.

Networking on Ubuntu – Netplan and NetworkManager

If you manage Ubuntu servers alongside RHEL-family systems, the networking model is different. Ubuntu 24.04 uses Netplan as a configuration abstraction layer. Netplan reads YAML files from /etc/netplan/ and renders them into configuration for either NetworkManager or systemd-networkd, depending on the backend.

A basic static IP configuration in Netplan:

# /etc/netplan/01-static.yaml
network:
  version: 2
  renderer: NetworkManager
  ethernets:
    eth0:
      addresses:
        - 192.168.1.50/24
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
        addresses:
          - 8.8.8.8
          - 8.8.4.4

Apply the configuration:

sudo netplan apply

Verify:

ip addr show eth0
ip route show

On Ubuntu Desktop, the default backend is NetworkManager, so nmcli commands work exactly as described above. On Ubuntu Server, the default backend is systemd-networkd, and you manage everything through Netplan YAML files.

To test Netplan changes before committing them (useful on remote servers):

sudo netplan try

This applies the change temporarily and reverts it after 120 seconds unless you press Enter to confirm. This is a lifesaver when reconfiguring network settings over SSH.

Troubleshooting NetworkManager Issues

If nmcli commands are not working as expected, check these first:

# Is NetworkManager running?
systemctl status NetworkManager

# What does NM think about each device?
nmcli device status

# Show detailed connection info
nmcli -p connection show

# Check the journal for NM errors
journalctl -u NetworkManager --since "10 minutes ago" --no-pager

A common problem is interfaces showing as “unmanaged”. This happens when NetworkManager detects that another tool (like systemd-networkd or a leftover ifcfg script) is managing the device. Check /etc/NetworkManager/conf.d/ for any configuration overrides and remove stale ifcfg files from /etc/sysconfig/network-scripts/ if they exist from a previous OS version.

Summary

The removal of ifup and ifdown is not a loss of functionality – it is a consolidation. NetworkManager with nmcli provides everything the old network-scripts did, plus dynamic interface management, better integration with VPNs and wireless, and a consistent API for automation tools. Update your scripts and muscle memory to use nmcli connection up and nmcli connection down, and you will find the new workflow is actually more capable than what it replaced.

LEAVE A REPLY

Please enter your comment!
Please enter your name here