Skip to content

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 ​

bash
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 :

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.8

Points 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).
  • routes avec to: 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) ​

yaml
      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 :

yaml
      nameservers:
        addresses:
          - 1.1.1.1
          - 8.8.8.8
        search:
          - mondomaine.local

Sur 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 ​

bash
resolvectl status
# ou, spécifique à une interface
resolvectl status ens18

Appliquer la configuration ​

bash
sudo netplan generate   # valide la syntaxe YAML et génère la config backend, sans l'appliquer
sudo netplan apply      # applique immédiatement

Pour é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é :

bash
sudo netplan try

netplan 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 ​

bash
sudo netplan status          # disponible depuis Netplan 1.0 (Ubuntu 24.04+)
ip a
ip route

Permissions 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) :

bash
sudo chmod 600 /etc/netplan/01-static.yaml

La 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) :

bash
sudo tee /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg <<'EOF'
network: {config: disabled}
EOF

Cloud-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 :

yaml
# /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 ​

Aspect22.04 LTS24.04 LTS26.04 LTS
Renderer par défaut (serveur)networkdnetworkdnetworkd
Version Netplan0.1040.106 → 1.0/1.1 selon point release1.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 bootIgnorées si non déclaréesIgnoré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 ​

bash
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-pager

Bonnes pratiques ​

  • Toujours privilégier netplan try à netplan apply sur un accès distant (SSH) : rollback automatique en cas d'erreur.
  • Utiliser routes: [{to: default, via: ...}] plutôt que l'ancien gateway4: dans toute nouvelle configuration.
  • Sur une image cloud, désactiver la gestion réseau de cloud-init (99-disable-network-config.cfg) avant de modifier 50-cloud-init.yaml en 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: true les interfaces secondaires sans DHCP pour ne pas ralentir le boot.

Publié sous lience MIT.