Monday, July 11, 2016

CentOS - à la ligne de commande - 06 : Network Manager (nmcli)

Dans le passé, la gestion des interfaces réseau consistait surtout à éditer des fichiers de configuration définissant les paramètres de ces interfaces. Cette méthode est encore valable. Mais avec RHEL/CentOS7, nous avons une autre option pour la configuration des paramètres réseau : "Network Manager" ou son équivalent à la ligne de commande "nmcli".

Dans ce billet de blogue, je vais me concentrer sur nmcli.

***

Network Manager est un service. Nous pouvons vérifier son état avec "systemctl".

Nous devons nous rappeler que sous Linux, la casse compte. Par exemple, j'ai d'abord tapé (exprès) :

systemctl status networkmanager.service

Ce qui a donné lieu à un message d'erreur. En effet, il faut respecter la casse et pour Network Manager, il faut plutôt taper :

 systemctl status NetworkManager.service



En outre, nous pouvons voir (et même modifier) la configuration réseau avec "ip address".

Cependant, quelques remarques s'imposent...
  • Je crois, sans être certain, que "ip address" est un outil qui remplace ifconfig, tout en étant distinct de Network Manager. En effet, les commandes nmcli commencent toutes par "nmcli quelque chose" tandis que "ip address" semble fonctionner sans avoir recours aux éléments de Network Manager.
  • Bien qu'il soit possible de configurer des interfaces avec "ip address", la configuration n'est pas permanente et ne "survit" pas à un redémarrage de la machine.
  • Nous avons une grande latitude pour abréger les différentes commandes.
Concernant ce dernier point, en voici quelques exemples. Pour afficher la configuration d'une interface, nous pouvons obtenir le même résultat avec n'importe laquelle de ces variations :
  • ip address show
  • ip address (apparement, la commande affiche la configuration en l'absence d'autres paramètres)
  • ip addr
  • ip a

Cela donne quelque chose comme ceci (avant la configuration d'une adresse statique) :



Entre autres choses, cet affichage montre l'adresse IP et le masque de réseau.

Pour voir la passerelle par défaut, nous devons taper "ip route" :



Quoi qu'il en soit, nous devons préférer "nmcli" à "ip" si nous voulons configurer les interfaces réseau avec des paramètres permanents.

nmcli comprend cinq sections dans lesquelles nous pouvons exécuter des commandes :
  • connection (c)
  • device (d)
  • general (g)
  • networking (n)
  • radio (r)
Remarque : nous pouvons abréger en ne tapant que la première lettre du mot en question, "c" pour "connection" par exemple.

Il y a une multitude de commandes que nous pourrions exécuter, mais je vais m'en tenir à celles que j'ai trouvées les plus utiles pour la configuration de l'interface réseau de ma machine virtuelle. Je destine cette machine à jouer le rôle de serveur dans les expériences à venir. Dans ce contexte, et bien qu'il puisse y avoir de multiples "profils" réseau (plus intéressant pour un portable), nous n'aurons qu'un seul profil à gérer dans ce cas.

Prenons donc quelques exemples pour illustrer la manière de voir les paramètres d'une interface réseau.

nmcli device

Cette commande affiche les interfaces réseau, y compris "lo" (loopback ou "boucle").

Encore une fois, nous pouvons abréger avec la première lettre du mot  "device", donc "d", comme j'ai fait dans la capture d'écran ci-dessous (voir plus bas).


nmcli device show eno16777736

Cette commande affiche plus de détails, tels que l'adresse IP, le masque de réseau et la passerelle par défaut.

Voici à quoi cela ressemble :




nmcli connection add

Cette commande nous permet d'ajouter une connexion (ou profil)  réseau - à ne pas confondre avec un périphérique ("device") :


Remarque : oui, vous pouvez cliquer sur l'image pour l'agrandir.

Dans l'exemple ci-dessus, je désigne notamment...

  • le nom de la connexion : lxlab (c'est un nom que je choisis - lxlab come "Linux lab"
  • le nom de l'interface : eno16777736 (la seule présente, outre la boucle ou "loopback"

C'est avec cette commande donc que je configure l'adresse IP, le masque de réseau et la passerelle par défaut.

Pour les serveurs DNS, je me sers de cette commande :

nmcli con mod lxlab ipv4.dns "adresse IP du serveur ou des serveurs DNS" :



Quant au nom d'hôte, c'est la commande "nmcli general hostname" qu'il faut utiliser (et puis relancer le service systemd-hostnamed) :



J'observe qu'un nouveau fichier de configuration vient d'être créé dans le répertoire "network-scripts" :


Ainsi, au lieu de modifier les paramètres du fichier ifcfg-eno16777736, Network Manager (nmcli) a créé un nouveau fichier avec les paramètres que nous avons définis plus haut, soit le fichier  "ifcfg-lxlab" :


Cependant, j'ai aussi observé que c'est le fichier ifcfg-eno16777736 qui est toujours associé à l'interface eno16777736 (il l'est par défaut). Pour que les nouveaux paramètres prennent effet, il faut que je fasse de "lxlab" la connexion active (ou le "profil" actif ) :



Résultat : ce sont maintenant les paramètres que j'ai configurés plus haut qui sont associés au périphérique eno16777736 :



***


En somme, il convient donc de distinguer "device" et "connection" :

  • Le premier, c'est une interface réseau, un périphérique physique ou virtuel, bref, une chose.
  • Le second, c'est un ensemble de paramètres qui constitue la configuration logique de l'interface, synonyme de "profil".

Il y a, dans le répertoire "network-scripts", un fichier associé à chaque profil réseau (ou connexion), par example "ifcfg-lxlab" ou "ifcfg-eno16777736".

Pour un serveur à un seul profil, nous utiliserons le plus souvent les commandes "nmcli device" et "nmcli connection". "nmcli general" sert (entre autres) à configurer le nom d'hôte alors que "nmcli networking" affiche l'état de la connexion (activée ou inactivée). "nmcli radio" concerne les interfaces sans-fil, d'habitude peu utilisées dans le serveurs.


1 comment:

  1. This comment has been removed by a blog administrator.

    ReplyDelete