Aller au contenu

Guide de survie Netplan

Netplan est un outil de configuration réseau moderne, principalement utilisé dans les distributions Linux basées sur Ubuntu. Son objectif est de simplifier la gestion des interfaces réseau grâce à l’utilisation de fichiers au format YAML. Avant son introduction, la configuration réseau sous Linux se faisait via des fichiers comme /etc/network/interfaces ou d’autres méthodes spécifiques aux services utilisés, comme NetworkManager ou systemd-networkd. Avec Netplan, ces configurations sont unifiées, offrant une solution standard et accessible.

Ce guide est conçu pour vous montrer comment utiliser Netplan pour configurer efficacement vos interfaces réseau, que vous ayez besoin de gérer des connexions Ethernet, Wi-Fi, ou même des configurations avancées comme les VLAN et les routes statiques.

Historique et origine de Netplan

L’introduction de Netplan dans l’univers d’Ubuntu remonte à la version 17.10 (Artful Aardvark). Avant cette version, les administrateurs de serveurs et de systèmes Linux utilisaient souvent le fichier traditionnel /etc/network/interfaces et les outils comme ifup/down pour gérer leurs interfaces réseau. Ces méthodes, bien que largement utilisées, devenaient de plus en plus limitées dans des environnements réseau modernes et complexes.

Avec l’émergence de nouveaux besoins, notamment autour de la gestion dynamique des réseaux, la nécessité d’un outil unifiant les différents services réseau s’est fait ressentir. Netplan a été conçu pour combler cette lacune. Il agit comme une surcouche simplifiant la gestion de systemd-networkd (le gestionnaire de réseau de systemd) et de NetworkManager. Cela permet aux administrateurs d’utiliser une syntaxe unique et simplifiée, peu importe le service sous-jacent.

Le choix de Netplan pour les distributions Ubuntu a également permis une transition plus fluide vers des infrastructures cloud et des environnements virtualisés, où des outils comme cloud-init bénéficient d’une configuration réseau automatisée et plus flexible.

C’est quoi NetworkManager et systemd-networkd ?

Comme dit ci-dessus, Netplan agit comme une interface de configuration unifiée pour deux gestionnaires de réseaux principaux : NetworkManager et systemd-networkd. Ces deux services jouent un rôle clé dans la gestion des interfaces réseau sur les distributions Ubuntu et ses dérivées, mais ils ne sont pas utilisés dans les mêmes contextes.

NetworkManager

NetworkManager est le gestionnaire de réseau principalement utilisé sur les systèmes de bureau comme Ubuntu Desktop ou ses dérivées graphiques telles que Kubuntu et Lubuntu. Il est conçu pour simplifier la gestion des connexions réseau, en particulier dans les environnements où les interfaces changent fréquemment, comme avec les connexions Wi-Fi, les VPN, ou les réseaux mobiles.

Sur un système utilisant NetworkManager, vous avez souvent accès à une interface graphique, comme celle intégrée dans l’environnement de bureau GNOME, pour gérer les réseaux. Cela rend NetworkManager idéal pour les postes de travail où la flexibilité et l’interaction utilisateur sont essentielles.

systemd-networkd

systemd-networkd, quant à lui, est plus souvent utilisé sur les systèmes serveurs, comme Ubuntu Server, où la gestion des interfaces réseau est plus statique et ne nécessite pas d’interactions fréquentes avec l’utilisateur. Ce service est minimaliste et parfaitement intégré au système systemd, ce qui le rend adapté aux serveurs et aux environnements sans interface graphique.

Vérifier quel gestionnaire est utilisé

Il est important de savoir quel gestionnaire de réseau est actif sur votre système, car cela détermine comment Netplan va appliquer vos configurations réseau.

Pour vérifier si NetworkManager est installé et actif, vous pouvez utiliser la commande suivante :

Terminal window
systemctl status NetworkManager

Si le service est actif, vous verrez un retour indiquant son statut comme “running”. Dans le cas contraire, le service sera inactif ou non installé.

Pour vérifier l’état de systemd-networkd, utilisez cette commande :

Terminal window
systemctl status systemd-networkd

De la même manière, le statut sera “active” si systemd-networkd gère le réseau.

Pourquoi est-ce important ?

Savoir quel service est utilisé sur votre système est crucial pour bien configurer votre réseau avec Netplan. Chaque gestionnaire de réseau a ses particularités, et Netplan se base sur le service actif pour appliquer les configurations. Par exemple, si vous configurez Netplan avec renderer: NetworkManager sur un serveur qui utilise systemd-networkd, votre configuration ne fonctionnera pas.

Structure des fichiers Netplan et permissions

Les fichiers de configuration utilisés par Netplan sont au format YAML, un format simple et lisible qui permet de configurer facilement les interfaces réseau. Ces fichiers se trouvent dans le répertoire /etc/netplan/, et c’est à partir de là que les configurations réseau sont appliquées.

Chaque fichier Netplan suit une syntaxe YAML stricte avec des indentations bien définies. Voici un exemple simple de configuration où l’interface Ethernet utilise DHCP pour obtenir une adresse IP automatiquement :

