This is a draft document that was built and uploaded automatically. It may document beta software and be incomplete or even incorrect. Use this document at your own risk.

Jump to content
Setting Up and Managing Network Connections Using NetworkManager

Setting Up and Managing Network Connections Using NetworkManager

Publication Date: 15 May 2025
WHAT?

NetworkManager is a dynamic network control and configuration tool that enables you to keep network devices up and running.

WHY?

This article provides a complete overview of NetworkManager and how to configure, manage, monitor and edit network connections using NetworkManager.

EFFORT

It takes 15 minutes to install and configure NetworkManager. You need up to an hour to fully understand the NetworkManager concept and functionalities.

GOAL

Basic understanding of managing network connections.

REQUIREMENTS
  • Root access to install and manage NetworkManager

  • A package manager to install NetworkManager

1 The NetworkManager concept

NetworkManager is a tool that enables managing network connections and devices. NetworkManager allows you to create, configure and manage network connections and devices.

On SUSE Linux Enterprise Server, NetworkManager has been designed to be fully automatic by default. It is enabled by default and is shipped with all necessary service unit files for managing primary network connection and other network interfaces. NetworkManager supports state-of-the-art encryption types and standards for network connections, including connections to 802.1X protected networks. 802.1X is the IEEE Standard for Local and Metropolitan Area Networks—Port-Based Network Access Control.

You can switch between wired or wireless networks seamlessly, as NetworkManager automatically connects to known wireless networks and manages several network connections in parallel. You can also manually switch between available networks.

NetworkManager typically consists of the following parts:

  • NetworkManager daemon—you can interact with the daemon using standard systemd commands

  • the nmcli command-line interface

  • the ncurses interface nmtui

  • NetworkManager libraries

  • configuration files.

2 Installing and Configuring NetworkManager

On SUSE Linux Enterprise Server, NetworkManager is installed and enabled by default and thus runs out of the box. Usually, you do not have to reinstall it or change the configuration, but if such an action is needed, these sections provide guidance.

2.1 Installing NetworkManager

You can install NetworkManager using zypper. Once you install, you can enable NetworkManager to start automatically at boot time.

Install NetworkManager:

> sudo zypper install NetworkManager

Enable NetworkManager:

> sudo systemctl enable NetworkManager

Once NetworkManager is enabled, the change persists across reboots.

2.2 Configuring NetworkManager behavior

The behavior of NetworkManager is defined in its central configuration file /etc/NetworkManager/NetworkManager.conf.

It is the primary location for configuring behavior and settings of NetworkManager, including logging, connection management, and network device handling.

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. A common configuration includes the [main] section with the plugins value, [logging], and [connectivity]:

[main]1
plugins=keyfile2
dhcp=dhclient

[connectivity]3
uri=http://name.org

[logging]4
level=INFO
domains=ALL

1

Controls the general settings for NetworkManager.

2

Manages how the connection profiles are stored. The [keyfile] plug-in supports all the connection types and capabilities of NetworkManager.

3

Defines connection defaults and options and specifies the URI to check the network connection.

4

Manages the NetworkManager logging levels and domains.

Procedure 1: Configuring NetworkManager.conf

Ensure that you take a backup of the existing configuration file before modifying the file.

  1. Open the configuration file:

    > sudo vi /etc/NetworkManager/NetworkManager.conf
  2. Stop the NetworkManager service:

    > sudo systemctl stop network
  3. Modify the sections.

  4. Save the changes

  5. Start NetworkManager:

    > sudo systemctl start network
  6. View the existing configuration and settings:

    > sudo nmcli general show

3 Managing the NetworkManager daemon

The NetworkManager daemon is a standard systemd service so you can use the systemctl command to manage the daemon.

You can use any of the following commands to manage the NetworkManager daemon:

Checking status

To check if the NetworkManager daemon is running and thus the network should be active:

> systemctl status network
Restarting the daemon

For example, in cases of networking problem, you can try to restart the NetworkManager Daemon by using the following command:

> sudo systemctl restart network
Stopping the daemon

You can stop NetworkManager during network configuration changes or to switch to manual control. You can also stop the service for troubleshooting or debugging network issues. Stopping NetworkManager prevents it from automatically managing the interface or changing your manual configuration. You can also stop NetworkManager to manually address specific requirements for network interfaces.

