Linux : Netplan

De www.yakakliker.org

Fonctionnement

Vous pouvez trouver les nouveaux fichiers de configuration sur /etc/netplan/*.yaml.

Ubuntu Server génère un fichier de configuration NetPlan pour System-Networkd nommé 01-netcfg.yaml, tandis que Ubuntu Desktop génère un fichier de configuration NetPlan pour Network-Manager nommé 01-network-manager-all.yaml.

Si vous avez plusieurs interfaces, utilisez 02-network-manager-all.yaml pour la deuxième interface. NetPlan applique la configuration dans l’ordre numérique. Cela signifie que le fichier 01 sera appliqué avant le fichier 02.

Netplan CLI

  • generate
    • Genere les fichiers de configuration nécessaires à partir des fichiers /etc/netplan/*.yaml
  • apply
    • Applique la configuration Netplan au système
  • try
    • Applique de façon temporaire la configuration Netplan au système avec un retour automatique à l'ancienne configuration
  • get
    • Permet d'obtenir la configuration d'un élément spécifique comme "ethernets.eth0.addresses", ou "all"
  • set
    • Permet d'ajouter des paramètres key=value comme "ethernets.eth0.dhcp4=true"
  • info
    • Affiche les infos disponibles
  • ip
    • Affiche les informations IP du système
  • rebind
    • Relie les fonctions virtuelles SR-IOV de fonctions physiques données à leur pilote
  • status
    • Afficher l'état des interfaces réseaux du système

YAML Configuration

Structure du fichier de configuration YAML

network:
  version: NUMBER
  renderer: STRING
  bonds: MAPPING
  bridges: MAPPING
  dummy-devices: MAPPING
  ethernets: MAPPING
  modems: MAPPING
  tunnels: MAPPING
  virtual-ethernets: MAPPING
  vlans: MAPPING
  vrfs: MAPPING
  wifis: MAPPING
  nm-devices: MAPPING

Commande : netplan status

root@snipeit:/# netplan status
     Online state: online
    DNS Addresses: 127.0.0.53 (stub)
       DNS Search: .

●  1: lo ethernet UNKNOWN/UP (unmanaged)
      MAC Address: 00:00:00:00:00:00
        Addresses: 127.0.0.1/8
                   ::1/128

●  2: ens18 ethernet UP (networkd: ens18)
      MAC Address: bc:24:11:59:3d:38 (Red Hat, Inc.)
        Addresses: 172.20.14.86/30 (dhcp)
                   fe80::be24:11ff:fe59:3d38/64 (link)
    DNS Addresses: 172.20.14.85
           Routes: default via 172.20.14.85 from 172.20.14.86 metric 100 (dhcp)
                   172.20.14.84/30 from 172.20.14.86 metric 100 (link)
                   172.20.14.85 from 172.20.14.86 metric 100 (dhcp, link)
                   fe80::/64 metric 256  3: ztchwy tunnel/tun UNKNOWN/UP (unmanaged)
      MAC Address: 36:9a:3d:12:48:3b
        Addresses: 192.168.237.245/24
                   fe80::349a:3dff:fe12:483b/64 (link)
           Routes: 192.168.237.0/24 from 192.168.237.245 (link)
                   fe80::/64 metric 256

Configuration d’une interface en client DHCP

  • /etc/netplan/networking.yaml
network:
  version: 2
  renderer: NetworkManager
  ethernets:
    enp0s3:
      dhcp4: true
# 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:
        ens18:
            dhcp4: true
    version: 2
# 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:
        all:
            dhcp4: true
            dhcp6: true
            match:
                name: en*
    renderer: networkd
    version: 2

Configuration statique d’une interface

network:
  version: 2
  renderer: NetworkManager
  ethernets:
    enp0s3:
      dhcp4: false
      addresses:
        - 10.0.0.10/24
      routes:
        - to: default
          via: 10.0.0.1
      nameservers:
        addresses:
          - 1.1.1.1
        search:
          - "linux.local"

Exemple de configuration de type "bridge"

network:
  bridges:
    br0:
      interfaces:
        - enp5s0
        - enp5s1
      dhcp4: true
      ...
network:
  ethernets:
    eth0:
      dhcp4: false
    eth1:
      dhcp4: false
  bridges:
    br0:
      interfaces: [eth0, eth1]
      parameters:
        port-priority:
          eth0: 10
          eth1: 20

Exemple de configuration de type "bond"

network:
  bonds:
    bond0:
      interfaces:
        - enp5s0
        - enp5s1
        - enp5s2
      parameters:
        mode: active-backup
      ...
network:
  bonds:
    bond0:
      addresses:
      - 192.168.1.10/24
      accept-ra: false
      gateway4: 192.168.1.1
      interfaces:
      - eno1
      - eno2
      nameservers:
        addresses:
        - 192.168.1.1
        - 192.168.1.2
      parameters:
        lacp-rate: fast
        mode: 802.3ad
        transmit-hash-policy: encap3+4
  ethernets:
    eno1: {}
    eno2: {}
  version: 2

Exemple de configuration de type "tunnels"

network:
  tunnels:
    wg0:
      mode: wireguard
      key: /path/to/private.key
      mark: 42
      port: 5182
      peers:
        - keys:
            public: rlbInAj0qV69CysWPQY7KEBnKxpYCpaWqOs/dLevdWc=
          allowed-ips: [0.0.0.0/0, "2001:fe:ad:de:ad:be:ef:1/24"]
          keepalive: 23
          endpoint: 1.2.3.4:5
        - keys:
            public: M9nt4YujIOmNrRmpIRTmYSfMdrpvE7u6WkG8FY8WjG4=
            shared: /some/shared.key
          allowed-ips: [10.10.10.20/24]
          keepalive: 22
          endpoint: 5.4.3.2:1

Exemple de configuration de type "vlans"

network:
  vlans:
    vlan123:
      id: 123
      link: enp5s0
      dhcp4: yes
network:
  ethernets:
    eno1: {...}
  vlans:
    en-intra:
      id: 1
      link: eno1
      dhcp4: yes
    en-vpn:
      id: 2
      link: eno1
      addresses: [...]

Générer les fichiers de backend

  • Une fois Netplan installé et votre fichier ou vos fichiers YAML créés. Il faut commencer (la première fois) par demander à Netplan de générer ses fichiers de backend:
sudo netplan generate
  • Appliquer la configuration

Vous pouvez choisir de travailler de deux manières: soit vous appliquer les réglages de manière inconditionnelle, soit vous demandez à Netplan d’appliquer la configuration et d’attendre une confirmation pendant 120 secondes, après quoi il revient à la configuration précédente.

sudo netplan apply
sudo netplan try

Création d'une interface réseau en DHCP avec Netplan

  • Pour une configuration simple, utiliser la commande netplan set.

Dans l'exemple un fichier YAML appelé second-interface.yaml contenant la configuration nécessaire pour activer la deuxième interface.

netplan set --origin-hint second-interface ethernets.enp6s0.dhcp4=true

Liste des fichiers dans le dossier /etc/netplan

ls /etc/netplan
50-cloud-init.yaml
second-interface.yaml
  • Contenu du fichier _**second-interface.yaml**_
cat /etc/netplan/second-interface.yaml
network:
  version: 2
  ethernets:
    enp6s0:
      dhcp4: true
  • Vérifiez la configuration complète à l'aide de netplan get
netplan get

Vous devriez obtenir un résultat ressemblant à ceci :

network:
  version: 2
  ethernets:
    enp5s0:
      dhcp4: true
    enp6s0:
      dhcp4: true
  • Appliquation de la configuration avec netplan apply
netplan apply

Liens

https://ubuntu.com/blog/ubuntu-bionic-netplan

https://www.malekal.com/comment-configurer-le-reseau-ubuntu-netplan/

https://netplan.readthedocs.io/en/stable/netplan-tutorial/#


compteur web gratuit sans pub