NetworkManager
| Company type | Software |
|---|---|
| Industry | Network management software |
| Founded | 2004 |
| Founder | Red Hat |
Area served | Linux platforms |
| Products | NetworkManager daemon, nm-applet, plasma-nm, nmcli, nmtui, cnetworkmanager |
| Website | networkmanager |
NetworkManager operates as a daemon leveraging libudev alongside other Linux kernel interfaces, delivering an advanced abstraction layer for managing network interfaces.
Purpose
NetworkManager enhances network administration on Linux platforms by facilitating seamless connectivity across a variety of settings.
Operational Overview
Devices connect through multiple protocols including IEEE 802.3 (Ethernet), IEEE 802.11 (Wi-Fi), IEEE 802.15.1 (Bluetooth), PPPoE, and PPPoA. Successful connections depend on correctly configured hardware such as network cards or wireless adapters.
In systems with monolithic kernels, integrated device drivers allow configuration tools to interact directly with hardware, enabling applications like web browsers, SSH clients, and NTP services to transmit and receive data packets.
Network Interface Setup Without NetworkManager
On Linux and similar Unix-like operating systems, tools such as ifconfig and the more modern ip command (part of the iproute2 suite) configure IEEE 802.3 and IEEE 802.11 devices by directly modifying kernel parameters, with immediate effect. These configurations must be reapplied after reboot unless maintained by init systems: System V init executes scripts and binaries, whereas systemd utilizes its own configuration files. Interface settings are stored in /etc/network/interfaces for Debian-based distributions or within /etc/sysconfig/network-scripts/ifcfg-* files for Fedora and related distros; DNS information is kept in /etc/resolv.conf. These files support static IP definitions or dynamic addressing via dhclient, and can be configured for various VPN solutions.
For automatic reconfiguration, the DHCP assigns network parameters without user involvement.
Network Interface Setup Using NetworkManager
- NetworkManager interfaces through D-Bus.
- Its configuration is located at
/etc/NetworkManager/NetworkManager.conf
With the transition from stationary servers to mobile devices frequently changing networks, obtaining network configurations dynamically after system startup has become the norm. Earlier protocols like Bootp have been superseded by DHCP, which is widely adopted today. Simple networks function well with programs such as dhclient, but more intricate environments benefit from a centralized management system like NetworkManager.
Architecture of the Software
NetworkManager comprises:
- the NetworkManager daemon responsible for connection lifecycle management and network status reporting
- user interfaces including graphical front-ends and command-line utilities
Graphical and Command-Line Interfaces
- nm‑applet
- A GTK 3-based graphical interface running in the system tray, nm‑applet is maintained by GNOME and compatible with any desktop environment supporting the system tray protocol (excluding GNOME Shell, which employs its own solution).
- plasma‑nm
- KDE Plasma 6 provides plasma‑nm, a dedicated applet for managing NetworkManager connections; however, it is not included by default.
- nmcli
- Introduced in 2010, nmcli serves as NetworkManager’s built-in command-line tool for displaying status, managing connections, and monitoring network activity.
- nmtui
- nmtui offers a simple text-mode interface enabling users to add, modify, activate or deactivate connections, configure hostnames, and toggle radios. It does not support wired interfaces, WPA-Enterprise, or VPN configurations but can handle pre-existing connection profiles.
- cnetworkmanager
- cnetworkmanager is a Python-based CLI developed by Martin Vidner for NetworkManager management; its development ended after the last commit in August 2010 with version 0.21.1 released in August 2009.
Support for Mobile Broadband
NetworkManager works in conjunction with ModemManager and Paul's PPP Package to enable WWAN and mobile broadband connectivity.
In April 2008, Antti Kaijanmäki introduced a mobile broadband setup assistant for NetworkManager, with the corresponding enhancements incorporated into version 0.7.1.
Background
Introduced by Red Hat in 2004, NetworkManager was designed to streamline networking on Linux systems, with an emphasis on wireless connections. It gives priority to Ethernet connections over recognized wireless networks, which themselves take precedence over unknown SSIDs, requesting WEP or WPA keys from users when necessary.
NetworkManager was among the first projects to utilize D-Bus and HAL; however, since June 2009 it has ceased relying on HAL, and starting from version 0.9.10 (around 2014), it no longer requires the D-Bus daemon to operate with root privileges.
See also
- Linux on the desktop
- BlueZ
- GNOME Keyring Manager
- usbserial
- Wicd – network management tool developed in Python
- wpa_supplicant
- wvdial
- netifd – minimalist daemon tailored for embedded systems; operates without dependencies on D-Bus or GLib
- ConnMan – connection manager designed for embedded environments
External links
- Official NetworkManager Website
- Database of Service Providers
- NetworkManager at freedesktop.org
- Discussion on NetworkManager status in freebsd-gnome mailing list
- Archived original NetworkManager page from redhat.com via Wayback Machine
- Announcement of NetworkManager’s initial public release
- Guide to using WiFi with NetworkManager
- Arch Wiki entry for NetworkManager