To stop the NetworkManager daemon:

> sudo systemctl stop network
Starting the NetworkManager daemon

If you stopped the daemon, you need to start it again to manage all network connections:

> sudo systemctl start NetworkManager

4 Creating network connections

You can create a network connection profile using the nmcli command.

NetworkManager stores all network configurations as a connection profile, which is a collection of data that describes how to create or connect to a network. These connection profiles are stored as files in the /etc/NetworkManager/system-connections/ directory by default. Each network connection profile (Wi-Fi, Ethernet, VPN) is represented by a separate file in this directory.

A connection is an instance of a particular connection profile that is active when a particular device uses the connection. The device may have more than one connection profile configured. 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.

The NetworkManager daemon manages network connections. You can interact with it using a command-line interface: nmcli or ncurses interface: nmtui.

4.1 Creating an Ethernet connection

Configure the Ethernet connection using the nmcli command and proceed as follows:

  1. List available devices to get the exact device name:

    > nmcli device
  2. View the list of connections to make sure the profile name you want to use is not already taken:

    nmcli connection show

    The NetworkManager creates a profile for each Network Interface Controller (NIC). To connect the NIC to networks with different settings, you must create separate profiles for each network.

  3. Create a new connection profile:

    > sudo nmcli connection add con-name CONNECTION_NAME ifname DEVICE_NAME type ethernet
  4. View the existing network settings of the new connection profile:

    > nmcli connection show CONNECTION_NAME
  5. Configure the connection profile. The generic command syntax is the following:

    > sudo nmcli connection modify CONNECTION_NAME
      SETTING VALUE

    For example, automatic IP addresses assignment (DHCP or SLAAC) is enabled by default, and you may want to configure a static IP address:

    • for IPv4

      > sudo nmcli connection modify CONNECTION_NAME ipv4.method manual ipv4.addresses 192.0.2.1/24 ipv4.gateway 192.0.2.254 ipv4.dns 192.0.2.200 ipv4.dns-search example.com
    • for IPv6

      > sudo nmcli connection modify INTERNAL-LAN ipv6.method manual ipv6.addresses 2001:db8:1::fffe/64 ipv6.gateway 2001:db8:1::fffe ipv6.dns 2001:db8:1::ffbb ipv6.dns-search example.com
  6. Activate the profile:

    > sudo nmcli connection up CONNECTION_NAME
  7. Verify the configurations:

    1. Verify the IP settings of the NIC:

      > ip address show HOSTNAME
    2. Verify the default IPv4 gateway:

      > ip route show default
    3. Verify the default IPv6 gateway:

      > ip -6 route show default
    4. View the DNS settings:

      > cat /etc/resolv.conf

4.2 Creating a Wi-Fi connection profile

You can connect to a Wi-Fi using the nmcli command. The NetworkManager creates a new connection profile when you connect to a Wi-Fi for the first time. You can configure the profile after connecting to the Wi-Fi.

  1. Enable the Wi-Fi radio:

    > sudo nmcli radio wifi on
  2. View the list of available devices:

    > sudo nmcli device
  3. Connect to Wi-Fi:

    > sudo nmcli device wifi connect WI-FI_CONNECTION_NAME
         PASSWORD
  4. View the existing network settings of the new connection profile:

    > sudo nmcli connection show CONNECTION_NAME
  5. Configure the connection profile as needed, using the command:

    > sudo nmcli connection modify CONNECTION_NAME
      SETTING VALUE

    For example, to configure a static IPv4:

    > sudo nmcli connection modify WI-FI_CONNECTION_NAME ipv4.method manual ipv4.addresses IP_ADDRESS/SUBNET_MASK

    To configure a static IPv6 address

    > sudo nmcli connection modify WI-FI_CONNECTION_NAME ipv6.method manual ipv6.addresses IP_ADDRESS/SUBNET_MASK
  6. Restart the connection:

    > sudo nmcli connection up WI-FI_CONNECTION_NAME
  7. Verify the connection using the command: .

    > nmcli connection show --active

    The list of available active connections appears.

4.3 Creating a network bond

