From Fedora Project Wiki

NetworkManager

NetworkManager is the primary network configuration service for Networking in Fedora. Most of the information you might be interested in is in the Networking page or its subpages.

Current versions
This page tracks NetworkManager 1.58 as shipped in Fedora Linux 44. For authoritative, continuously updated documentation, see the upstream project at networkmanager.dev and the manual pages (man nmcli, man nmtui, man NetworkManager.conf, man nm-settings-keyfile).

Desktops and laptops

NetworkManager provides automatic network detection and configuration for the system. Once enabled, the NetworkManager service also monitors the network interfaces, and may automatically switch to the best connection at any given time. Applications that include NetworkManager support may automatically switch between on-line and off-line modes when the system gains or loses network connectivity. These facilities are most useful for modern laptops, where the user may move between wireless networks, and plug in to a variety of wired networks, but NetworkManager also provides features that are relevant to workstations and servers. Current versions support Ethernet, Wi-Fi (including WPA3 and 6 GHz), mobile broadband, VPNs, WireGuard, and a wide range of software and tunnel devices. NetworkManager requires Fedora to have drivers for the wired and wireless interfaces on the computer. Many manufacturers of modems and wireless devices provide limited support for Linux. You may need to install additional drivers or firmware on your Fedora system in order to activate these interfaces.

Drivers first
NetworkManager may only work with network interfaces once the relevant drivers are correctly installed on your system. Reboot your system after installing a new firmware or a new driver in order to ensure that the changes take effect.

Servers

Fedora relies on NetworkManager for network configuration by default. This is the case also for minimal installations and server installations. For declarative, automation-friendly configuration (for example with Ansible), the Nmstate project (nmstate / nmstatectl) provides a YAML-based interface on top of NetworkManager.

Bug reports and feature requests for NetworkManager itself go to the upstream GitLab issue tracker. Issues related to interoperability with the rest of the Fedora system should be filed against the appropriate package in Red Hat Bugzilla (product Fedora).

Managing connections

NetworkManager stores each network configuration as a connection profile. Several tools can create and activate profiles:

  • nmcli – the primary command-line tool; exposes the full feature set of the daemon.
  • nmtui – a curses text interface (package NetworkManager-tui), useful over SSH or without a desktop. Version 1.58 added device selection when creating profiles, /-style search of the connection list, on-demand Wi-Fi rescan, a "Show password" option, and a "Share QR…" action for Wi-Fi networks.
  • Graphical toolsnm-connection-editor and the GNOME Settings network panel (package network-manager-applet), or plasma-nm on KDE Plasma.

Common nmcli operations:

nmcli device status
nmcli connection show
nmcli device wifi connect SSID password PASSWORD
nmcli connection up "My Connection"

Configuration file formats

See Configuration for details. The default and recommended on-disk format is keyfile, stored under /etc/NetworkManager/system-connections/ (one INI-style file per profile). Keyfile has been the Fedora default since Fedora 33.

The older ifcfg-rh format (/etc/sysconfig/network-scripts/ifcfg-*) is deprecated. The NetworkManager-initscripts-ifcfg-rh plugin is no longer installed by default (since Fedora 36), and upstream has announced full removal of ifcfg support. New systems should use keyfile; existing ifcfg profiles can be converted with nmcli connection migrate. See Changes/MigrateIfcfgToKeyfile and Changes/RemoveIfcfgSupportInNM.

Daemon-wide settings live in /etc/NetworkManager/NetworkManager.conf and drop-in files under /etc/NetworkManager/conf.d/.

NetworkManager objectives

NetworkManager is a universal network configuration software used as a part of the base system on desktops, laptops and servers alike:

  • Provide core network configuration features
  • Expose the features through on-disk text-based configuration (keyfile)
  • Expose the features through a stable D-Bus API and the libnm library
  • Provide CLI (nmcli, nmtui) and GUI frontends, on top of which other frontends and tools (such as Nmstate) can be built

Features

Fully supported functionality includes:

  • Configuration using the keyfile format (the ifcfg-rh format is deprecated; other formats are used with other distributions)
  • CLI frontends (nmcli and nmtui)
  • GUI frontends
  • IPv4 and IPv6 support (static and automatic), including IPv6-only networks with CLAT/464XLAT
  • D-Bus interface
  • DNS handling via systemd-resolved (default) or a local caching nameserver (dnsmasq) for split-DNS
  • Ethernet connections (802.3)
  • Wi-Fi connections (802.11), including WPA2/WPA3, 802.1X enterprise, and 6 GHz (Wi-Fi 6E)
  • VPN plugins (OpenVPN, OpenConnect, WireGuard, L2TP, IPsec/strongSwan, and others) and native WireGuard support
  • Mobile broadband via USB or Bluetooth (through ModemManager)
  • Software devices: bonds, teams, bridges, VLANs, MACVLAN, and tunnels including GRE, VXLAN and GENEVE
  • Persistent per-device managed/unmanaged state across reboots
  • Dispatcher scripts in /etc/NetworkManager/dispatcher.d/ for hooking network events

What's new in 1.58

Highlights of the current stable series (see the upstream release notes for the full list):

  • CLAT (464XLAT) support, letting hosts on IPv6-only networks reach IPv4 destinations
  • GENEVE tunnel interface support
  • Wi-Fi: the band property now accepts 6GHz, plus band display in scan results and powersave support for the iwd backend
  • Numerous nmtui usability improvements
  • Persistent device managed state across reboots
  • Removal of the external ISC dhclient DHCP backend (NetworkManager uses its own internal DHCP client; ISC dhclient is end-of-life upstream); Wireless Extensions support is now deprecated and disabled by default
  • Security hardening, including a fix for CVE-2026-10805 (hostname/MUD URL validation) and an out-of-bounds read fix in the DHCPv4 client

Feature requests and issue tracking

Historically many feature requests were tracked in the GNOME Bugzilla, which has since been retired. A number of the frequently requested capabilities are now implemented, including connection priorities and autoconnect ordering (connection.autoconnect-priority), automatically bringing up a VPN with a physical connection (connection.secondaries), captive-portal / connectivity detection, simultaneous VPN connections, IPv6 connection sharing, and import of several VPN configuration formats.

New feature requests and bug reports should be filed at the NetworkManager GitLab tracker.

Further Information

Troubleshooting

Inspecting logs

journalctl -u NetworkManager -b        # NetworkManager log for this boot
nmcli general logging                    # show current log level
nmcli general logging level DEBUG        # raise verbosity temporarily

Temporarily stopping NetworkManager

systemd will restart the service unless it is masked:

sudo systemctl stop NetworkManager
sudo systemctl mask NetworkManager       # prevent restart until unmasked
sudo systemctl unmask NetworkManager     # re-enable

Imported ovpn file does not work

When you add your VPN connection (for OpenVPN for example) by using Import from file… (with an ovpn file created by a pfSense OpenVPN server instance, for example) at Settings -> Network -> VPN -> +, Tools/NetworkManager is used to handle that connection for you. If this does not work as expected, as an alternative you can try the pure client (for OpenVPN).

Connect to your VPN (OpenVPN) by running openvpn with your server-created client config file (ovpn file format).

In the example we are using a file pfSense-UDP-1194-admin-config.ovpn that was downloaded to the Downloads folder of your home directory. It was created on a pfSense system to connect to the OpenVPN server running there (using the OpenVPN defaults: protocol UDP, port 1194, and the pfSense default user admin).

sudo openvpn ~/Downloads/pfSense-UDP-1194-admin-config.ovpn