# Configuration IP et interfaces sur Ubuntu (⩾20.04)

Ubuntu à partir de Ubuntu 20.04 (environ) utilise Netplan pour la configuration IP. Netplan s'appuie sur des fichiers YAML situé dans **`/etc/netplan/`.**

Pour appliquer les modification du fichier, exécuter :

```bash
sudo netplan apply
```

## Usage courant

Exemple de fichier pour une configuration via DHCPv4 :

```yaml
network:
  ethernets:
    enp3s0:
      dhcp4: true
  version: 2
```

Exemple de fichier pour une configuration IPv4 statique :

```yaml
network:
  version: 2
  ethernets:
    eth0:
      addresses:
        - 10.10.10.2/24
      routes:
        - to: default
          via: 10.10.10.1
      nameservers:
        search: [mydomain, otherdomain]
        addresses: [10.10.10.1, 1.1.1.1]
```

Exemple de fichier pour une configuration IPv4 via DHCP et IPv6 statique :

```yaml
network:
  ethernets:
    ens18:
      dhcp4: true
      dhcp6: false
      addresses:
        - 2a01:9093:fd2e:5a0e:7714:59ce:0f8a:4/64
      #gateway6: fe80::7e2b:1302:814a:ea68    # Obsolete
      routes:
        - to: "::/0"    # defaut ipv6
          via: "fe80::7e2b:1302:814a:ea68"
          on-link: true

  version: 2
```

**`on-link: true`** indique que la passerelle spécifiée (**`via`**) est directement accessible sur le lien local (le réseau local). Cela signifie que l'interface réseau n'a pas besoin de savoir exactement où se trouve la passerelle par l'intermédiaire d'une autre route.

## Usage avancé  


### LACP

Exemple de fichier pour lier deux interfaces via LACP :

```yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    eno1:
      dhcp4: no
    eno2:
      dhcp4: no
  bonds:
    bond0:
      interfaces: [eno1, eno2]
      addresses: [192.168.2.2/24]
      # gateway4: 192.186.2.1    # Obsolete
      routes:
        - to: "0.0.0.0/0"  # Route par défaut pour tout le trafic IPv4
          via: 192.168.2.1
      parameters:
        mode: 802.3ad
        transmit-hash-policy: layer3+4
        mii-monitor-interval: 1
      nameservers:
        addresses:
          - "8.8.8.8"
          - "9.9.9.9"
```

#### Paramètres du bond :

- `<strong>mode: 802.3ad</strong>` : Il s'agit du mode d'agrégation **LACP (Link Aggregation Control Protocol)**, conforme à la norme IEEE 802.3ad. Ce mode est utilisé pour équilibrer la charge et offrir la tolérance aux pannes si le commutateur réseau supporte LACP.
- `<strong>transmit-hash-policy: layer3+4</strong>` : Cette politique d'agrégation hash sur la base des informations des couches 3 (IP) et 4 (port TCP/UDP), ce qui permet un équilibrage de charge plus efficace.
- `<strong>mii-monitor-interval: 1</strong>` : Cela configure la fréquence de surveillance de l'état des interfaces membres du bond, ici toutes les 1 ms. Si une interface tombe, elle sera retirée du bond et le trafic sera redirigé via les autres interfaces.

### VLAN

#### Prérequis

Pour pouvoir utiliser les tags vlan et configurer nos cartes réseau pour les utiliser avec Netplan, il faut d’abord s'assurer que le module VLAN (`8021q`) est chargé dans le noyau Linux.

Pour vérifier si le module VLAN (8021q) est chargé sur un système Linux, utilisez la commande `lsmod` pour lister les modules du noyau chargés. Ouvrez un terminal et exécutez :

```bash
$ lsmod | grep 8021q
```

Si le module VLAN est chargé, vous verrez "8021q" dans le résultat. Sinon, cela signifie que le module n'est pas chargé.

Si le module n'est pas chargé, vous pouvez le faire manuellement avec la commande `modprobe` :

```bash
$ sudo modprobe 8021q
```

Après cela, vérifiez à nouveau son statut avec `lsmod | grep 8021q`. Si le module est chargé, il apparaîtra dans la liste.

Pour que le module VLAN (8021q) soit chargé automatiquement au démarrage, ajoutez-le au fichier `/etc/modules` :

```bash
$ echo '8021q' | sudo tee -a /etc/modules
```

Cela garantira que le module est chargé à chaque démarrage du système.

#### Exemples de configurations

Exemple de fichier pour configurer une interface physique et une interface VLAN :

```yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    ens18:
      dhcp4: no
      addresses:
        - 192.168.1.40/24
      routes:
        - to: default
          via: 192.168.1.101
      nameservers:
          addresses: [8.8.8.8, 8.8.4.4]

  vlans:
    vlan10:
      id: 10
      link: ens18
      addresses: [192.168.10.2/24]
```