network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: true

Explication :

  • network: Bloc principal qui contient toutes les configurations réseau.
  • version: La version du fichier de configuration Netplan (actuellement, c’est la version 2).
  • renderer: Définit quel service gère la configuration du réseau. Ici, networkd signifie que systemd-networkd est utilisé. Pour un environnement de bureau, on peut utiliser NetworkManager.
  • ethernets: Ce bloc contient les interfaces Ethernet. Dans cet exemple, eth0 est l’interface que l’on configure.
  • dhcp4: Permet d’activer DHCP pour l’IPv4, ce qui attribue une adresse IP automatiquement.

Fichiers multiples et ordre d’application

Les fichiers de configuration Netplan peuvent être multiples, chacun ayant son propre fichier dans le répertoire /etc/netplan/. Les fichiers sont traités dans l’ordre alphabétique, c’est pourquoi ils sont souvent nommés avec des préfixes numériques comme 01-netcfg.yaml, 50-cloud-init.yaml, etc. Un fichier commençant par 01- sera appliqué avant un fichier commençant par 50-, permettant de définir une priorité entre les configurations si nécessaire.

Permissions des fichiers Netplan

Les fichiers Netplan doivent avoir des permissions appropriées pour des raisons de sécurité. Ils doivent être lisibles et modifiables uniquement par l’utilisateur root. Les permissions recommandées pour les fichiers Netplan sont 600, ce qui signifie que seul root peut les lire et les modifier, garantissant ainsi que la configuration réseau ne puisse être altérée par d’autres utilisateurs.

Vous pouvez vérifier et ajuster les permissions des fichiers Netplan avec les commandes suivantes :

Terminal window
sudo chown root:root /etc/netplan/99-incus.yaml
sudo chmod 600 /etc/netplan/99-incus.yaml

Ces commandes garantissent que le fichier appartient à l’utilisateur root et que seul root a les permissions de lecture et d’écriture.

Commandes Netplan à connaître et débogage

Netplan fournit une série de commandes qui permettent de tester, appliquer et déboguer les configurations réseau. Lorsque vous travaillez avec Netplan, il est essentiel de connaître ces commandes pour gérer efficacement les changements de configuration réseau et pour éviter les erreurs. En particulier, lorsqu’on travaille à distance (par exemple via SSH), il faut être très prudent, car une mauvaise configuration réseau peut vous couper l’accès à votre serveur. Si possible, assurez-vous toujours d’avoir accès à la console de la machine en cas de problème.

netplan generate

La commande netplan generate est utilisée pour générer les fichiers de configuration spécifiques à systemd-networkd ou NetworkManager à partir des fichiers YAML que vous avez définis. Elle permet de convertir les fichiers Netplan en configurations propres aux services réseaux sous-jacents.

Terminal window
sudo netplan generate

Cette commande est surtout utilisée en interne par Netplan, mais elle peut être exécutée manuellement si vous voulez voir les fichiers générés dans /run/systemd/network/ (pour systemd-networkd) ou /etc/NetworkManager/system-connections/ (pour NetworkManager).

netplan try

La commande netplan try est extrêmement utile pour tester une nouvelle configuration. Après l’exécution de cette commande, Netplan applique temporairement la configuration réseau et attend 120 secondes avant de confirmer les modifications. Si vous ne confirmez pas les changements en appuyant sur la touche [ENTER] Netplan reviendra automatiquement à la configuration précédente, vous évitant ainsi de rester bloqué hors du serveur.

Terminal window
sudo netplan try

netplan apply

Une fois que vous êtes sûr que la configuration est correcte, vous pouvez utiliser netplan apply pour appliquer définitivement les modifications. Cette commande recharge la configuration réseau en fonction du contenu des fichiers YAML dans /etc/netplan/ et redémarre les services réseau concernés.

Terminal window
sudo netplan apply

Contrairement à netplan try, cette commande applique immédiatement les modifications sans retour en arrière possible. Soyez donc certain de votre configuration avant de l’utiliser, surtout si vous travaillez à distance.

Débogage avec Netplan

Lorsqu’une configuration réseau ne fonctionne pas comme prévu, il est essentiel de savoir comment déboguer. Netplan fournit plusieurs outils pour vérifier les erreurs et identifier les problèmes.

Si vous avez des problèmes à appliquer une configuration Netplan, vous pouvez utiliser l’option --debug pour obtenir des informations supplémentaires sur ce qui se passe en arrière-plan. Cette commande affiche les étapes suivies par Netplan pour appliquer la configuration et peut vous aider à identifier les erreurs ou les fichiers mal configurés.

Terminal window
sudo netplan --debug apply

Si une configuration échoue ou si une interface réseau ne fonctionne pas comme prévu, les journaux système peuvent fournir des informations précieuses. Vous pouvez utiliser journalctl pour consulter les messages d’erreurs liés aux services systemd-networkd ou NetworkManager.

Pour consulter les journaux de systemd-networkd :

Terminal window
sudo journalctl -u systemd-networkd

