Recherche de site Web

NMState : un outil de configuration réseau déclaratif


L'écosystème Linux offre de nombreuses façons de configurer le réseau, notamment le démon populaire Network Manager et des outils de ligne de commande tels que nmcli et l'utilitaire GUI nmtui. Ce guide présente un autre outil de configuration réseau appelé NMState.

NMState est un gestionnaire de réseau déclaratif permettant de configurer la mise en réseau sur les hôtes Linux. Il s'agit d'une bibliothèque qui fournit un outil de ligne de commande qui gère les paramètres du réseau hôte. Il gère la mise en réseau des hôtes via une API déclarative vers le nord. Au moment de la rédaction de ce guide, le démon NetworkManager est le seul fournisseur pris en charge par NMState.

Dans ce guide, nous examinons certains exemples d'utilisation de l'outil NMState. Pour ce guide, nous démontrerons cela en utilisant Fedora Linux.

Approches impératives ou déclaratives

La gestion du réseau peut adopter deux approches : Impérative et déclarative. Dans l'approche impérative, vous définissez explicitement l'état réseau d'une interface en exécutant des commandes sur le terminal. L’accent est mis sur le « comment ».

Par exemple, pour arrêter un réseau à l'aide de l'approche impérative, exécutez la commande :

sudo ifconfig enp0s3 down

D'autre part, l'approche déclarative utilise un fichier YAML pour appliquer les modifications à une configuration. La plupart des outils d'orchestration DevOps tels que Kubernetes utilisent cette approche pour déployer des applications de pods à l'aide d'un fichier YAML.

Cette approche fournit ce que l'on appelle communément Infrastructure as Code (IaC) dans les cercles DevOps. Cela améliore l'automatisation de la configuration réseau sur l'hôte et fournit un moyen rapide et plus fiable d'apporter plusieurs modifications à une interface réseau avec un minimum d'erreurs.

Maintenant, changeons de sujet et voyons comment vous pouvez utiliser l'outil de configuration NMState pour configurer vos interfaces réseau sous Linux.

Étape 1 : Installer l'outil de configuration réseau NMSate

Nous allons lancer le bal en installant le Nmstate. Tout d'abord, vérifiez la disponibilité du package dans les référentiels Fedora comme suit :

sudo dnf search nmstate

D'après le résultat, nous pouvons voir que le gestionnaire de réseau est disponible sur les référentiels officiels.

Ensuite, installez NMstate comme suit. Cela fonctionne sur Fedora 31 et les versions ultérieures.

sudo dnf install nmstate

La commande installe l'API du gestionnaire de réseau NMState ainsi que d'autres dépendances Python.

Une fois l'installation terminée, vérifiez que le package nmstate est installé comme suit.

rpm -qi nmstate

Pour Linux basé sur RHEL, activez d'abord le référentiel copr.

sudo dnf copr enable nmstate/nmstate-stable

Installez ensuite NMstate comme suit.

sudo dnf install nmstate

Consultez les instructions supplémentaires sur la façon d’installer NMState à partir de la source.

Une fois installé, vous pouvez vérifier la version de NMstate installée comme suit.

nmstatectl version

1.0.2

Utilisation de l'outil de configuration NMSate sous Linux

Une fois NMstate installé, passons aux détails de la façon dont vous pouvez tirer le meilleur parti de l'API du gestionnaire de réseau.

Pour afficher la configuration réseau actuelle de votre interface réseau, exécutez la commande suivante. Voici la configuration de votre interface enp0s3.

nmstatectl show enp0s3

La sortie est divisée en 4 sections distinctes :

  • dns-resolver : cette section contient la configuration du serveur de noms pour l'interface particulière.
  • route-rules : ceci stipule les règles de routage.
  • itinéraires : cela inclut les itinéraires dynamiques et statiques.
  • Interfaces : cette section spécifie les paramètres ipv4 et ipv6.

Modification de la configuration réseau sous Linux

Vous pouvez utiliser l'outil de configuration NMState pour configurer vos hôtes dans l'état souhaité à l'aide des modes interactif ou basé sur des fichiers.

  • Interactif : ceci modifie une interface réseau à l'aide de la commande nmstatectl edit. Cette commande ouvre un éditeur de texte défini par la variable d'environnement EDITOR. Une fois les modifications enregistrées, NMState applique immédiatement la nouvelle configuration, sauf si des erreurs de syntaxe sont détectées.
  • Basé sur un fichier : en mode basé sur un fichier, la configuration de l'interface est appliquée à l'aide d'un fichier YAML ou JSON à l'aide de la commande nmstatectl apply.

Mettons maintenant la main à la pâte et voyons comment modifier la configuration réseau à l'aide de NMState.

Notre système Fedora dispose de deux interfaces réseau actives avec la configuration suivante :

ip -br -4 a
Exemple de sortie
lo               UNKNOWN        127.0.0.1/8 
enp0s3           UP             192.168.2.104/24 
enp0s8           UP             192.168.2.103/24 

Exemple de mode de configuration interactif

Nous utiliserons le mode interactif pour modifier le MTU (Maximum Transmission Unit) de l'interface réseau enp0s3. Par défaut, cette valeur est définie sur 1 500, comme indiqué.

ifconfig

Nous allons changer cela en 4000. Nous le ferons en utilisant la commande nmstatectl edit comme suit.

sudo nmstatectl edit enp0s3

Cela ouvre la configuration dans un éditeur de texte. Dans notre cas, il s'ouvre dans l'éditeur vim. Ensuite, faites défiler vers le bas et localisez le paramètre mtu. Nous changerons la valeur en 4000, tout comme nous éditerions un fichier dans vim. Ensuite, nous enregistrerons les modifications.

Lorsque vous enregistrez et quittez le fichier, vous verrez une sortie brouillée sur le terminal pendant que NMstate enregistre les modifications. Aucune intervention n’est requise, alors restez assis.

Confirmons maintenant que le changement a été effectué.

ifconfig

À partir de la sortie du terminal, nous pouvons voir que nous avons réussi à modifier le MTU à 4 000 par rapport à la valeur par défaut 1 500.

Exemple de mode de configuration basé sur un fichier

Modifions maintenant la configuration en utilisant le mode basé sur les fichiers. Dans cet exemple, nous allons désactiver IPv6 pour l'interface réseau enp0s8. La première étape consiste à créer un fichier YAML qui précisera l'état souhaité de l'interface réseau enp0s8.

sudo nmstatectl show enp0s8 > enp0s8.yml

Ensuite, nous modifierons le fichier YAML comme suit.

sudo vim enp0s8.yml

Faites défiler jusqu'à la section ipv6. Pour désactiver IPv6, définissez le paramètre activé sur false et supprimez les lignes barrées.

Enregistrez la configuration et appliquez le nouvel état à l'aide du fichier YAML comme suit.

sudo nmstatectl apply enp0s8.yml

Exécutez maintenant la commande affichée pour vérifier qu'IPv6 a été désactivé. Le résultat affiché montre que l'IPv6 pour l'interface réseau enp0s8 est vide, ce qui implique que nous avons réussi à désactiver IPv6 sur l'interface.

ip -br a 

Application temporaire des modifications du réseau

Une autre fonctionnalité très pratique fournie par NMstate est la possibilité de configurer temporairement un état de réseau souhaité. Une fois que vous êtes satisfait de la configuration, vous pouvez continuer et rendre les modifications permanentes. Sinon, les modifications apportées seront rétablies aux paramètres initiaux une fois le délai expiré. Le délai d'expiration par défaut est de 60 secondes.

Pour démontrer cela, nous allons temporairement définir une adresse IP statique sur l'interface enp0s3 et désactiver DHCP. Encore une fois, accédez au fichier à l’aide d’un éditeur de texte.

sudo vim enp0s3.yml

Faites défiler jusqu'à la section ipv4. Spécifiez l'adresse IP statique – dans notre cas 192.168.2.150 et supprimez les lignes barrées. De plus, veillez à définir le paramètre dhcp sur false.

Enregistrez le fichier et validez temporairement les modifications comme suit.

sudo nmstatectl apply --no-commit --timeout 20 enp0s3.yml

L'option --no-commit applique temporairement les modifications pendant une période définie par l'option --timeout qui, dans cet exemple, est de 20 secondes.

Pour vérifier l'application temporelle des modifications, nous vérifierons la configuration IP dans un intervalle de temps de 20 secondes.

ip -br a 

À partir du résultat, vous pouvez voir que la configuration IP de l'interface est revenue à DHCP après un intervalle de temps de 20 secondes. L'adresse IP est revenue à 192.168.2.104 à partir de l'adresse IP configurée statiquement précédente qui était 192.168.2.150.

Certes, l'outil NMState est un outil pratique pour configurer vos interfaces réseau. Il s'agit d'un outil déclaratif qui applique l'état de configuration souhaité de l'interface d'un hôte à l'aide de l'API NetworkManager.

L'état est facilement défini en utilisant soit l'approche interactive, soit la méthode basée sur des fichiers qui utilise un YAML préconfiguré. fichier. Cela améliore l’automatisation des tâches de configuration et la réduction des erreurs lors de la configuration.