Nouveautés réseau de la distribution CentOS 7
Sommaire
I. Présentation
Avec l’arrivée de la distribution CentOS7, de nombreux administrateurs ont du s’adapter aux nouvelles commandes liées aux interfaces réseau et à leur environnement. En effet, si la commande ifconfig continue d’exister (pour l’instant), un nouveau jeu d’instructions permettent de gérer au mieux le réseau et les interfaces sous-jacentes d’une machine. Je vous propose ici de faire un peu le tour du propriétaire et de lister ces nouvelles commandes.
Nous verrons notamment les exécutables suivants :
- ip
- nmcli
- nmtui
Le premier est un utilitaire de configuration et de routage TCP/IP, permettant de configurer les interfaces réseau sous différentes formes. La seconde commande permet d’administrer le programme NetworkManager de gestion du réseau et la dernière est une interface de type texte favorisant le contrôle de NetworkManager.
II. Utilitaire de configuration ip
Via la commande ip, on peut gérer les différentes interfaces réseau de sa machine au travers des objets suivants, les options ne servant qu’à préciser le format, le protocole ou le détail d’affichage :
- adresses de protocole (IP ou IPv6)
- périphériques réseau
- tunnel Ethernet sur IP
- adresses multicast
- entrées des tables de routage
- politique IPSec
Exemple : lister les interfaces :
$ ip a
L’affichage en sortie de ce genre de commande nous renseigne sur le nom de l’interface, le type, les adresses IP, leur masque et l’état de l’interface (actif ou non) :
Cette commande possède de nombreuses commandes et options et son profile de syntaxe est celui décrit ci-dessous :
En clair, on peut facilement supprimer une adresse d’une interface réseau ou encore activer ou désactiver une interface, voire même ajouter une passerelle par défaut (aussi appelée gateway). Ainsi, pour lister les caractéristiques précises d’une interface, il suffit d’exécuter la commande ci-dessous :
$ ip a show dev <Device>
REMARQUE : si cette commande est plus longue à retenir que le simple ifconfig, elle est aussi plus complète en matière d’administration, car elle permet beaucoup plus de choses (autant s’y habituer car elle pourrait bien remplacer le vénérable ifconfig).
III. Gestionnaire d’administration de NetworkManager
Ensuite, on trouve parmi les nouveautés réseau de la distribution CentOS 7, la commande nmcli. Cette commande présente l’intérêt d’être utilisable à la fois par les utilisateurs et par les scripts shell pour administrer l’interface NetworkManager de pilotage du réseau d’une machine. La distinction s’effectue grâce aux options utilisées :
- -t (ou --terse) pour les scripts
- -p (ou --pretty) pour les utilisateurs
REMARQUE : cette commande possède désormais la complétion on peut donc appuyer sur la touche [TAB] en cas d’hésitation ou d’oubli d’une option.
On peut alors disposer d’une vue précise des périphériques réseau disponible et pour lesquels on peut paramétrer les valeurs :
$ nmcli device
On devrait alors obtenir une liste encore plus claire et concise que son homologue ip, vue dans le paragraphe précédent :
Le profile de la syntaxe pour cette commande nmcli est le suivant :
On peut ainsi faire afficher l’état général du programme NetworkManager en exécutant la commande suivante :
$ nmcli general
Cela permet non seulement de montrer l’état des interfaces classiques mais aussi celles concernant plus particulièrement le WiFi :
On peut ainsi démarrer ou arrêter une interface réseau (y compris d’ailleurs les interfaces principales d’un bond) :
$ nmcli con up id bond0
IV. Interface texte nmtui pour NetworkManager
Après l’installation basic d’une distribution CentOS 7, la carte réseau n’est généralement pas active par défaut. Mais, grâce à une commande en ligne on peut aisément activer et paramétrer les interfaces réseau d’une machine, directement sur un terminal en shell. La commande nmtui (issue du package NetworkManager-tui), on peut faire afficher le menu pseudo-graphique permettant alors de prendre le contrôle du système pour paramétrer les interfaces de la machine :
Il suffit alors de sélectionner la seconde option du menu proposé afin d’activer une interface qui ne l’est pas encore :
Si l’interface en question est déjà active l’installeur nous propose alors de désactiver celle-ci. Dans le cas contraire on peut alors l’activer et la paramétrer au travers du menu suivant :
V. Conclusion
A l’aide de l’ensemble de ces commandes on peut alors facilement (re)prendre le contrôle du système d’exploitation et paramétrer ainsi au mieux nos cartes et interfaces réseau, comme bon nous semble. Il est essentiel dans le contexte de cette nouvelle version de la distribution CentOS de posséder l’ensemble des clés permettant de rendre le système d’exploitation plus efficient et de profiter de l’apport de ces nouvelles fonctionnalités livrées avec la distribution CentOS 7.
C’est une belle regression que ces outils de conf réseau.
La syntaxe est horrible, le « usage » illisible et la completion boucle :
Je tente de faire un bête: « ncmli dev list » à coup de
nmcli dev list // rien, un en plus
nmcli dev list iface wlp3s0 enter –> rien, il me demande d’entrer –help qui n’aide guère. je tente un
nmcli dev list iface wlp3s0 // et là on boucle, con, dev, nm
« nmcli dev » me donne la list attendue donc pourquoi suggérer des sous-commandes qui n’existent pas? Pareil pour « nmcli con »
Rajoutez à cela l’idée à la con de nommer les interfaces par leur drivers, position dans le slot etc… et vous finissez par perdre plus
Bon, j’ai des alias etc, mais ça c’est quand tu es sur les machines que tu administres.
Ceci étant dit, l’article ne dit pas si l’un est dépendant de l’autre, si on peut survivre avec ip sans avoir besoin de NM, sur un server/VM c’est tout de même bien lourd..
Et puis, NetworkManager est en compétition avec networkd-systemd et netplan.
Bref, un beau bordel.
Bonjour,
J’essaie de comprendre votre problème, car je n’ai jamais fait mention de l’option nmcli dev list. Il me semble que les options sont clairement mentionnées dans le tutoriel. Il n’y est jamais fait allusion. Maintenant, je trouve que l’idée de pouvoir utiliser cette commande pour piloter le service NetworkManager (qui était assez complexe à manipuler) est un très bon utilitaire. Surtout dans le contexte d’un script shell où il s’agit de piloter les interfaces de façon automatique.
Lorsque vous parlez de networkd-systemd j’imagine que vous pensez au service network?
Aussi, je pense que dans le contexte du bouleversement de SystemD, il est vrai qu’il existe pour l’instant beaucoup de commandes supplémentaires qui (je l’espère) à termes remplaceront les services obsolètes de SystemV.
Personnellement, je ne connais pas netplan. Mais, je crois vraiment que nmcli peut apporter un plus en termes d’administration pour la gestion des interfaces via NetworkManager.