A network bond combines physical and virtual network interfaces and provides a logical interface. You can create network bonds on Ethernet devices, Virtual LANs, and so on.

You must have two or more physical or virtual networks installed on the server.

  • To use Ethernet devices for network bonding, you must install the physical or virtual Ethernet devices on the server.

  • When using network teams, bridges or VLAN devices as ports for a bond, you can create them either during the bond creation process or beforehand.

Procedure 2: Creating a network bond
  1. Create a bond interface:

    > sudo nmcli connection add type bond con-name NWBOND ifname NWBOND bond.options "mode=active-backup"

    A network bond, NETWORK_BOND that uses active-backup mode is created.

  2. View the list of network interfaces:

    > nmcli device status
    
        DEVICE         TYPE      STATE                   CONNECTION    
        wlan0          wifi      connected               Vision 
        virbr0         bridge    connected (externally)  virbr0        
        p2p-dev-wlan0  wifi-p2p  disconnected            --            
        eth0           ethernet  unavailable             --            
        lo             loopback  unmanaged               --

    The list of available network interfaces appears. You can also add devices that are not configured to the bond. In the given list, p2p-dev-wlan0 is not configured, while virbr0 is configured and has a connection profile.

  3. To configure p2p-dev-wlan0 as a port, create a connection profile:

    > sudo nmcli connection add type wifi-p2p slave-type bond con-name bond0-port1 ifname p2p-dev-wlan0 master bond0

    A new profile is created for p2p-dev-wlan0 and added to the bond0 connection. The name of the bond is bond0.

  4. To assign virbr0 to a bond:

    > sudo nmcli connection modify virbr0 master bond0

    The connection profile for virbr0 is added to the bond0 connection.

  5. Activate the connection:

    > sudo nmcli connection up virbr0
  6. Configure the IPv4 settings:

    • To use bond0 as a port for other devices:

      > sudo nmcli connection modify bond0 ipv4.method disabled
    • To use DHCP, no configuration is required.

    • To configure a static IPv4 address, network mask, default gateway and DNS server to the bond0 connection:

      > sudo nmcli connection modify bond0 ipv4.addresses '192.0.2.1/24' ipv4.gateway '192.0.2.254' ipv4.dns '192.0.2.253' ipv4.dns-search 'example.com' ipv4.method manual
  7. Configure the IPv6 settings:

    • To use this bond device as a port of other devices:

      > sudo nmcli connection modify bond0 ipv6.method disabled
    • To use stateless address autoconfiguration (SLAAC), no action is required.

    • To set a static IPv6 address, network mask, default gateway and DNS server to the bond0 connection:

      > sudo nmcli connection modify bond0 ipv6.addresses '2001:db8:1::1/64' ipv6.gateway '2001:db8:1::fffe' ipv6.dns '2001:db8:1::fffd' ipv6.dns-search 'example.com' ipv6.method manual
  8. Activate the connection:

    > sudo nmcli connection up bond0
  9. View and verify the connections:

    > nmcli device

    The list of connections appears.

4.4 Configuring a network team

Network teaming combines physical and virtual networks and provides a logical interface with higher efficiency. Configure network teams using nmcli.

Requirements
  • Install the teamd and NetworkManager-team packages:

    > sudo  zypper install teamd
    > sudo  zypper install NetworkManager-team
  • Install two or more physical or virtual devices on the server:

  • To use Ethernet devices as ports of the team, the physical or virtual Ethernet devices must be installed on the server and connected to a switch.

  • To use bond, bridge or VLAN devices as ports of the team, create them in advance or when you create the team.

Procedure 3: Creating a network team
  1. Create a team interface:

    > sudo nmcli connection add type team con-name CONNECTION_NAME ifname TEAM_NAME team.runner RUNNER-TYPE

    For example, to create a network team team0 with the activebackup runner, run:

    > sudo nmcli connection add type team con-name team0 ifname team0 team.runner active.backup
  2. View the list of network interfaces:

    > nmcli device status
    DEVICE         TYPE      STATE                   CONNECTION    
        wlan0          wifi      connected               Vision 
        virbr0         bridge    connected (externally)  virbr0        
        p2p-dev-wlan0  wifi-p2p  disconnected            --            
        eth0         ethernet  unavailable             --            
        lo             loopback  unmanaged               --

    You can add the listed devices to the team. The following examples use p2p-dev-wlan0 and virbr0. Note that p2p-dev-wlan0 is not configured, while virbr0 has a connection profile.

  3. Configure port interfaces to the team:

    > sudo nmcli connection add type wifi-p2p slave-type team con-name team0-port1 ifname p2p-dev-wlan0 master team0

    A new profile is created for p2p-dev-wlan0 and added to the team0 connection.

  4. Assign the existing connection to the team:

    > sudo nmcli connection modify bond0 master team0

    The connection profile for bond0 is added to the team0 connection.

  5. Activate the connection:

    > sudo nmcli connection up bond0
  6. Configure the IPv4 settings:

    • To use the team device as a port of other devices:

      > sudo nmcli connection modify team0 ipv4.method disabled
    • To use DHCP, no configuration is required.

    • To configure a static IPv4 address, network mask, default gateway and DNS server to the bond0 connection, run the command:

      > sudo nmcli connection modify team0 ipv4.addresses '192.0.2.1/24' ipv4.gateway '192.0.2.254' ipv4.dns '192.0.2.253' ipv4.dns-search 'example.com' ipv4.method manual
  7. Configure the IPv6 settings:

    • To use this team device as a port of other devices:

      > sudo nmcli connection modify team0 ipv6.method disabled
    • To use stateless address autoconfiguration (SLAAC), no action is required.

    • To set a static IPv6 address, network mask, default gateway and DNS server to the team0 connection:

      > sudo nmcli connection modify team0 ipv6.addresses '2001:db8:1::1/64' ipv6.gateway '2001:db8:1::fffe' ipv6.dns '2001:db8:1::fffd' ipv6.dns-search 'example.com' ipv6.method manual
  8. Activate the connection:

    > sudo nmcli connection up team0
  9. To view the status of the team:

    > sudo teamdctl team0 state

4.5 Configuring a network bridge

A network bridge is a device that facilitates communication between two or more network segments, creating a single network from multiple segments

To configure a network bridge, ensure the following:

  • Install two or more physical or virtual devices on the server.

  • To use Ethernet devices as ports for the bridge, ensure the server has physical or virtual Ethernet devices installed and connected to a switch.

  • When using team, bond or VLAN devices as ports for the bridge, you can create these devices either during bridge creation or beforehand.

Procedure 4: Creating a network bridge
  1. Create a bridge interface:

    > sudo nmcli connection add type bridge con-name CONNECTION_NAME ifname BRIDGE_NAME

    For example, we created a bridge: bridge0 by running the command:

    > sudo nmcli connection add type bridge con-name bridge0 ifname bridge0
  2. View the list of network interfaces to verify that bridge0 is created:

    > nmcli device status
      
        DEVICE         TYPE      STATE                                    CONNECTION    
        wlan0                wifi      connected                                Vision 
        virbr0               bridge    connected (externally)                   virbr0        
        p2p-dev-wlan0        wifi-p2p  disconnected                             --            
        eth0                 ethernet  unavailable                              --            
        lo                   loopback  unmanaged                                --      
        bridge0              bridge    connecting (getting IP configuration)    brdige0

    The bridge is in the state getting IP configuration, because you have not assigned interfaces to it yet. Later you will assign the interfaces: p2p-dev-wlan0 (not configured) and virbr0 (configured with a connection profile).

  3. Add interfaces to the bridge:

    > sudo nmcli connection add type wifi-p2p slave-type bridge con-name bridge0-port1 ifname p2p-dev-wlan0 master bridge0

    A new profile is created for p2p-dev-wlan0 and added to the bridge0 connection.

  4. To assign an existing connection to the bridge:

    > sudo nmcli connection modify bond0 master bridge0

    The connection profile for bond0 is added to the bridge0 connection.

  5. Restart the connection:

    > sudo nmcli connection up bond0
  6. Configure the IPv4 settings:

    • To use the bridge device as a port of other devices:

      > sudo nmcli connection modify bridge0 ipv4.method disabled
    • To use DHCP, no configuration is required.

    • To configure a static IPv4 address, network mask, default gateway and DNS server to the bridge0 connection:

      > sudo nmcli connection modify bridge0 ipv4.addresses '192.0.2.1/24' ipv4.gateway '192.0.2.254' ipv4.dns '192.0.2.253' ipv4.dns-search 'example.com' ipv4.method manual
  7. Configure the IPv6 settings:

    • To use this bridge device as a port of other devices:

      > sudo nmcli connection modify bridge0 ipv6.method disabled
    • To use stateless address autoconfiguration (SLAAC), no action is required.

    • To set a static IPv6 address, network mask, default gateway and DNS server to the bridge0 connection:

      > sudo nmcli connection modify bridge0 ipv6.addresses '2001:db8:1::1/64' ipv6.gateway '2001:db8:1::fffe' ipv6.dns '2001:db8:1::fffd' ipv6.dns-search 'example.com' ipv6.method manual
  8. Activate the connection:

    > sudo nmcli connection up bridge0
  9. Verify the connection:

    > nmcli device

    When you activate any port of the connection, NetworkManager also activates the bridge, but not the other ports of it.

    Enable all ports automatically when the bridge is enabled:

    > sudo nmcli connection modify bridge0 connection.autoconnect-slaves 1
  10. View the link status of Ethernet devices that are ports of a specific bridge.

    > sudo ip link show master bridge0
  11. View the status of Ethernet devices that are ports of any bridge device.

    > sudo bridge link show

