Recherche de site Web

Tutoriel de configuration réseau Netplan pour les débutants


Netplan est un utilitaire développé par Canonical, la société à l’origine d’Ubuntu. Il fournit une abstraction de configuration réseau sur les deux systèmes « backend » actuellement pris en charge (« renderer » dans la terminologie Netplan) : networkd et NetworkManager. À l’aide de Netplan, les interfaces réseau physiques et virtuelles sont configurées via des fichiers yaml qui sont traduits en configurations compatibles avec le backend sélectionné.

Dans cet article, nous découvrons Netplan et nous voyons comment nous pouvons l’utiliser pour configurer des interfaces réseau sur les versions récentes d’Ubuntu.

Dans ce tutoriel, vous allez apprendre :

  • La structure de base des fichiers de configuration yaml utilisés par Netplan
  • Comment créer une règle simple pour attribuer une adresse IP statique à une interface réseau
  • Comment tester et appliquer une configuration netplan

Tutoriel de configuration réseau Netplan pour les débutants

Configuration logicielle requise et conventions utilisées

Fichiers de configuration Netplan

Depuis Ubuntu 20.04, Netplan a remplacé la méthode traditionnelle de configuration des interfaces réseau à l’aide du fichier /etc/network/interfaces ; il vise à rendre les choses plus faciles et plus centralisées (l’ancienne façon de configurer les interfaces peut toujours être utilisée : consultez notre article sur Comment revenir au réseau /etc/network/interfaces sur Ubuntu 20.04 Focal Fossa Linux).

Il existe trois emplacements dans lesquels les fichiers de configuration Netplan peuvent être placés. Par ordre de priorité, il s’agit de :

    /run/netplan
    /etc/netplan
    /lib/netplan

Présentation de la conception de Netplan

À l’intérieur de chacun de ces répertoires, les configurations sont créées à l’aide de fichiers portant l’extension .yaml qui sont traités dans l’ordre lexicographique, quel que soit le répertoire dans lequel ils se trouvent. La priorité du répertoire n’a un rôle que lorsqu’il existe des fichiers portant le même nom : dans ce cas, seul le fichier contenu dans le répertoire ayant la priorité la plus élevée est analysé. Si un paramètre booléen ou scalaire est défini dans plusieurs fichiers de configuration, il prend la valeur qu’il a dans le dernier fichier analysé ; Si les valeurs sont des séquences, elles sont concaténées.

Les utilisateurs sont censés placer leurs configurations dans le répertoire /etc/netplan. Par défaut, les seuls fichiers présents sur un système Ubuntu 24.04 nouvellement installé sont /etc/netplan/01-network-manager-all.yaml et /etc/netplan/50-cloud-init.yaml. Jetons un coup d’œil aux instructions qu’ils contiennent.

Le fichier /etc/netplan/01-network-manage-all.yaml

Le premier fichier de configuration que l’on peut trouver dans le répertoire /etc/netplan/ est 01-network-manager-all.yaml. Il contient les instructions suivantes :

Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager

Comme suggéré par le commentaire dans le fichier, la configuration est utilisée pour laisser le moteur de rendu NetworkManager gérer toutes les interfaces réseau du système. On peut observer que les directives sont indentées à l’intérieur de la clé principale, network. Comme il s’agit de fichiers yaml, l’indentation est cruciale.

Les deux autres mots-clés que l’on peut trouver dans le fichier sont version et renderer : le premier indique la syntaxe version utilisée, le second sert à spécifier le moteur de rendu que l’on souhaite utiliser.

Le fichier /etc/netplan/50-cloud-init.yaml

Le deuxième fichier du répertoire /etc/netplan est 50-cloud-init.yaml. Ce fichier est généré par cloud-init, un outil créé par Canonical pour effectuer les initialisations précoces et les personnalisations des systèmes Linux. Voici le contenu du fichier sur mon instance virtualisée d’Ubuntu :