Pour consulter les journaux de NetworkManager :

Terminal window
sudo journalctl -u NetworkManager

Ces journaux vous donneront des détails sur les erreurs liées à la configuration réseau. Par exemple, une erreur dans le fichier YAML ou un conflit d’adresses IP peut être signalé ici.

La commande ip a vous permet de vérifier l’état actuel des interfaces réseau et de voir quelles adresses IP sont attribuées aux interfaces. Cela peut vous aider à voir si la configuration Netplan a bien été appliquée ou si l’interface réseau est en panne.

Terminal window
ip a

Configurations types avec Netplan

Netplan est un outil flexible qui permet de configurer différents types de réseaux : adresses IPv4 et IPv6, configurations DHCP ou statiques, ainsi que des scénarios plus complexes comme les ponts réseau (bridges), l’agrégation de liens (bonding), et les connexions Wi-Fi. Voici un ensemble de configurations types qui couvrent ces différents cas.

Configuration IPv4 avec DHCP

Pour configurer une interface réseau avec une adresse IPv4 obtenue via DHCP, voici une configuration simple. Cela est couramment utilisé pour les postes de travail ou les serveurs dans des environnements où l’adresse IP est fournie automatiquement par un serveur DHCP :

network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: true

Dans cet exemple, l’interface eth0 obtient automatiquement une adresse IPv4 via DHCP.

Configuration d’une adresse IPv4 fixe

Si vous avez besoin d’une adresse IPv4 statique pour votre interface, par exemple pour un serveur, voici comment configurer cela :

network:
version: 2
renderer: networkd
ethernets:
eth0:
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
  • addresses: définit l’adresse IP statique avec le masque de sous-réseau (/24).
  • gateway4: spécifie la passerelle par défaut.
  • nameservers: définit les serveurs DNS (ici, ceux de Google).

Configuration IPv6 avec DHCP

Pour configurer une interface afin qu’elle obtienne une adresse IPv6 via DHCP, la syntaxe est similaire à celle de l’IPv4. Voici comment configurer DHCP pour IPv6 sur Netplan :

network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp6: true

Cette configuration permet à l’interface eth0 d’obtenir une adresse IPv6 dynamique via DHCPv6.

Configuration d’une adresse IPv6 statique

Pour définir une adresse IPv6 statique, voici un exemple de configuration :

network:
version: 2
renderer: networkd
ethernets:
eth0:
addresses:
- 2001:0db8:85a3::8a2e:0370:7334/64
gateway6: 2001:0db8:85a3::1
nameservers:
addresses:
- 2001:4860:4860::8888
- 2001:4860:4860::8844
  • addresses: spécifie l’adresse IPv6 statique et son préfixe (/64).
  • gateway6: définit la passerelle par défaut pour IPv6.
  • nameservers: définit les serveurs DNS pour IPv6.

Configuration d’un bridge réseau

Un bridge (pont réseau) est souvent utilisé dans des environnements de virtualisation pour connecter plusieurs interfaces ensemble, comme dans les machines virtuelles. Voici comment configurer un bridge avec Netplan :

network:
version: 2
renderer: networkd
ethernets:
enp3s0:
dhcp4: no
dhcp6: no
bridges:
br0:
dhcp4: true
interfaces:
- enp3s0

Dans cet exemple :

  • Le bridge nommé br0 est configuré pour utiliser DHCP pour obtenir une adresse IPv4.
  • L’interface eth0 est ajoutée au bridge.

Configuration d’un bonding

Le bonding permet d’agréger plusieurs interfaces réseau pour améliorer la tolérance aux pannes ou augmenter la bande passante. Voici comment configurer un bonding avec Netplan :

network:
version: 2
renderer: networkd
ethernets:
eno1:
dhcp4: no
eno2:
dhcp4: no
bonds:
bond0:
interfaces:
- eno1
- eno2
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
parameters:
mode: 802.3ad
lacp-rate: fast
mii-monitor-interval: 100

Dans cet exemple :

  • Le bonding nommé bond0 regroupe les interfaces eth0 et eth1.
  • Le mode active-backup signifie que l’interface eth0 est l’interface principale, et eth1 prendra le relais si eth0 échoue.

Configuration Wi-Fi

La configuration d’un réseau Wi-Fi avec Netplan nécessite de spécifier le SSID et la clé de sécurité. Voici un exemple pour configurer une interface Wi-Fi :

network:
version: 2
renderer: NetworkManager
wifis:
wlan0:
access-points:
"MonSSID":
password: "motdepassewifi"
dhcp4: true

Dans cet exemple :

  • wlan0 est l’interface Wi-Fi.
  • access-points spécifie le nom du réseau Wi-Fi (MonSSID) et son mot de passe.
  • dhcp4: true indique que l’interface Wi-Fi utilise DHCP pour obtenir une adresse IPv4.

Conclusion

En espérant vous avoir aidé à mieux appréhender Netplan, ce guide a couvert les points essentiels pour configurer efficacement le réseau sous Ubuntu et ses dérivées.