4.6 Configuring a VPN connection

A VPN (Virtual Private Network) connection is a secure, encrypted tunnel between your device and another network over the Internet.

You can configure a VPN connection using the nmcli command.

Procedure 5: Installing and configuring a VPN connection
  1. Install OpenVPN:

    > sudo  zypper install networkmanager-openvpn
  2. Create a VPN connection:

    > sudo nmcli connection add type vpn con-name MyOpenVPN ifname -- vpn-type openvpn
  3. Configure the settings:

    > sudo nmcli connection modify MyOpenVPN vpn.data "remote=VPN-SERVER-ADDRESS,username=YOUR-USERNAME"
    > sudo nmcli connection modify MyOpenVPN vpn.secrets "password=YOUR-PASSWORD"
  4. Configure DNS settings:

    > sudo nmcli connection modify MyOpenVPN ipv4.dns "8.8.8.8 8.8.4.4"
  5. Add routes:

    > sudo nmcli connection modify MyOpenVPN ipv4.routes "192.168.1.0/24 192.168.1.1"
  6. Activate the VPN connections:

    > sudo nmcli connection up MyOpenVPN
  7. Verify if the configured connection is active:

    > nmcli connection show --active

5 Modifying network connections

You can use the nmcli connection modify command to modify network connections. The generic syntax of the command follows:

> sudo nmcli connection modify
      CONNECTION-NAME PROPERTY VALUE

To obtain the value of CONNECTION-NAME, list connections using the command: nmcli connection show. Available properties and their possible values are described in the following section.

5.1 Connections attributes

This section lists and describes attributes you can modify on connections:

Table 1: Connections details
PropertyDescriptionValues
ipv4.methodIt defines how the interface obtains and handles its IPv4 address configuration
  • auto—the default value used to allocate IP addresses dynamically using DHCP

  • manual—to configure a static IP address

  • link-local—to use IPv4 link-local addressing only (169.254.0.0/16)

  • shared—to share the connection with other computers

  • disabled—to disable IPv4.

ipv4.dnsA space separated list of DNS IP addressesFor example, "8.8.8.8 8.8.4.4"
ipv4.gatewayThe property is the router address that your system uses to reach networks beyond your local networkAn IP address of the gateway
connection.idIt renames the connectiona string representing the new connection name
802-11-wireless.ssidThe property renames a Wi-Fi networkA string representing the new Wi-Fi SSID
connection.autoconnectToggles on/off automatic connection when the device is onlineon or off

6 Establishing and terminating network connections

Enable the network connection to access and connect devices and resources.

6.1 Enabling network connections

Particular connections may be disabled, or all of the connections may be disabled. To activate all connections, run the command:

> sudo nmcli networking on

Bear in mind that the command does not activate manually disabled connections. To activate such a connection, proceed as described in the following procedure:

Procedure 6: Activating an existing connection
  1. View the list of existing connections:

    > sudo nmcli connection show
  2. Enable a connection using the name or UUID:

    > sudo nmcli connection up uuid CONNECTION-UUID
  3. Check the connection status:

    > sudo nmcli connection show --active

6.2 Disabling network connections

You can temporarily disconnect your system from external networks using the nmcli command to disable your network connection.

To disable a particular connection, proceed as described in the following procedure:

  1. View the list of active connections:

    > sudo nmcli connection show --active
      
    NAME                UUID                                  TYPE      DEVICE       
    Wired connection 2  7b0c32ee-851e-3015-a658-f4372b426273  ethernet  enp6s0f3u1u4
    lo                  8041ed2a-e4ae-4bf7-a0db-d4b513b9d745  loopback  lo           
    virbr0              1bec1271-4bb6-46a7-a50a-4b329fa318d3  bridge    virbr0       
    vnet0               ac196c81-0505-49f0-9328-b78e1746b4a9  tun       vnet0
  2. Terminate a specific connection:

    > sudo nmcli connection down CONNECTION-NAME/CONNECTION-UUID

    For example:

    > sudo nmcli connection down virbr0

To disable all connections temporarily, run:

> sudo nmcli networking off
Note
Note: Temporal changes only

In both cases, the changes persist only till the system reboots. After reboot, NetworkManager and connections are active again.

7 Monitoring network connections

Use the nmcli command to view the status, activity and details of network connections managed by NetworkManager.

The following list provides commands for basic monitoring of network connections.

View the list of active connections
> nmcli connection show --active
View the status of NetworkManager
> nmcli monitor

The real-time updates about the network states and connections appear.

View details of a specific network connection
> nmcli connection monitor CONNECTION-NAME

Each time the connection changes, NetworkManager prints a line.

Monitor the status of network devices
> nmcli device monitor

The list of all network devices with device name, type, state and connection name appears.

View the signal strength of Wi-Fi connections
> nmcli device wifi list

The list of available Wi-Fi networks with SSID, signal strength (in %) and security type appears.

8 NetworkManager logging

NetworkManager activities are logged by the journald system logging mechanism. The NetworkManager logs are saved in /var/log/syslog, and you can access the details using the journalctl command.

The type of logged NetworkManager activities differs according to the current logging level. Available levels are described below:

  • ERR—logs only error messages. For example, connection failures.

  • WARN—logs warnings and errors. For example, authentication issues.

  • INFO—logs informational messages. That is the default level for all logging domains.

  • DEBUG—logs detailed debugging information. For example, detailed DHCP negotiations

  • TRACE—logs very detailed, usually unimportant events. For example, packet-level details.

To check the current logging level, run:

> nmcli general logging

                                                                                                                                                                                                                    
INFO   PLATFORM,RFKILL,ETHER,WIFI,BT,MB,DHCP4,DHCP6,PPP,IP4,IP6,AUTOIP4,DNS,VPN,SHARING,SUPPLICANT,AGENTS,SETTINGS,SUSPEND,CORE,DEVICE,OLPC,INFINIBAND,FIREWALL,ADSL,BOND,VLAN,BRIDGE,TEAM,CONCHECK,DCB,DISPATCH,AUDIT,SYSTEMD,PROXY

The output shows that the logging level is INFO for all domains—that is the default setting. You can modify logging levels on particular domains and then the command outputs only the modified domains.

To change the logging level on all domains, run:

> sudo general logging level LEVEL domains ALL

For example, to revert changes to the default setting:

> sudo nmcli general logging level INFO domains ALL

To change a logging level on particular domains, for example, to set DEBUG on DNS and FIREWALL, run:

> sudo nmcli general logging level DEBUG domains FIREWALL,DNS

The following list provides commands to manage NetworkManager logs using journald.

Managing NetworkManager logs
Viewing logs

To view the NetworkManager logs

> sudo journalctl -u NetworkManager

To view the NetworkManager logs in real time:

> sudo journalctl -u NetworkManager -f

To view only specific logs, use grep to filter the journalctl output. For example, for log related to DHCP, run:

> sudo journalctl -u NetworkManager | grep DHCP
Saving logs

To save NetworkManager logs to a file, for example, to networkmanager.log:

> sudo journalctl -u NetworkManager > networkmanager.log

To save the NetworkManager logs of a specific time to a file, for example, to networkmanager_timerange.log:

> sudo journalctl -u NetworkManager --since "YYYY-MM-DD HH:MM:SS" --until "YYYY-MM-DD HH:MM:SS" > networkmanager_timerange.log

To save the NetworkManager logs with real-time monitoring and save them as and when generated:

> sudo journalctl -u NetworkManager -f >> live_networkmanager.log

9 The nmcli command reference

This section provides a summary of options and subcommands of the nmcli command you can use to interact with NetworkManager daemon to manage the network.

The nmcli command has the following generic syntax:

# nmcli OPTIONS SUBCOMMAND SUBCOMMAND_ARGUMENTS

where OPTIONS are described in Section 9.1, “The nmcli command options” and SUBCOMMAND can be any of the following:

connection

enables you to configure your network connection. For details, refer to Section 9.2, “The connection subcommand”.

device

used for network device management. For details, refer to Section 9.3, “The device subcommand”.

general

shows status and permissions. For details refer to Section 9.4, “The general subcommand”.

monitor

monitors activity of NetworkManager and watches for changes in the state of connectivity and devices. This subcommand does not take any arguments.

networking

queries the networking status. For details, refer to Section 9.5, “The networking subcommand”.

9.1 The nmcli command options

Besides the subcommands and their arguments, the nmcli command can take the following options:

-a|--ask

The 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: yes to enable the colors, no to disable them, and auto creates 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) and multiline (each entry comprises more lines, each property is on its own line). tabular is the default value.

-h|--help

prints help.

-w|--wait seconds

sets 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.

9.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:

show

to list connections:

> nmcli connection show

You can also use this command to show details about a specified connection:

> nmcli connection show CONNECTION_ID

where CONNECTION_ID is any of the identifiers: a connection name, UUID or a path

up

to activate the provided connection. Use the command to reload a connection. Also run this command after you perform any change to the connection.

> sudo nmcli connection up [--active] [CONNECTION_ID]

When --active is specified, only the active profiles are displayed. The default is to display both active connections and static configuration.

down

to deactivate a connection.

> sudo nmcli connection down CONNECTION_ID

where: 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 autoconnect flag.

modify

to change or delete a property of a connection.

> sudo nmcli connection modify CONNECTION_ID SETTING.PROPERTY PROPERTY_VALUE

where:

  • 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.addresses

  • PROPERTY_VALUE is the desired value of SETTING.PROPERTY

The following example deactivates the autoconnect option on the ethernet1 connection:

> sudo nmcli connection modify ethernet1 connection.autoconnect no
add

to add a connection with the provided details. The command syntax is similar to the modify command:

> sudo nmcli connection add CONNECTION_ID save YES|NO SETTING.PROPERTY PROPERTY_VALUE

You should at least specify a connection.type or use type. The following example adds an Ethernet connection tied to the eth0 interface with DHCP and disables the connection's autoconnect flag:

> sudo nmcli connection add type ethernet autoconnect no ifname eth0
edit

to edit an existing connection using an interactive editor.

> sudo nmcli connection edit CONNECTION_ID
clone

to clone an existing connection. The minimal syntax follows:

> sudo nmcli connection clone CONNECTION_ID NEW_NAME

where CONNECTION_ID is the connection to be cloned.

delete

to delete an existing connection:

> sudo nmcli connection delete CONNECTION_ID
monitor

to monitor the provided connection. Each time the connection changes, NetworkManager prints a line.

> sudo nmcli connection monitor CONNECTION_ID
reload

to 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.

load

to load/reload a particular connection file, run:

> sudo nmcli connection load CONNECTION_FILE

For details about the above-mentioned commands, refer to the nmcli documentation.

9.3 The device subcommand

The device subcommand enables you to show and manage network interfaces. The nmcli device command recognizes the following commands:

status

to print the status of all devices.

> nmcli device status
show

shows detailed information about a device. If no device is specified, all devices are displayed.

> mcli device show [DEVICE_NAME]
connect

to connect a device. NetworkManager tries to find a suitable connection to activate. If there is no compatible connection, a new profile is created.

> sudo nmcli device connect DEVICE_NAME
modify

performs temporary changes to the configuration that is active on the particular device. The changes are not stored in the connection profile.

> sudo nmcli device modify DEVICE_NAME [+|-] SETTING.PROPERTY VALUE

For possible SETTING.PROPERTY values, refer to nm-settings-nmcli(5).

The example below starts the IPv4 shared connection sharing on the device con1.

> sudo nmcli dev modify con1 ipv4.method shared
disconnect

disconnects a device and prevents the device from automatically activating further connections without manual intervention.

> sudo nmcli device disconnect DEVICE_NAME
delete

to 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.

> sudo nmcli device delete DEVICE_NAME
wifi

lists all available access points.

> nmcli device wifi
wifi connect

connects to a Wi-Fi network specified by its SSID or BSSID. The command takes the following options:

  • password - password for secured networks

  • ifname - interface used for activation

  • name - you can give the connection a name

> sudo nmcli device wifi connect SSID [password PASSWORD_VALUE] [ifname INTERFACE_NAME]

To connect to a Wi-Fi GUESTWiFi with a password pass$word2#@@, run:

> sudo nmcli device wifi connect GUESTWiFi password pass$word2#@@

9.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:

status

displays the overall status of NetworkManager. Whenever you do not specify a command to the nmcli general command, status is used by default.

> nmcli general status
hostname

if 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.

> sudo nmcli general hostname [HOSTNAME]

For example, to set MyHostname, run:

> sudo nmcli general hostname MyHostname
permissions

shows your permission for NetworkManager operations like enabling or disabling networking, modifying connections, etc.

> nmcli general permissions
logging

shows and changes NetworkManager logging levels and domains. Without any arguments, the command displays current logging levels and domains.

> sudo nmcli general logging [level LEVEL domains DOMAIN]

LEVEL is any of the values: OFF, ERR, WARN, INFO, DEBUG, or TRACE.

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.

9.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/off

enables or disables networking. The off command deactivates all interfaces managed by NetworkManager.

> sudo nmcli networking on
connectivity

displays the network connectivity state. If check is used, NetworkManager performs a new check of the state. Otherwise, the last detected state is displayed.

> nmcli networking connectivity

Possible 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.

10 Troubleshooting

Learn how to debug and troubleshoot NetworkManager installation and configuration issues.

10.1 Network is not running

If the network is not working, this may be caused by NetworkManager itself. To check that, proceed as follows:

  1. Check that NetworkManager is enabled and active:

    > sudo systemctl status network
  2. If NetworkManager is disabled, enable it:

    > sudo systemctl enable NetworkManager
  3. If NetworkManager is inactive, restart it:

    > sudo restart NetworkManager

10.2 Wi-Fi connectivity issue

If you are experiencing problems with Wi-Fi connectivity, proceed as described below:

  1. View the list of Wi-Fi connections:

    > sudo nmcli device wifi list
  2. If a particular device is listed, make sure its Wi-Fi connection is active:

    > sudo nmcli connection show --active
  3. If the Wi-Fi connection is not listed, verify the Wi-Fi status:

    > sudo nmcli device status
    1. If the status is disconnected, activate the connection.

      > sudo nmcli connection up CONNECTION_NAME
    2. If the status is unavailable, restart NetworkManager:

      > sudo systemctl restart NetworkManager
  4. Inspect the NetworkManager logs for error messages.

    > sudo journalctl -u NetworkManager -n 100
  5. The Wi-Fi device may be blocked:

    1. Check if the device is blocked:

      > sudo rfkill list
       
      phy0: Wireless LAN
      Soft blocked: yes
      Hard blocked: no
    2. Unblock the device:

      > sudo rfkill unblock all
  6. IPv4 static address may be configured incorrectly, to check that, reset to use DHCP:

    > sudo nmcli connection modify SSID ipv4.method auto
  7. Try to activate the connection again:

    > sudo nmcli connection up SSID
  8. Try to reconnect to the Wi-Fi network:

    > sudo nmcli device wifi connect SSID password PASSWORD