This file is generated from information provided by the datasource. Changes
to it will not persist across an instance reboot. To disable cloud-init's
network configuration capabilities, write a file
/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
network: {config: disabled}
network:
    ethernets:
        enp1s0:
            dhcp4: true
    version: 2

Qu’est-ce que cette configuration accomplit ? Il active dhcp pour les adresses IPv4 sur l’interface réseau enp1s0, qui est la seule sur ma machine. Comme indiqué dans les commentaires au début du fichier, les modifications apportées à cette configuration ne survivront pas à un « redémarrage de l’instance ». Cela ne signifie pas que le fichier sera réinitialisé à chaque redémarrage, mais que les modifications ne persisteront pas si cloud-init n’a pas encore été exécuté (il s’exécute au premier démarrage - ce message a du sens dans le contexte des images système de base pour les conteneurs et les environnements similaires), ou si nous forçons une réexécution, ce qui est une opération potentiellement destructrice.

Dans tous les cas, pour empêcher cloud-init d’effectuer des configurations réseau, il suffit de créer le fichier /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg avec le contenu suivant :

network: {config: disabled}

Nous pouvons le faire en exécutant :

echo "network: {config: disabled}" | sudo tee /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg

Dans la section suivante de ce tutoriel, nous allons créer un exemple de configuration légèrement plus complexe, et nous l’utiliserons pour attribuer une adresse IPv4 statique à une interface réseau.

Un exemple de configuration – définition d’une adresse IPv4 statique

Les fichiers de configuration que nous avons vus jusqu’à présent sont assez basiques ; essayons quelque chose d’un peu plus complexe et voyons comment nous pouvons configurer une adresse IPv4 statique à l’aide de Netplan. La première chose que nous devons faire est de créer un nouveau fichier de configuration à analyser après ceux par défaut. Pour le moment, nous le stockons sous le nom /tmp/60-static-ip.yml. À l’intérieur du fichier, nous créons une règle pour correspondre à la ou aux interfaces réseau que nous voulons configurer à l’aide du mappage de correspondance, dans lequel nous spécifions les propriétés des interfaces réseau et leurs valeurs sous forme de paires clé-valeur. Tous doivent correspondre pour la règle à appliquer :

Set static ip address for enp1s0 interface
network:
    version: 2
    renderer: NetworkManager
    ethernets:
        id0:
            match:
                name: enp1s0
            dhcp4: false
            addresses:
                - 192.168.122.250/24
            nameservers:
                addresses:
                    - 192.168.122.1
            routes:
                - to: default
                  via: 192.168.122.1

Regardons de plus près les nouvelles instructions que nous avons utilisées dans la configuration. À l’intérieur du nœud réseau principal, les appareils peuvent être regroupés par type :

    ethernets
    wifis
    bridges

Comme dans notre exemple, il s’agit d’une interface Ethernet, nous avons utilisé des ethernets. À l’intérieur du match mapping, nous avons référencé l’interface par son nom : enp1s0. Les règles de correspondance peuvent également être basées sur macaddress et, uniquement lors de l’utilisation de networkd comme moteur de rendu, sur driver qui est le nom du pilote du noyau Linux utilisé pour le(s) périphérique(s).

Comme notre objectif était d’attribuer une adresse statique, nous avons désactivé dhcp4 en le définissant sur « false », et utilisé la clé addresses pour associer une adresse IPv4 à l’interface. Plusieurs adresses peuvent être spécifiées ; Ils doivent être fournis avec leur masque de sous-réseau.

Nous définissons également les adresses des serveurs de noms dans le mappage correspondant. Enfin, nous définissons l’adresse IPv4 de la passerelle à utiliser par l’interface via la clé routes, qui accepte une séquence de mappages comme valeur. Dans chacun de ces mappages, nous pouvons utiliser le mot-clé to, pour spécifier l’adresse de destination de l’itinéraire (ici « default » est un alias pour 0.0.0.0), et via pour spécifier l’adresse de la passerelle. Dans les versions précédentes de Netplan, l’adresse IP statique de la passerelle était configurée via la clé gateway4, mais elle est maintenant obsolète.

Simplification de la configuration

La configuration que nous avons utilisée dans l’exemple ci-dessus peut être simplifiée. Pour référencer l’interface à laquelle nous voulons attribuer l’adresse statique, nous avons utilisé match, mais nous aurions pu l’omettre. Comme nous voulons que nos paramètres soient appliqués à une seule interface spécifique, nous pouvons la référencer directement en utilisant son nom prévisible comme id :

network:
    version: 2
    renderer: NetworkManager
    ethernets:
        enp1s0:
            dhcp4: false
            addresses:
                - 192.168.122.250/24
            nameservers:
                addresses:
                    - 192.168.122.1
            routes:
                - to: default
                  via: 192.168.122.1

Lorsque match est utilisé, l’id (id0 dans l’exemple précédent) est arbitraire et il est utilisé pour référencer le ou les périphériques configurés à partir d’autres sections du fichier de configuration ; Lorsque la correspondance est omise, l’ID doit correspondre au nom prévisible de l’appareil. À ce stade, notre configuration est prête ; Tout ce que nous devrions faire, c’est le tester et l’appliquer.

Test et application d’une configuration Netplan

Il est temps de tester notre configuration et de voir si elle fonctionne correctement. Pour atteindre notre objectif, nous pouvons utiliser l’utilitaire netplan et la sous-commande try, qui, comme son nom l’indique, est utilisée pour essayer une configuration et éventuellement la supprimer après un certain temps (le délai d’expiration par défaut est de 120 secondes, mais il peut être modifié à l’aide de l’option --timeout).

Comme vous pouvez le voir sur la sortie de la commande ip address, l’adresse IPv4 actuelle de l’interface enp1s0 est 192.168.122.200 :

ip address|grep enp1s0
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    inet 192.168.122.200/24 brd 192.168.122.255 scope global dynamic noprefixroute enp1s0

Essayons la configuration que nous avons créée à l’étape précédente. Nous passons le chemin du fichier de configuration en argument à l’option --config-file :

sudo netplan try --config-file /tmp/60-static-ip.yaml

Une fois que nous avons exécuté la commande, l’invite suivante apparaît à l’écran :

Do you want to keep these settings?


Press ENTER before the timeout to accept the new configuration


Changes will revert in 120 seconds

Nous avons suffisamment de temps pour vérifier si l’adresse IP de l’interface a changé. À partir d’une autre instance shell, nous exécutons :

ip address | grep enp1s0
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    inet 192.168.122.250/24 brd 192.168.122.255 scope global dynamic noprefixroute enp1s0

Comme nous pouvons le voir, l’adresse IPv4 a changé comme prévu. À ce stade, si nous sommes satisfaits du résultat de notre configuration, nous pouvons appuyer sur « Entrée » à l’invite, et le fichier de configuration sera copié dans le répertoire /etc/netplan, avec un suffixe aléatoire. Si nous ne voulons pas accepter les modifications, nous attendons simplement que la commande expire ou, si possible, nous l’interrompons en appuyant sur CTRL+c.

Pour appliquer la configuration sans l’essayer au préalable, nous pouvons copier le fichier directement dans le répertoire /etc/netplan, et lancer la commande netplan apply.

Conclusions

Dans ce tutoriel, nous avons abordé Netplan, un utilitaire développé par Canonical pour abstraire la configuration d’interfaces réseau à l’aide de fichiers yaml. Netplan est actif par défaut depuis Ubuntu 20.04 Focal Fossa. Dans ce tutoriel, nous avons vu comment écrire une règle simple pour définir une adresse IP statique pour une interface réseau, et nous avons vu comment tester et appliquer des modifications via les sous-commandes try and apply de l’utilitaire netplan. Nous avons à peine effleuré la surface de ce qui peut être accompli avec Netplan ; si vous voulez en savoir plus à ce sujet, veuillez jeter un coup d’œil au site Web de Netplan et à la page de manuel de l’utilitaire.

Articles connexes: