Réseau sur Ubuntu Server
Configuration réseau sous Ubuntu Server : adresse IPv4 fixe et serveurs DNS personnalisés via Netplan. Valable pour Ubuntu Server 22.04, 24.04 et 26.04 LTS — la syntaxe YAML est identique sur les trois versions, seuls quelques comportements par défaut évoluent (détaillés plus bas).
Source : Ubuntu Server documentation — Configuring networks, Netplan — Reference
Netplan, en bref
Depuis Ubuntu 17.10, toute la configuration réseau passe par Netplan : des fichiers YAML dans /etc/netplan/, traduits en configuration pour un renderer backend. Sur Ubuntu Server, le renderer par défaut est networkd (systemd-networkd) ; NetworkManager est le renderer par défaut uniquement sur Ubuntu Desktop.
Fichier YAML (/etc/netplan/*.yaml) → netplan generate → systemd-networkd (serveur) ou NetworkManager (desktop)Identifier son interface et le fichier de configuration
ip -brief link
ls /etc/netplan/Sur une image cloud (installée via cloud-init — cas le plus fréquent en VM/cloud), le fichier existant s'appelle généralement /etc/netplan/50-cloud-init.yaml. Sur une installation via l'ISO serveur classique, il peut plutôt s'appeler 00-installer-config.yaml. Dans les deux cas, la syntaxe à l'intérieur du fichier est identique.
Piège fréquent avec cloud-init : si le fichier s'appelle
50-cloud-init.yaml, cloud-init peut régénérer et écraser ce fichier à chaque redémarrage. Voir la section Cas des images cloud-init plus bas avant de modifier ce fichier en production.
Adresse IPv4 fixe
Éditer (ou créer) un fichier dans /etc/netplan/, par exemple /etc/netplan/01-static.yaml :
network:
version: 2
renderer: networkd
ethernets:
ens18:
dhcp4: false
addresses:
- 192.168.1.50/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses:
- 1.1.1.1
- 8.8.8.8Points clés :
dhcp4: false: désactive explicitement le DHCP sur cette interface — sans cette ligne, Netplan peut continuer à obtenir une IP par DHCP en plus de l'IP statique.addresses: notation CIDR (/24), une liste (plusieurs IP possibles sur la même interface).routesavecto: default/via: c'est la syntaxe actuelle pour la passerelle par défaut. L'ancienne clégateway4:fonctionne toujours mais est dépréciée — à éviter dans une nouvelle configuration.nameservers.addresses: voir la section suivante.
Ancienne syntaxe (dépréciée mais encore rencontrée)
addresses: [192.168.1.50/24]
gateway4: 192.168.1.1À remplacer par le bloc routes: [{to: default, via: ...}] de l'exemple ci-dessus dans toute configuration écrite ou modifiée aujourd'hui.
Serveurs DNS personnalisés
Le bloc nameservers se déclare directement dans le fichier YAML de l'interface, avec les adresses ET, en option, les domaines de recherche :
nameservers:
addresses:
- 1.1.1.1
- 8.8.8.8
search:
- mondomaine.localSur Ubuntu Server, la résolution DNS passe par systemd-resolved, activé par défaut (contrairement à Debian). Netplan pousse la configuration nameservers vers systemd-resolved, qui gère ensuite /etc/resolv.conf (généralement un lien symbolique vers /run/systemd/resolve/stub-resolv.conf).
Vérifier les DNS effectivement utilisés
resolvectl status
# ou, spécifique à une interface
resolvectl status ens18Appliquer la configuration
sudo netplan generate # valide la syntaxe YAML et génère la config backend, sans l'appliquer
sudo netplan apply # applique immédiatementPour éviter de se couper l'accès (SSH) en cas d'erreur de sous-réseau/passerelle, utiliser netplan try plutôt que netplan apply en priorité :
sudo netplan trynetplan try applique la configuration mais revient automatiquement en arrière après ~120 secondes si aucune confirmation (touche Entrée) n'est donnée — la protection idéale pour une modification à distance.
Vérifier l'état
sudo netplan status # disponible depuis Netplan 1.0 (Ubuntu 24.04+)
ip a
ip routePermissions des fichiers Netplan
Depuis les versions récentes de Netplan, un fichier YAML avec des permissions trop ouvertes déclenche un avertissement (les fichiers Netplan peuvent contenir des identifiants Wi-Fi en clair) :
sudo chmod 600 /etc/netplan/01-static.yamlLa configuration s'applique malgré l'avertissement, mais il est recommandé de corriger les permissions.
Cas des images cloud-init
Sur une VM créée à partir d'une image cloud Ubuntu (le cas le plus courant en environnement virtualisé/cloud), /etc/netplan/50-cloud-init.yaml est régénéré par cloud-init à chaque boot, écrasant toute modification manuelle. Deux approches :
Option 1 — Désactiver la gestion réseau de cloud-init (recommandé si le réseau ne doit plus jamais être reconfiguré automatiquement) :
sudo tee /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg <<'EOF'
network: {config: disabled}
EOFCloud-init ne touchera alors plus jamais à /etc/netplan/50-cloud-init.yaml — celui-ci peut ensuite être édité normalement.
Option 2 — Ajouter un fichier séparé chargé après : Netplan fusionne tous les fichiers de /etc/netplan/ par ordre alphabétique. Un fichier nommé après 50-cloud-init.yaml (ex. 70-static.yaml) surcharge ses valeurs sans avoir à toucher au fichier généré par cloud-init :
# /etc/netplan/70-static.yaml
network:
version: 2
ethernets:
ens18:
dhcp4: false
addresses: [192.168.1.50/24]
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses: [1.1.1.1, 8.8.8.8]Différences entre Ubuntu Server 22.04, 24.04 et 26.04
| Aspect | 22.04 LTS | 24.04 LTS | 26.04 LTS |
|---|---|---|---|
| Renderer par défaut (serveur) | networkd | networkd | networkd |
| Version Netplan | 0.104 | 0.106 → 1.0/1.1 selon point release | 1.2 |
gateway4: | Fonctionne (déprécié) | Fonctionne (déprécié) | Fonctionne (déprécié) |
netplan status | ❌ Indisponible | ✅ Disponible (Netplan 1.0+) | ✅ Disponible |
| Interfaces non configurées au boot | Ignorées si non déclarées | Ignorées si non déclarées | ⚠️ Peuvent bloquer le boot en attendant un lien DHCP (nouvelle logique wait-online) — déclarer optional: true sur les interfaces secondaires non critiques |
La syntaxe YAML de base (addresses, routes, nameservers) est strictement identique sur les trois versions : un fichier écrit pour 22.04 fonctionne tel quel sur 24.04 et 26.04.
Dépannage rapide
sudo netplan generate --debug # affiche les erreurs de syntaxe/validation en détail
ip a # état des interfaces et adresses actuelles
ip route # table de routage
resolvectl status # DNS effectivement utilisés par systemd-resolved
networkctl status ens18 # état détaillé côté systemd-networkd
journalctl -u systemd-networkd --no-pagerBonnes pratiques
- Toujours privilégier
netplan tryànetplan applysur un accès distant (SSH) : rollback automatique en cas d'erreur. - Utiliser
routes: [{to: default, via: ...}]plutôt que l'anciengateway4:dans toute nouvelle configuration. - Sur une image cloud, désactiver la gestion réseau de cloud-init (
99-disable-network-config.cfg) avant de modifier50-cloud-init.yamlen dur, sinon la modification ne survivra pas au prochain redémarrage. - Corriger les permissions (
chmod 600) des fichiers Netplan contenant des informations sensibles. - Sur 26.04, marquer
optional: trueles interfaces secondaires sans DHCP pour ne pas ralentir le boot.
