NetworkManager: Difference between revisions

From Alpine Linux
(fixed links, moved Todo related to KDE plasma to bottom of the page)
 
(10 intermediate revisions by 6 users not shown)
Line 1: Line 1:
[https://networkmanager.dev/ NetworkManager] is a program  that provides automatic detection and configuration for systems to connect to networks.
[https://networkmanager.dev/ NetworkManager] is the standard Linux network configuration tool suite. [[NetworkManager]] supports both wireless daemons i.e [[#iwd_backend|iwd]] and [[#wpa_supplicant_backend|wpa_supplicant]]. Using both may lead to conflicts.


== Installation ==
== Installation ==


{{Cmd|# apk add {{Pkg|networkmanager}}}}
{{Cmd|# apk add {{Pkg|networkmanager}}}}
<br>
<br>
{{Note| Networkmanager needs to have [[eudev|udev]] to be setup properly. Otherwise your network devices can be listed as (strictly-)unmanaged. The busybox implementation mdev is not sufficient. You can set up proper udev with:
{{Cmd|# setup-devd udev}}}}


NetworkManager comes with a command line interface and a curses-based interface, <code>nmcli</code> and <code>nmtui</code> respectively or you can use a additional gui interface:
There are multiple interfaces available for NetworkManager:


* {{Pkg|plasma-nm}} for Plasma integration and applet
* TUI: {{Pkg|networkmanager-tui}}, a curses-based interface (run <code>nmtui</code>)
* {{Pkg|network-manager-applet}} for a GTK system tray applet
* Command line: {{Pkg|networkmanager-cli}} (run <code>nmcli</code>)
* GUI: {{Pkg|plasma-nm}} for Plasma integration and applet
* GUI: {{Pkg|network-manager-applet}} for a GTK system tray applet
For the list of all NetworkManager packages refer {{pkg|networkmanager-*}}


<br>
<br>
You will need to install an additional package if you want NetworkManager to connect to wifi:
You will need to install an additional package if you want NetworkManager to connect to wifi:
{{Cmd|# apk add {{Pkg|networkmanager-wifi}}}}
{{Cmd|# apk add {{Pkg|networkmanager-wifi}}}}
<br>
<br>


Line 23: Line 25:


<br>
<br>
Then set it to autostart the service on boot:
Then set it to autostart the service on boot:
{{Cmd|# rc-update add networkmanager default}}
{{Cmd|# rc-update add networkmanager default}}
<br>
<br>


Line 33: Line 33:


{{Note|you will need to log out for the new group to take effect}}
{{Note|you will need to log out for the new group to take effect}}
<br>
== Wired networks ==
If wired networks do not appear or you get an error message like "Could not activate connection: Connection 'Ethernet connection 1' is not available on device eth0 because device is strictly unmanaged", add the following to {{path|/etc/NetworkManager/NetworkManager.conf}}:


{{Cat|/etc/NetworkManager/NetworkManager.conf|[ifupdown]
managed{{=}}true
}}
<br>
<br>


Line 40: Line 48:
==== wpa_supplicant backend ====
==== wpa_supplicant backend ====


{{Todo|([[KDE|KDE Plasma]] Desktop) find out if it is possible to prevent requesting the password for '''KDE Wallet''' on login}}
Refer the sections [[Wi-Fi#wpa supplicant|wpa supplicant]] and [[Wi-Fi#Automatic Configuration on System Boot|Automatic Configuration on System Boot]]. {{Pkg|wpa_supplicant}} configuration might not be required, if it isn't it may be a good idea to have it setup just as a fallback.


* Follow: [[Wi-Fi#wpa_supplicant]] and [[Wi-Fi#Automatic_Configuration_on_System_Boot]]
Now open {{path|/etc/NetworkManager/NetworkManager.conf}} in a text editor and change it to something like this:
{{Note|{{Pkg|wpa_supplicant}} configuration might not be required, if it isnt it may be a good idea to have it setup just as a fallback}}
 
<br>
 
Now open <code>/etc/NetworkManager/NetworkManager.conf</code> in a text editor and change it to something like this:


{{Cat|/etc/NetworkManager/NetworkManager.conf|<nowiki>[main]  
{{Cat|/etc/NetworkManager/NetworkManager.conf|<nowiki>[main]  
Line 60: Line 63:
wifi.backend=wpa_supplicant</nowiki>}}
wifi.backend=wpa_supplicant</nowiki>}}


{{Note|if these options dont work on your system you can change them as necessary}}
{{Note|if these options dont work on your system you can change them as necessary.}}


<br>
<br>
Line 76: Line 79:


<br>
<br>
Now connect to a network using one of the interfaces mentioned in [[NetworkManager#Installation|Installation]]
Now connect to a network using one of the interfaces mentioned in [[NetworkManager#Installation|Installation]]
<br>
<br>


Line 90: Line 91:


==== iwd backend ====
==== iwd backend ====
 
{{Seealso|iwd}}
NetworkManager supports wireless networks through {{Pkg|iwd}}, however, consider [https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues?scope=all&utf8=%E2%9C%93&state=opened&search=iwd existing issues] before using it. After installation, enable the server and restart NetworkManager:
NetworkManager supports wireless networks through {{Pkg|iwd}}, however, consider [https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues?scope=all&utf8=%E2%9C%93&state=opened&search=iwd existing issues] before using it. After installation, enable the server and restart NetworkManager:
<pre>
<pre>
Line 112: Line 113:
* {{Pkg|networkmanager-openvpn}} for OpenVPN
* {{Pkg|networkmanager-openvpn}} for OpenVPN


== nm-applet ==
== Troubleshooting ==
=== not authorized to control networking ===
=== nm-applet not authorized to control networking ===


You can enable all users to edit connections without adding polkit.
You can enable all users to edit connections without adding polkit.
Line 120: Line 121:
{{Cmd|# mkdir -p /etc/NetworkManager/conf.d}}
{{Cmd|# mkdir -p /etc/NetworkManager/conf.d}}


Then, add following content to <code>/etc/NetworkManager/conf.d/any-user.conf</code>:
Then, add following content to {{path|/etc/NetworkManager/conf.d/any-user.conf}}:


<pre>
<pre>
Line 129: Line 130:
Finally, restart networkmanager:
Finally, restart networkmanager:


{{Cmd|# /etc/init.d/networkmanager restart}}
{{Cmd|# rc-service networkmanager restart}}


{{Todo|([[KDE|KDE Plasma]] Desktop) find out if it is possible to prevent requesting the password for '''KDE Wallet''' on login}}
{{Todo|([[KDE|KDE Plasma]] Desktop) for autoconnect to wifi network on start, it appears that the "all users may connect to this network" option must be selected in settings, as root is not a choice to allow. There are likely better workarounds}}


[[Category:Networking]]
[[Category:Networking]]

Latest revision as of 11:23, 18 October 2024

NetworkManager is the standard Linux network configuration tool suite. NetworkManager supports both wireless daemons i.e iwd and wpa_supplicant. Using both may lead to conflicts.

Installation

# apk add networkmanager


Note: Networkmanager needs to have udev to be setup properly. Otherwise your network devices can be listed as (strictly-)unmanaged. The busybox implementation mdev is not sufficient. You can set up proper udev with:

# setup-devd udev

There are multiple interfaces available for NetworkManager:

For the list of all NetworkManager packages refer networkmanager-*


You will need to install an additional package if you want NetworkManager to connect to wifi:

# apk add networkmanager-wifi


After installation start NetworkManager:

# rc-service networkmanager start


Then set it to autostart the service on boot:

# rc-update add networkmanager default


Also your user needs to be in the plugdev group:

# adduser <YourUsername> plugdev

Note: you will need to log out for the new group to take effect


Wired networks

If wired networks do not appear or you get an error message like "Could not activate connection: Connection 'Ethernet connection 1' is not available on device eth0 because device is strictly unmanaged", add the following to /etc/NetworkManager/NetworkManager.conf:

Contents of /etc/NetworkManager/NetworkManager.conf

[ifupdown] managed=true


Wireless networks

wpa_supplicant backend

Refer the sections wpa supplicant and Automatic Configuration on System Boot. wpa_supplicant configuration might not be required, if it isn't it may be a good idea to have it setup just as a fallback.

Now open /etc/NetworkManager/NetworkManager.conf in a text editor and change it to something like this:

Contents of /etc/NetworkManager/NetworkManager.conf

[main] dhcp=internal plugins=ifupdown,keyfile [ifupdown] managed=true [device] wifi.scan-rand-mac-address=yes wifi.backend=wpa_supplicant
Note: if these options dont work on your system you can change them as necessary.


Now you need to stop conflicting services:

# rc-service networking stop

# rc-service wpa_supplicant stop


Now restart NetworkManager:

# rc-service networkmanager restart


Now connect to a network using one of the interfaces mentioned in Installation

If that connects and stays connected with no issues enable the networkmanager service and disable the networking and wpa_supplicant boot services:

# rc-update add networkmanager

# rc-update del networking boot

# rc-update del wpa_supplicant boot


iwd backend

NetworkManager supports wireless networks through iwd, however, consider existing issues before using it. After installation, enable the server and restart NetworkManager:

rc-service iwd start
rc-service networkmanager restart

To use iwd though, you've have to edit NetworkManager's configuration because it still defaults to wpa_supplicant instead. Add the following to /etc/NetworkManager/NetworkManager.conf:

[device]
wifi.backend=iwd


VPN support

Since version 1.16, NetworkManager has support for Wireguard[1].

Support for other VPN types is provided by plugins. They are provided in the following packages:

Troubleshooting

nm-applet not authorized to control networking

You can enable all users to edit connections without adding polkit. First, make the conf.d directory for networkmanager:

# mkdir -p /etc/NetworkManager/conf.d

Then, add following content to /etc/NetworkManager/conf.d/any-user.conf:

[main]
auth-polkit=false

Finally, restart networkmanager:

# rc-service networkmanager restart

Todo: (KDE Plasma Desktop) find out if it is possible to prevent requesting the password for KDE Wallet on login


Todo: (KDE Plasma Desktop) for autoconnect to wifi network on start, it appears that the "all users may connect to this network" option must be selected in settings, as root is not a choice to allow. There are likely better workarounds