To connect computers with each other, various
communications protocols have been developed, e.g.
IEEE 802.3 (Ethernet),
IEEE 802.11 ("wireless"),
IEEE 802.15.1 (Bluetooth),
PPPoE,
PPPoA, etc. Each participating computer must have the suitable hardware, e.g.
network card or
wireless network card and this hardware must be configured accordingly to be able to establish a connection. In case of a monolithic kernel all the device drivers are part of it. The hardware is accessed (and also configured) through its device driver by the configuration utility to configure the hardware, and programs like the
web browser/
SSH/
NTP-client/etc. to send and receive network packets.
Configuration of network interfaces without NetworkManager On Linux and all Unix-like operating systems, the utilities
ifconfig and the newer ip (from the
iproute2-bundle) are used to configure
IEEE 802.3 and
IEEE 802.11 hardware. These utilities configure the kernel directly and the configuration is applied immediately. After boot-up, the user is required to configure them again. To apply the same static configuration after each boot-up, the PID1-programs are used:
System V init executes
shell scripts and binary programs,
systemd parses its own conf-files (and executes programs). The boot-up configuration for network interfaces is stored in /etc/network/interfaces for Debian Linux distributions and its derivatives or ifcfg files in /etc/sysconfig/network-scripts/ for
Fedora and its derivatives, and
DNS-servers in /etc/resolv.conf. /etc/network/interfaces or /etc/sysconfig/network-scripts/ifcfg-* can define a static IP-address or dhclient to be used, and all kinds of
VPN can be configured here as well. In case the configuration has to be changed,
DHCP-protocol goes a long way to do so automatically, without the user even noticing.
Configuration of network interfaces with NetworkManager • NetworkManager is accessible via
D-Bus. • Configuration is stored in /etc/NetworkManager/NetworkManager.conf But as we've transitioned from physically large servers to more portable hosts that may be plugged and unplugged (or moved from WiFi hotspot to WiFi hotspot) at the user's discretion, dynamic configurations (i.e., not stored in a static configuration file but taken from outside the host, and potentially changing after boot) have become a more prevalent configuration.
Bootp was an early protocol used for this, and to this day its descendant
DHCP is still very common. Many Unix-like systems include a program called
dhclient to handle this dynamic configuration. Given a relatively static or simple dynamic configuration, static configuration modified by
dhclient works well. However, as networks and their topologies get more complex, a central manager for all the network configuration information becomes more essential.
Software architecture NetworkManager has two components: • the NetworkManager
daemon, the actual software which manages connections and reports network changes • the
graphical or
command-line interface Graphical front-ends and command line interfaces File:Network Manager 0.9.5.png|nm-applet 0.9.5 in Ubuntu 12.04's systray, showing all available
APs. File:GNOME Shell NM front-end 3.10.png|Graphical front-end for
GNOME Shell 3.10. ;nm‑applet :nm‑applet is a
GTK 3-based GUI for NetworkManager which runs in the system tray. The applet is maintained by the GNOME project, and can be used with any desktop environment which implements the (this excludes the
GNOME Shell, which has its own built-in implementation). ;plasma‑nm :
KDE Plasma 6 has its own applet for configuring connections through NetworkManager, plasma‑nm. The applet is not included in Plasma 6 by default. ;nmcli :nmcli is NetworkManager's built-in
command-line interface added in 2010. nmcli allows easy display of NetworkManager's current status, manage connections and devices, monitor connections. ;nmtui :nmtui is the built-in
text-based user interface for NetworkManager. It is basic when compared to nmcli, as it only allows users to add, edit, activate and deactivate connections; set the hostname of the system; and enable and disable radios. It does not allow for the setup of wired connections,
WPA-Enterprise, or
VPNs; preconfigured connections can be used. ;cnetworkmanager :cnetworkmanager is a
Python-based CLI for NetworkManager, written by Martin Vidner. The project's last commit was in August 2010; its final version (0.21.1) was released in August 2009.
Mobile broadband support NetworkManager is used in conjunction with ModemManager and Paul's PPP Package for
WWAN/
mobile broadband support. Antti Kaijanmäki announced the development of a mobile broadband configuration assistant for NetworkManager in April 2008; the required changes were made to NetworkManager in 0.7.1. ==History==