Install and Use NetworkManager (NMCLI) on Ubuntu / Debian | ComputingForGeeks
For system Admins, their daily routine revolves around configuring(provisioning), maintaining, troubleshooting, monitoring, securing, and managing servers in data centers. This guide answers the question that arises on how to manage or administer Ubuntu/Debian network interfaces using some default tools. Network Manager is a tool designed to manage networks on a machine. It has many tools that are used to manage network configurations on about all Linux distributions. This tool is the default Network managing tool on Ubuntu systems. It provides the following Network managing tools:
- Nmtui– this tool is run on a Linux terminal window. It is a text based network manager tool where changes can be made on a network by entering data and menu selections. It is used to perform basic network management tasks, it has many missing features that are available in NMCLI.
- Gnome Setting– from the Gnome desktop one can manage the network by using a Gnome network application. It provides basic network manahgement and is easy to perform configurations.
- nm-connection-editor– this is a graphical based network manager tool that allows one to access the NetworkManager configuration options
- NMCLI-normally referred to Network Command-Line Interface is a networking tool used to manage the NetworkManager and also show the status of a network connection. It is useful when one is unable to access the graphical environment or running a server edition and do network configuration changes
Network Manager is preferred due to the following features:
- Flexible network visualization
- Comprehensive network management
- Built-in root cause analysis capabilities
- Fully customizable content
- Built-in device and interface polling capabilities
- Single-click network troubleshooting
- Extensive reporting capabilities
- Multiple integration options
- Increasingly bigger network discovery
By the end of this guide, you should be able to install and use NetworkManager NMCLI on Ubuntu / Debian System.
Mục Lục
Pre-requisites
For this guide, ensure that your Ubuntu|Debian system is updated and upgraded as below.
sudo apt-get update && sudo apt-get upgrade
Step 1 – Install NetworkManager on Ubuntu|Debian System
By default, NetworkManager exists on Ubuntu|Debian systems, but in case you need to install it, I will demonstrate two ways to get NetworkManager installed on your Ubuntu|Debian system.
- Using APT
- Using Snap
1a) Install NetworkManager on Ubuntu|Debian System Using APT
NetworkManager is available in the default ubuntu|Debian systems’ APT repositories and can be installed as below.
sudo apt-get install network-manager
Start and enable Network Manager as below.
sudo systemctl start NetworkManager.service
sudo systemctl enable NetworkManager.service
1b) Install NetworkManager on Ubuntu|Debian System using Snap.
NetworkManager is also available in the Snap store and can be installed on Ubuntu|Debian system with snap installed and enabled as below.
sudo apt install snapd
sudo systemctl enable --now snapd.socket
sudo ln -s /var/lib/snapd/snap /snap
Then install NetworkManager using the command:
snap install network-manager
After this installation, all the required plugs and slots will be connected automatically, Verify this as below.
snap connections network-manager
Sample Output:
Interface Plug Slot Notes
dbus network-manager:wpa - -
firewall-control network-manager:firewall-control :firewall-control -
hardware-observe network-manager:hardware-observe :hardware-observe -
login-session-observe network-manager:login-session-observe :login-session-observe -
modem-manager network-manager:modem-manager :modem-manager -
network network-manager:network :network -
network-manager - network-manager:service -
network-manager network-manager:nmcli - -
network-observe network-manager:network-observe :network-observe -
network-setup-control network-manager:network-setup-control :network-setup-control -
network-setup-observe network-manager:network-setup-observe :network-setup-observe -
ppp network-manager:ppp :ppp -
Once the installation is complete, Network Manager will be automatically started and running in the background, check its status using the command:
$ sudo systemctl status NetworkManager.service
● NetworkManager.service - Network Manager
Loaded: loaded (/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
Active: active (running)
since Tue 2021-09-28 14:50:00 EAT; 1min ago
Docs: man:NetworkManager(8)
Main PID: 423 (NetworkManager)
Tasks: 3 (limit: 2404)
Memory: 13.6M
CPU: 303ms
CGroup: /system.slice/NetworkManager.service
└─423 /usr/sbin/NetworkManager --no-daemon
Sep 28 14:50:16 debian NetworkManager[423]: <info> [1632829816.7357] manager: NetworkManager state is now CONNECTED_LOCAL
Sep 28 14:50:16 debian NetworkManager[423]: <info> [1632829816.7434] manager: NetworkManager state is now CONNECTED_SITE
Sep 28 14:50:16 debian NetworkManager[423]: <info> [1632829816.7468] policy: set 'Wired connection 1' (enp0s3) as default for IPv4 routing and DNS
Step 2 – Use NetworkManager NMCLI on Ubuntu|Debian System.
NMCLI is a network utility tool that will allow us to manage network configurations. There are a couple of commands one can use to manage a network.
Modify Network Connections
Using the NMCLI to modify network connections requires us to begin with listing network connections, use the command:
nmcli connection show
Sample Output:
AME UUID TYPE DEVICE
Wired connection 1 ac98eab7-1ad3-4cf0-93a0-210bfe3bb7e2 ethernet enp0s3
Display an active connection
The above command shows all the connections, but if you want to see the active or up connections you will add the --active
flag to the above command;
nmcli connection show --active
Sample Output:
NAME UUID TYPE DEVICE
Wired connection 1 ac98eab7-1ad3-4cf0-93a0-210bfe3bb7e2 ethernet enp0s3
With the connection profile name, you can view additional information as below.
nmcli connection show "Wired connection 1"
Sample Output:
Add and Modify Network Connections using NMCLI
Add a Network connection using NMCLI
Using NMCLI, one can add new connections to an Ubuntu|Debian system using the syntax below.
sudo nmcli connection add type <network-type> ifname <connection-name>
Modify an existing Network connection using NMCLI
With NMCLI, one can make adjustments, configurations to an existing network connection such as switching between static and DHCP configurations using the syntax below.
sudo nmcli connection modify <connection-id
> <parameter
> <value
>
Now let’s see the configurations we can add and modify a connection using NMCLI. We will begin by adding a NetworkManager connection profile for our connection. For me, it’s the Ethernet connection and I will add a connection profile with the name My-New-Connection
nmcli connection add con-name My-New-Connection
ifname enp0s3
type ethernet
Sample output:
Connection 'My-New-Connection' (a6b26540-4c06-4a80-a0fa-a2868e4006e5) successfully added.
With the connection profile added, we will make the below adjustments. Remember to set your own IP address, gateway, DNS server e.t.c using a similar syntax to the one I have given.
To Set automatic start of the network connection use:
nmcli connection modify My-New-Connection
connection.autoconnect yes
1. Set a static IPv4 address with a /24 subnet mask
For example, we will modify the existing connection to a Static IP_Address and also change the subnet /24 without this specification, it will assign an IP with the default mask that can cause problems later.
sudo nmcli connection modify My-New-Connection
ipv4.address 192.168.100.157/24
2. Set a static IPv6 address with a /64 subnet mask
nmcli connection modify My-New-Connection
ipv6.addresses 2001:db8:1::1/64
3. Set an IPv4/IPv6 default gateway
##For IPv4
nmcli connection modify My-New-Connection
ipv4.gateway 192.168.100.1
##For IPv6
nmcli connection modify My-New-Connection
ipv6.gateway 2001:db8:1::fffe
4. Set an IPv4/IPv6 DNS server
##For IPv4
nmcli connection modify My-New-Connection
ipv4.dns "192.168.100.200"
##For IPv6
nmcli connection modify My-New-Connection
ipv6.dns "2001:db8:1::ffbb"
5. Set the IPv4 and IPv6 connection method to automatic
##For IPv4
nmcli connection modify My-New-Connection
ipv4.method auto
##For IPv6
nmcli connection modify My-New-Connection
ipv6.method auto
For the changes made to take effect, you need to activate the profile.
$ nmcli connection up My-New-Connection
connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
Now check active connections.
nmcli connection show --active
Verify the set IP_Address.
hostname -I
192.168.100.120 192.168.100.157
As from the output, I have two IP Addresses, a primary IP and the secondary IP added by the new connection profile My-New-Connection. You can check the additional information using the ip a
command as below.
Manage Devices Using NMCLI
NMCLI utility tool can also be used to manage devices such as:
Displaying device Status
sudo nmcli -p dev status
Sample Output:
Modifying a device configuration
Before you can modify a device configuration, you will first need to get the device information.
sudo nmcli device show
Sample Output:
With the device information, you can modify a device setting using the below syntax.
$ sudo nmcli device modify <interface-name> <parameter> <value>
###OR
$ sudo nmcli dev mod <interface-name> <parameter> <value>
Remember that the above changes are temporal and can be reset to default settings using the command:
sudo nmcli dev reapply interface-name
In case you are stuck when using NMCLI device manager find help using the command:
sudo nmcli device help
Conclusion.
That is it! We have gone through how to install and use NetworkManager NMCLI on Ubuntu / Debian System. I hope this guide was of significance to you. I assume you can now manage your network connection and network devices using NetworkManager NMCLI.
See more: