NetworkManager-1.44.0

Introduction à NetworkManager

NetworkManager est un ensemble d'outils associés qui simplifient et rendent le réseau plus directement gérable. Que ce soit en Wifi, filaire, 3G ou Bluetooth, NetworkManager vous permet de passer rapidement d'un réseau à l'autre : une fois qu'un réseau a été configuré et qu'on s'y est relié une fois, on peut le détecter et s'y reconnecter automatiquement la prochaine fois qu'il sera disponible.

This package is known to build and work properly using an LFS 12.0 platform.

[Note]

Note

Assurez-vous que vous avez désactivé le service systemd-networkd ou que vous l'avez configuré pour ne pas gérer les interfaces que vous voulez gérer avec NetworkManager.

Informations sur le paquet

Dépendances de NetworkManager

Requises

jansson-2.14 et libndp-1.8

Recommandées

Facultatives

BlueZ-5.68, D-Bus Python-1.3.2 (pour la suite de tests), GnuTLS-3.8.1 (peut être utilisé à la place de nss-3.92), GTK-Doc-1.33.2, libpsl-0.21.2, (Qt-5.15.10 ou qt-components-5.15.10 avec qtdoc) (pour les exemples), ModemManager-1.18.12, UPower-1.90.2, Valgrind-3.21.0, dnsmasq, firewalld, libaudit, libteam, mobile-broadband-provider-info, PPP et RP-PPPoE

Configuration du noyau

Si vous voulez lancer les tests, vérifiez qu'au moins les options suivantes sont activées dans la configuration du noyau. Ces options sont nécessaires, mais peuvent ne pas être suffisantes. Recompilez le noyau si nécessaire :

[*] Networking support --->                                                [NET]
  Networking options --->
    [*]   TCP/IP networking                                               [INET]
    <*/M>   IP: tunneling                                             [NET_IPIP]
    <*/M>   IP: GRE demultiplexer                              [NET_IPGRE_DEMUX]
    <*/M>   IP: GRE tunnels over IP                                  [NET_IPGRE]
    <*>     The IPv6 protocol --->                                        [IPV6]
      <*/M>   IPv6: IPv6-in-IPv4 tunnel (SIT driver)                  [IPV6_SIT]
      <*/M>   IPv6: GRE tunnel                                        [IPV6_GRE]
      [*]     IPv6: Multiple Routing Tables               [IPV6_MULTIPLE_TABLES]
    [*]     MPTCP: Multipath TCP                                         [MPTCP]
    [*]       MPTCP: IPv6 support for Multipath TCP                 [MPTCP_IPV6]
    <*/M> 802.1Q/802.1ad VLAN Support                               [VLAN_8021Q]
    [*]   QoS and/or fair queueing --->                              [NET_SCHED]
      <*> Stochastic Fairness Queueing (SFQ)                       [NET_SCH_SFQ]
      <*> Token Bucket Filter (TBF)                                [NET_SCH_TBF]
      <*> Fair Queue Controlled Delay AQM (FQ_CODEL)          [NET_SCH_FQ_CODEL]
      <*> Ingress/classifier-action Qdisc                      [NET_SCH_INGRESS]

Device Drivers --->
  [*] Network device support --->                                   [NETDEVICES]
    [*]   Network core driver support                                 [NET_CORE]
    <*/M>   Bonding driver support                                     [BONDING]
    <*/M>   Dummy net driver support                                     [DUMMY]
    <*/M>   Ethernet team driver support --->                         [NET_TEAM]
    <*/M>   MAC-VLAN support                                           [MACVLAN]
    <*/M>     MAC-VLAN based tap driver                                [MACVTAP]
    <*/M>   IP-VLAN support                                             [IPVLAN]
    <*/M>   Virtual eXtensible Local Area Network (VXLAN)                [VXLAN]
    <*/M>   Virtual ethernet pair device                                  [VETH]
    <*/M>   Virtual Routing and Forwarding (Lite)                      [NET_VRF]

Installation de NetworkManager

Si Qt-5.15.10 est installé et que vous voulez les exemples basés sur Qt, corrigez deux fichiers meson.build :

sed -e 's/-qt4/-qt5/'              \
    -e 's/moc_location/host_bins/' \
    -i examples/C/qt/meson.build   &&

sed -e 's/Qt/&5/'                  \
    -i meson.build

Corrigez les scripts python pour qu'ils utilisent Python 3 :

grep -rl '^#!.*python$' | xargs sed -i '1s/python/&3/'

Installez NetworkManager en exécutant les commandes suivantes :

mkdir build &&
cd    build    &&

CXXFLAGS+="-O2 -fPIC"            \
meson setup ..                   \
      --prefix=/usr              \
      --buildtype=release        \
      -Dlibaudit=no              \
      -Dlibpsl=false             \
      -Dnmtui=true               \
      -Dovs=false                \
      -Dppp=false                \
      -Dselinux=false            \
      -Dqt=false                 \
      -Dsession_tracking=systemd \
      -Dmodem_manager=false      &&
ninja

Une session graphique déjà active avec une adresse de bus est nécessaire pour lancer les tests. Pour tester les résultats, en tant qu'utilisateur root, tapez : ninja test.

Quelques tests peuvent échouer en fonction des options du noyau activées.

Maintenant, en tant qu'utilisateur root :

ninja install &&
mv -v /usr/share/doc/NetworkManager{,-1.44.0}

Si vous n'avez pas passé l'option -Ddocs=true à meson, vous pouvez installer les pages de manuel prégénérées avec (en tant qu'utilisateur root) :

for file in $(echo ../man/*.[1578]); do
    section=${file##*.} &&
    install -vdm 755 /usr/share/man/man$section
    install -vm 644 $file /usr/share/man/man$section/
done

Si vous n'avez pas utilisé -Ddocs=true, vous pouvez aussi installer la documentation HTML prégénérée avec (en tant qu'utilisateur root) :

cp -Rv ../docs/{api,libnm} /usr/share/doc/NetworkManager-1.44.0

Explication des commandes

CXXFLAGS="-O2 -fPIC" : Ces option du compilateur sont nécessaires pour construire les exemples basés sur Qt5.

--buildtype=release : spécifie le type de construction convenant aux versions stables de ce paquet, comme la valeur par défaut produit des binaires non optimisés.

-Ddocs=true : Utilisez ce paramètre pour activer la construction des pages de manuels et de la documentation si GTK-Doc-1.33.2 est installé.

-Dnmtui=true : Ce paramètre active la construction de nmtui.

-Dlibpsl=false et -Dovs=false : ces paramètres désactivent la construction des bibliothèques respectives. Supprimez-les si vous avez installé les bibliothèques requises sur votre système.

-Dmodem_manager=false : ce paramètre est requis si ModemManager n'est pas installé. Supprimez-le si vous avez construit ModemManager et mobile-broadband-provider-info.

-Dsession-tracking=systemd : Ce paramètre est utilisé pour configurer systemd-logind comme programme de suivi de session par défaut.

-Dsystemdsystemunitdir=/lib/systemd/system : Ce paramètre est utilisé pour configurer correctement le répertoire d'installation des unités systemd.

-Dppp=false : ce paramètre désactive la prise en charge de PPP dans NetworkManager car les programmes nécessaires ne sont pas installés. Supprimez ce paramètre si vous avez besoin de la prise en charge de PPP et avez installé PPP.

-Dlibaudit=no et -Dselinuk=false :ce paramètre désactive la prise en charge de libaudit et SELinux car ils ne sont pas utilisés dans BLFS.

-Dqt=false : ce paramètre désactive les exemples de Qt. Supprimez-le si Qt est disponible et que vous voulez installer les exemples.

-Dcrypto=gnutls : utilisez ce paramètre si vous avez installé GnuTLS et voulez l'utiliser pour les opérations de certificats et de clés dans NetworkManager, au lieu de NSS (la bibliothèque par défaut).

-Dcrypto=null : utilisez ce paramètre si ni NSS ni GnuTLS ne sont insatllés mais que vous voulez tout de même construire NetworkManager. Ce paramètre fera que NetworkManager n'aura pas certaines fonctionnalités (par exemple 802.1X).

-Dsuspend_resume=upower : utilisez ce paramètre si vous avez installé UPower-1.90.2 et voulez l'utiliser (à la place de Systemd-254) pour la prise en charge de la veille et du réveil.

Configuration de NetworkManager

Fichiers de config

/etc/NetworkManager/NetworkManager.conf

Informations de configuration

Pour que NetworkManager fonctionne, il faut qu'il y ait au moins un fichier de configuration minimal. Ce fichier n'est pas installé par make install. Lancez la commande suivante en tant qu'utilisateur root pour créer un fichier NetworkManager.conf minimal :

cat >> /etc/NetworkManager/NetworkManager.conf << "EOF"
[main]
plugins=keyfile
EOF

Ce fichier ne devrait pas être modifié directement par les utilisateurs du système. À la place, les changements spécifiques au système devraient être effectués dans le répertoire /etc/NetworkManager/conf.d.

Pour permettre à polkit de gérer les autorisations, ajoutez le fichier de configuration suivant :

cat > /etc/NetworkManager/conf.d/polkit.conf << "EOF"
[main]
auth-polkit=true
EOF

Pour utiliser un autre client dhcp que celui inclus (recommandé si vous n'utilisez que nmcli), utilisez la configuration suivante (les valeurs valides sont soit dhcpcd ou internal) :

cat > /etc/NetworkManager/conf.d/dhcp.conf << "EOF"
[main]
dhcp=dhcpcd
EOF

Pour éviter que NetworkManager ne mette à jour le fichier /etc/resolv.conf, ajoutez le fichier de configuration suivant :

cat > /etc/NetworkManager/conf.d/no-dns-update.conf << "EOF"
[main]
dns=none
EOF

Pour trouver des options de configuration supplémentaires, voir man 5 NetworkManager.conf.

Pour permettre aux utilisateurs normaux de configurer les connections réseau, vous devriez les ajouter au groupe netdev et créer une règle polkit qui accorde l'accès. Lancez les commandes suivantes en tant qu'utilisateur root :

groupadd -fg 86 netdev &&
/usr/sbin/usermod -a -G netdev <username>

cat > /usr/share/polkit-1/rules.d/org.freedesktop.NetworkManager.rules << "EOF"
polkit.addRule(function(action, subject) {
    if (action.id.indexOf("org.freedesktop.NetworkManager.") == 0 && subject.isInGroup("netdev")) {
        return polkit.Result.YES;
    }
});
EOF

Unité Systemd

Pour démarrer NetworkManager au démarrage, activez l'unité précédemment installée en exécutant la commande suivante en tant qu'utilisateur root :

[Note]

Note

Si vous utilisez Network Manager pour gérer une interface, toute configuration précédente pour cette interface devrait être supprimée et l'interface être éteinte avant de démarrer Network Manager.

systemctl enable NetworkManager

Depuis la version 1.11.2 de NetworkManager, une unité systemd nommée NetworkManager-wait-online.service est activée et est utilisée pour éviter que les services qui requièrent une connectivité réseau ne démarre avant l'établissement par NetworkManager d'une connexion. Pour la désactiver, lancez la commande suivante en tant qu'utilisateur root :

systemctl disable NetworkManager-wait-online

Contenu

Programmes installés: NetworkManager, nmcli, nm-online, nmtui et, liés en dur à nmtui : nmtui-connect, nmtui-edit et nmtui-hostname
Bibliothèques installées: libnm.so et divers modules dans /usr/lib/NetworkManager
Répertoires installés: /etc/NetworkManager, /usr/include/libnm, /usr/lib/NetworkManager, /usr/share/doc/NetworkManager-1.44.0, /usr/share/gtk-doc/html/{libnm,NetworkManager} (si la documentation est construite) et /var/lib/NetworkManager

Descriptions courtes

nmcli

est un outil en ligne de commande pour contrôler NetworkManager et obtenir son état

nm-online

est un outil pour savoir si on est connecté

nmtui

est une interface interactive basée sur ncurses pour nmcli

nmtui-connect

est une interface interactive basée sur ncurses pour activer/désactiver les connexions

nmtui-edit

est une interface interactive basée sur ncurses pour éditer les connexions

nmtui-hostname

est une interface interactive basée sur ncurses pour éditer le nom d'hôte

NetworkManager

est le démon de gestion réseau

libnm.so

contient des fonctions utilisées par NetworkManager