Configuring networks using NetworkManager
- WHAT?
The article covers the basics of NetworkManager and the usage of the CLI tool to configure the network.
- WHY?
You are using NetworkManager, and you want to configure your network.
- EFFORT
It takes approx. 15 minutes to go through this article.
- GOAL
You will have a better understanding of how NetworkManager works and how network connections can be configured.
1 About NetworkManager #
NetworkManager is a program that manages the primary network connection and other
connection interfaces. NetworkManager has been designed to be fully automatic by
default. NetworkManager is handled by systemd and is shipped with all necessary
service unit files.
NetworkManager stores all network configurations as a connection, which is a
collection of data that describes how to create or connect to a network.
These connections are stored as files in the
/etc/NetworkManager/system-connections/ directory.
A connection is active when a particular device uses the connection. The device may have more than one connection configured, but only one can be active at a given time. The other connections can be used to fast switch from one connection to another. For example, if the active connection is not available, NetworkManager tries to connect the device to another configured connection.
To manage connections, use the nmcli command, described
in the Section 4, “Managing the network using NetworkManager”.
2 The NetworkManager.conf configuration file #
The main configuration file for the NetworkManager is
/etc/NetworkManager/NetworkManager.conf. This file can
be used to configure the behavior of NetworkManager.
The file consists of sections of key-value pairs. Each key-value pair must
belong to a section. A section starts with a name enclosed in
[]. Lines beginning with a # are
considered comments. The minimal configuration needs to include the
[main] section with the plugins
value:
[main] plugins=keyfile
The keyfile plug-in supports all the connection types and
capabilities of NetworkManager.
The default configuration file contains the connectivity
section that specifies the URI to check the network connection.
On SUSE Linux Enterprise Micro, you can also use other sections. For details, refer to networkmanager.conf(5).
3 Starting and stopping NetworkManager #
As NetworkManager is a systemd service, you can use common systemd commands to
start, stop, or restart NetworkManager.
To start NetworkManager:
# systemctl start networkTo restart NetworkManager:
# systemctl restart networkTo stop NetworkManager:
# systemctl stop network4 Managing the network using NetworkManager #
4.1 The nmcli command #
NetworkManager provides a CLI interface to manage your connections. By using the
nmcli interface, you can connect to a particular
network, edit a connection, edit a device, etc. The generic syntax of the
nmcli is as follows:
# nmcli OPTIONS SUBCOMMAND SUBCOMMAND_ARGUMENTS
where OPTIONS are described in
Section 4.1.1, “The nmcli command options” and
SUBCOMMAND can be any of the following:
connectionenables you to configure your network connection. For details, refer to Section 4.1.2, “The
connectionsubcommand”.deviceFor details, refer to Section 4.1.3, “The
devicesubcommand”.generalshows status and permissions. For details refer to Section 4.1.4, “The
generalsubcommand”.monitormonitors activity of NetworkManager and watches for changes in the state of connectivity and devices. This subcommand does not take any arguments.
networkingqueries the networking status. For details, refer to Section 4.1.5, “The
networkingsubcommand”.
4.1.1 The nmcli command options #
Besides the subcommands and their arguments, the
nmcli command can take the following options:
-a|--askThe command stops its run to ask for any missing arguments, for example, for a password to connect to a network.
-c|--color {yes|no|auto}controls the color output:
yesto enable the colors,noto disable them, andautocreates color output only when the standard output is directed to a terminal.-m|--mode {tabular|multiline}switches between
tabular(each line describes a single entry, columns define particular properties of the entry) andmultiline(each entry comprises more lines, each property is on its own line).tabularis the default value.-h|--helpprints help.
-w|--wait secondssets a time-out period for which to wait for NetworkManager to finish operations. Using this option is recommended for commands that might take longer to complete, for example, connection activation.
4.1.2 The connection subcommand #
The connection command enables you to manage
connections or view any information about particular connections. The
nmcli connection provides the following commands to
manage your network connections:
showto list connections:
#nmcli connection showYou can also use this command to show details about a specified connection:
#nmcli connection show CONNECTION_IDwhere CONNECTION_ID is any of the identifiers: a connection name, UUID or a path
upto activate the provided connection. Use the command to reload a connection. Also run this command after you perform any change to the connection.
#nmcli connection up [--active] [CONNECTION_ID]When
--activeis specified, only the active profiles are displayed. The default is to display both active connections and static configuration.downto deactivate a connection.
#nmcli connection down CONNECTION_IDwhere: CONNECTION_ID is any of the identifiers: a connection name, UUID or a path
If you deactivate the connection, it will not reconnect later even if it has the
autoconnectflag.modifyto change or delete a property of a connection.
#nmcli connection modify CONNECTION_ID SETTING.PROPERTY PROPERTY_VALUEwhere:
CONNECTION_ID is any of the identifiers: a connection name, UUID, or a path
SETTING.PROPERTY is the name of the property, for example,
ipv4.addressesPROPERTY_VALUE is the desired value of SETTING.PROPERTY
The following example deactivates the
autoconnectoption on theethernet1connection:#nmcli connection modify ethernet1 connection.autoconnect noaddto add a connection with the provided details. The command syntax is similar to the
modifycommand:#nmcli connection add CONNECTION_ID save YES|NO SETTING.PROPERTY PROPERTY_VALUEYou should at least specify a
connection.typeor usetype. The following example adds an Ethernet connection tied to theeth0interface with DHCP, and disables the connection'sautoconnectflag:#nmcli connection add type ethernet autoconnect no ifname eth0editto edit an existing connection using an interactive editor.
#nmcli connection edit CONNECTION_IDcloneto clone an existing connection. The minimal syntax follows:
#nmcli connection clone CONNECTION_ID NEW_NAMEwhere CONNECTION_ID is the connection to be cloned.
deleteto delete an existing connection:
#nmcli connection delete CONNECTION_IDmonitorto monitor the provided connection. Each time the connection changes, NetworkManager prints a line.
#nmcli connection monitor CONNECTION_IDreloadto reload all connection files from the disk. As NetworkManager does not monitor changes performed to the connection files, you need to use this command whenever you make changes to the files. This command does not take any further subcommands.
loadto load/reload a particular connection file, run:
#nmcli connection load CONNECTION_FILE
For details about the above-mentioned commands, refer to the
nmcli
documentation.
4.1.3 The device subcommand #
The device subcommand enables you to show and manage
network interfaces. The nmcli device command
recognizes the following commands:
statusto print the status of all devices.
#nmcli device statusshowshows detailed information about a device. If no device is specified, all devices are displayed.
#mcli device show [DEVICE_NAME]connectto connect a device. NetworkManager tries to find a suitable connection that will be activated. If there is no compatible connection, a new profile is created.
#nmcli device connect DEVICE_NAMEmodifyperforms temporary changes to the configuration that is active on the particular device. The changes are not stored in the connection profile.
#nmcli device modify DEVICE_NAME [+|-] SETTING.PROPERTY VALUEFor possible SETTING.PROPERTY values, refer to nm-settings-nmcli(5).
The example below starts the IPv4 shared connection sharing on the device
con1.#nmcli dev modify con1 ipv4.method shareddisconnectdisconnects a device and prevents the device from automatically activating further connections without manual intervention.
#nmcli device disconnect DEVICE_NAMEdeleteto delete the interface from the system. You can use the command to delete only software devices like bonds and bridges. You cannot delete hardware devices with this command.
#nmcli device DEVICE_NAMEwifilists all available access points.
#nmcli device wifiwifi connectconnects to a Wi-Fi network specified by its SSID or BSSID. The command takes the following options:
password- password for secured networksifname- interface used for activationname- you can give the connection a name
#nmcli device wifi connect SSID [password PASSWORD_VALUE] [ifname INTERFACE_NAME]To connect to a Wi-Fi GUESTWiFi with a password
pass$word2#@@, run:#nmcli device wifi connect GUESTWiFi password pass$word2#@@
4.1.4 The general subcommand #
You can use this command to view NetworkManager status and permissions, and
change the host name and logging level. The nmcli
general recognizes the following commands:
statusdisplays the overall status of NetworkManager. Whenever you do not specify a command to the
nmcli generalcommand, status is used by default.#nmcli general statushostnameif you do not provide a new host name as an argument, the current host name is displayed. If you specify a new host name, the value is used to set a new host name.
#nmcli general hostname [HOSTNAME]For example, to set
MyHostname, run:#nmcli general hostname MyHostnamepermissionsshows your permission for NetworkManager operations like enabling or disabling networking, modifying connections, etc.
#nmcli general permissionsloggingshows and changes NetworkManager logging levels and domains. Without any arguments, the command displays current logging levels and domains.
#nmcli general logging [level LEVEL domains DOMAIN]LEVEL is any of the values:
OFF,ERR,WARN,INFO,DEBUG, orTRACE.DOMAIN is a list of values that can be as follows:
PLATFORM, RFKILL, ETHER, WIFI, BT, MB, DHCP4, DHCP6, PPP, WIFI_SCAN, IP4, IP6, AUTOIP4, DNS, VPN, SHARING, SUPPLICANT, AGENTS, SETTINGS, SUSPEND, CORE, DEVICE, OLPC, WIMAX, INFINIBAND, FIREWALL, ADSL, BOND, VLAN, BRIDGE, DBUS_PROPS, TEAM, CONCHECK, DCB, DISPATCH, AUDIT, SYSTEMD, VPN_PLUGIN, PROXY.
4.1.5 The networking subcommand #
The subcommand enables you to query the status of the network. Also, by
using this command, you can enable or disable networking. The
nmcli networking command takes the following
commands:
on/offenables or disables networking. The
offcommand deactivates all interfaces managed by NetworkManager.#nmcli networking on- connectivity
displays the network connectivity state. If
checkis used, NetworkManager performs a new check of the state. Otherwise, the last detected state is displayed.#nmcli networking connectivityPossible states are the following:
none - the host is not connected to any network.
portal - the host is behind a captive portal and cannot reach the full Internet.
limited - the host is connected to a network, but it has no access to the Internet.
full - the host is connected to a network and has full access to the Internet.
unknown - NetworkManager could not determine the network state.
5 Legal Notice #
Copyright© 2006–2025 SUSE LLC and contributors. All rights reserved.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or (at your option) version 1.3; with the Invariant Section being this copyright notice and license. A copy of the license version 1.2 is included in the section entitled “GNU Free Documentation License”.
For SUSE trademarks, see https://www.suse.com/company/legal/. All other third-party trademarks are the property of their respective owners. Trademark symbols (®, ™ etc.) denote trademarks of SUSE and its affiliates. Asterisks (*) denote third-party trademarks.
All information found in this book has been compiled with utmost attention to detail. However, this does not guarantee complete accuracy. Neither SUSE LLC, its affiliates, the authors, nor the translators shall be held liable for possible errors or the consequences thereof.