Nmstate un outil de configuration de réseautage déclaratif pour Linux

Nmstate un outil de configuration de réseautage déclaratif pour Linux

L'écosystème Linux fournit de nombreuses façons de configurer la mise en réseau, y compris les outils de démon du gestionnaire de réseau populaires et de ligne de commande tels que NMCLI et NMTUI GUI Utility. Ce guide introduit un autre outil de configuration réseau appelé Nmstate

Nmstate est un gestionnaire de réseau déclaratif pour la configuration de 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 le réseautage de l'hôte à travers une API déclarative en direction nord. Au moment de la rédaction de ce guide, le Gestionnaire de réseau le démon est le seul fournisseur soutenu par Nmstate.

Dans ce guide, nous examinons certains des exemple usages du Nmstate outil. Pour ce guide, nous démontrerons cela en utilisant Fedora Linux.

Approches impératives vs déclaratives

La gestion du réseau peut adopter deux approches - Impératif et déclaratif. Dans le impératif approche, vous définissez explicitement l'état de mise en réseau d'une interface en exécutant des commandes sur le terminal. L'accent est mis sur le 'comment'.

Par exemple, pour faire tomber un réseau en utilisant l'approche impérative, exécutez la commande:

$ sudo ifconfig enp0s3 down 

D'un autre côté, le déclaratif L'approche utilise un Yaml fichier pour appliquer les modifications à une configuration. La plupart des outils d'orchestration DevOps tels que Kubernetes Utilisez cette approche pour déployer des applications de pods à l'aide d'un Yaml déposer.

Cette approche fournit ce qui est communément appelé infrastructure comme code (IAC) dans les cercles de DevOps. Cela améliore l'automatisation de la configuration du réseau sur l'hôte et fournit un moyen rapide et plus fiable d'apporter plusieurs modifications à une interface réseau avec des erreurs minimales.

Maintenant, laissez-nous changer les engrenages et voyez comment vous pouvez utiliser le Nmstate outil de configuration pour configurer vos interfaces réseau dans Linux.

Étape 1: Installez l'outil de configuration de mise en réseau NMState

Nous allons faire rouler la balle en installant le Nmstate. Tout d'abord, vérifiez la disponibilité du colis à partir de Feutre Référentiels comme suit:

$ sudo dnf Search nmstate 

À partir de la sortie, nous pouvons voir que le gestionnaire de réseau est disponible sur les référentiels officiels.

Vérifier le package NMState

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

$ sudo dnf installer nmstate 

La commande installe le Nmstate API du gestionnaire de réseau aux côtés d'autres dépendances Python.

Installez NMState dans Fedora

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

$ rpm -qi nmstate 
Vérifiez le package NMState

Pour Linux basé à Rhel, activez d'abord le référentiel COPR.

$ sudo dnf copr activer nmstate / nmstate-stable 

Puis installer Nmstate comme suit.

$ sudo dnf installer nmstate 

Consultez des 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é comme suit.

$ nmstatectl version 1.0.2 

Utilisation de l'outil de configuration NMState dans Linux

Avec Nmstate Installé, passons aux gritants 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 ENP0S3 interface.

$ nmstatectl show enp0s3 
Afficher la configuration de l'interface réseau

La sortie est divisée en 4 sections distinctes:

  • Resolver DNS: Cette section contient la configuration du serveur de noms pour l'interface particulière.
  • rupture de route: Cela stipule les règles de routage.
  • itinéraires: Cela inclut les routes dynamiques et statiques.
  • Interfaces: Cette section spécifie les paramètres IPv4 et IPv6.

Modification de la configuration du réseau dans Linux

Vous pouvez utiliser le Nmstate Outil de configuration pour configurer vos hôtes à l'état souhaité à l'aide de modes interactifs ou basés sur des fichiers.

  • Interactif: Cela modifie une interface réseau à l'aide du NMSTATECTL Modifier commande. Cette commande ouvre un éditeur de texte défini par la variable d'environnement de l'éditeur. Une fois les modifications enregistrées, NMState applique immédiatement la nouvelle configuration à moins que des erreurs de syntaxe ne soient détectées.
  • Basé sur les fichiers: En mode basé sur des fichiers, la configuration de l'interface est appliquée à l'aide d'un fichier YAML ou JSON à l'aide du nmstatectl s'applique commande.

Laissez-nous maintenant nous salir les mains et consultez comment vous pouvez modifier la configuration du réseau en utilisant Nmstate.

Notre Feutre Le système a deux interfaces réseau actives avec la configuration suivante:

$ ip -br -4 a 
Échantillon de sortie
lo inconnu 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 (Unité de transmission maximale) de la ENP0S3 interface réseau. Par défaut, ceci est défini sur 1500 comme montré.

$ ifconfig 
Vérifiez le réseau MTU dans Linux

Nous changerons ceci en 4000. Nous le ferons en utilisant le NMSTATECTL Modifier Commande comme suit.

$ sudo nmstatectl modifier enp0s3 

Cela ouvre la configuration dans un éditeur de texte. Pour notre cas, il s'ouvre dans vigueur éditeur. Ensuite, faites défiler tout le long et localisez le MTU paramètre. Nous allons changer la valeur en 4000, tout comme nous modifions un fichier dans vim. Ensuite, nous enregistrerons les modifications.

Changer le réseau MTU dans Linux

Lorsque vous enregistrez et quittez le fichier, vous verrez une sortie brouillée sur le terminal comme Nmstate Économise les changements. Aucune intervention n'est requise, alors, asseyez-vous.

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

$ ifconfig 

À partir de la sortie terminale, nous pouvons voir que nous avons réussi à changer le MTU en 4000 à partir de la valeur par défaut 1500 valeur.

Vérifiez le réseau MTU dans Linux

Exemple de mode de configuration basé sur des fichiers

Laissez-nous maintenant modifier la configuration à l'aide du mode basé sur le fichier. Dans cet exemple, nous allons désactiver Ipv6 pour le ENP0S8 interface réseau. La première étape consiste à créer un fichier YAML qui spécifiera l'état souhaité du ENP0S8 interface réseau.

$ sudo nmstatectl show enp0s8> enp0s8.YML 
Créer un fichier Network YAML

Ensuite, nous modifierons le Yaml fichier 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 qui ont été frappées.

Désactiver IPv6 dans Linux

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

$ sudo nmstatectl appliquer enp0s8.YML 

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

$ ip -br a 
Confirmer IPv6 désactivé dans Linux

L'application des changements de réseau temporairement

Une autre fonctionnalité vraiment pratique qui Nmstate fournit la possibilité de configurer temporairement un état de réseautage souhaité. Une fois que vous êtes satisfait de la configuration, vous pouvez procéder et rendre les modifications permanentes. Sinon, les modifications apportées reviendront aux paramètres initiaux une fois que le délai d'expiration expire. Le délai d'expiration par défaut est de 60 secondes.

Pour démontrer cela, nous définirons temporairement une IP statique sur le ENP0S3 interface 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 vers le ipv4 section. Spécifiez l'IP statique - dans notre cas 192.168.2.150 et supprimez les lignes qui ont été frappées. De plus, assurez-vous de définir le dhcp paramètre FAUX.

Définir la IP statique dans Linux

Enregistrez le fichier et engagez temporairement les modifications comme suit.

$ sudo nmstatectl appliquer - no-comit - timeout 20 enp0s3.YML 

Le --sans engagement L'option applique temporairement les modifications pour une période définie par le --temps libre Option 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 de la sortie, vous pouvez voir que la configuration IP de l'interface est revenue à DHCP après l'intervalle de temps de 20 secondes. L'adresse IP est revenue à 192.168.2.104 à partir de la propriété intellectuelle statistiquement configurée qui était 192.168.2.150.

Vérifier l'interface réseau

Certes, le Nmstate L'outil 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.

Le État est facilement défini en utilisant soit le interactif approcher ou utiliser le basé sur les fichiers Méthode qui utilise un préconfiguré Yaml déposer. Cela améliore l'automatisation des tâches de configuration et la réduction des erreurs pendant la configuration.