2. Préparer les systèmes pour le routage IPv4 et IPv6

2.1. Raccorder et lancer les routeurs virtuels

Les trois machines virtuelles de routage doivent être raccordées au commutateur de distribution de l'hyperviseur.

Q151.

Comment configurer les ports du commutateur avant le lancement des machines virtuelles ?

On utilise le script de procédure switch-conf.py qui applique les déclarations contenues dans un fichier YAML. Le code du script est accessible à partir du dépôt Git startup-scripts.

Voici une copie du fichier de configuration switch.yaml des trois ports de commutateur.

ovs:
  switches:
    - name: dsw-host
      ports:
        - name: tap5 # R1 switch port
          type: OVSPort
          vlan_mode: trunk
          trunks: [360, 440, 441]
        - name: tap6 # R2 switch port
          type: OVSPort
          vlan_mode: trunk
          trunks: [52, 440, 442] # VLAN 52 provides Internet temporary access
#         trunks: [440, 442]
        - name: tap7 # R3 switch port
          type: OVSPort
          vlan_mode: trunk
          trunks: [52, 441, 442] # VLAN 52 provides Internet temporary access
#         trunks: [441, 442]

On applique les paramètres définis ci-dessus.

$HOME/masters/scripts/switch-conf.py switch.yaml

Les numéros de ports de commutateur et de VLAN donnés dans les exemples ci-dessus doivent être adaptés selon le plan d’adressage spécifique à vos travaux pratiques.

Q152.

Comment afficher les entrées de la table CAM du commutateur de distribution sur l'hyperviseur ?

Rechercher les options de la commande ovs-appctl à partir de la console de l'hyperviseur.

L'affichage de la table CAM du commutateur dsw-host de l'hyperviseur se fait à l'aide de la commande :

sudo ovs-appctl fdb/show dsw-host

Pour sélectionner un VLAN particulier, on ajoute un appel à grep. Voici des exemples d'affichage pour les VLANs de la maquette une fois que les routeurs virtuels sont lancés et échangent entre eux.

  • Lien entre R1 et R2.

    sudo ovs-appctl fdb/show dsw-host | grep 440
       10   440  b8:ad:ca:fe:00:05  274
       18   440  b8:ad:ca:fe:00:06  120
  • Lien entre R1 et R3.

    sudo ovs-appctl fdb/show dsw-host | grep 441
       12   441  b8:ad:ca:fe:00:07    1
       10   441  b8:ad:ca:fe:00:05    1
  • Lien entre R2 et R3.

    sudo ovs-appctl fdb/show dsw-host | grep 442
       18   442  b8:ad:ca:fe:00:06   51
       12   442  b8:ad:ca:fe:00:07   51

Q153.

Comment lancer les trois routeurs virtuels ?

On utilise le script de procédure lab-startup.py qui applique les déclarations contenues dans un fichier YAML. Le code du script est accessible à partir du dépôt Git startup-scripts.

Voici une copie du fichier frr-lab.yaml de déclaration des trois routeurs virtuels.

kvm:
  vms:
    - vm_name: R1
      master_image: debian-testing-amd64.qcow2 # master image to be used
      force_copy: false # do not force copy the master image to the VM image
      memory: 1024
      tapnum: 5
    - vm_name: R2
      master_image: debian-testing-amd64.qcow2 # master image to be used
      force_copy: false # do not force copy the master image to the VM image
      memory: 1024
      tapnum: 6
    - vm_name: R3
      master_image: debian-testing-amd64.qcow2 # master image to be used
      force_copy: false # do not force copy the master image to the VM image
      memory: 1024
      tapnum: 7

Les numéros d'interfaces tap sont à changer suivant les attributions du plan d'adressage de travaux pratiques.

On lance les trois routeurs virtuels avec le script lab-startup.py.

$HOME/masters/scripts/lab-startup.py frr-lab.yaml

Q154.

Comment changer le nom d'hôte de chacun des trois routeurs virtuels ?

Utiliser la connexion console avec la commande telnet et définir le nouveau nom d'hôte avec la commande hostnamectl.

On obtient la liste des numéros de ports d'accès console au lancement des routeurs virtuels ou à l'aide de la commande lsof -i par exemple. Ensuite, on ouvre la connexion sur le port ouvert et on change le nom d'hôte et on redémarre le système.

telnet localhost 2306
Trying ::1...
Connected to localhost.
Escape character is '^]'.

localhost login: etu
Mot de passe :
Linux localhost 6.11.4-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.11.4-1 (2024-10-20) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
etu@localhost:~$ sudo hostnamectl hostname R2
etu@localhost:~$ sudo reboot

2.2. Activer le routage sur les routeurs virtuels

Sans modification de la configuration par défaut, un système GNU/Linux n'assure pas la fonction de routage du trafic d'une interface réseau à une autre.

L'activation du routage correspond à un réglage de paramètres du sous-système réseau du noyau Linux. L'outil qui permet de consulter et modifier les réglages de paramètre sur le noyau est appelé sysctl.

Q155.

Comment activer le routage dans le sous-système réseau du noyau Linux ?

Utiliser la commande sysctl pour effectuer des recherches et identifier les paramètres utiles.

Il est dorénavant recommandé de créer un fichier de configuration spécifique par fonction. C'est la raison pour laquelle on crée un nouveau fichier /etc/sysctl.d/10-routing.conf.

Voici un exemple de création de fichier qui active les clés relatives au routage IPv4 et IPv6.

cat << EOF | sudo tee /etc/sysctl.d/10-routing.conf
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
net.ipv4.conf.all.log_martians=1
EOF
[Avertissement] Avertissement

Il ne faut pas oublier d'appliquer les nouvelles valeurs des paramètres de configuration.

sudo sysctl --system

On utilise la même commande pour vérifier que la fonction routage est bien activée pour les deux protocoles réseau.

sudo sysctl net.ipv4.ip_forward net.ipv6.conf.all.forwarding
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1

2.3. Appliquer une première configuration réseau

Q156.

Comment appliquer les configurations réseau IPv4 et IPv6 à partir de l'unique interface du routeur ?

Consulter la documentation de Netplan pour obtenir les informations sur la configuration des interfaces réseau à l'adresse Netplan documentation.

Il existe plusieurs possibilités pour configurer une interface réseau. Dans le contexte de ces manipulations, on utilise Netplan dans le but de séparer la partie déclarative du moteur de configuration.

C'est systemd-networkd qui joue le rôle de moteur de configuration sur les machines virtuelles utilisées avec ces manipulations.

La configuration par défaut de l'interface enp0s1 doit être éditée et remplacée. Il faut configurer autant de sous-interfaces que de VLANs utilisés.

  • L'interface principale correspond à l'interface “physique” de la machine. Elle est nommée enp0s1 en fonction de l'ordre des adresses des composants raccordés au bus PCI.

  • Une sous-interface doit être créée pour chaque VLAN désigné dans le plan d'adressage.

    Le routeur R1 se distingue des deux autres par son raccordement au VLAN d'infrastructure qui lui donne directement accès à l'Internet.

    Les routeurs R2 et R3 doivent utiliser un accès temporaire à un VLAN sur lequel l'adressage automatique est actif. Le but de cet accès temporaire est de permettre l'installation des paquets nécessaires à la suite des manipulations.

Voici une copie du fichier /etc/netplan/enp0s1.yaml du routeur R1.

network:
    version: 2
    ethernets:
      enp0s1:
        dhcp4: false
        dhcp6: false
        accept-ra: false
        nameservers:
          addresses:
            - 172.16.0.2
            - 2001:678:3fc:3::2

    vlans:
      # Infrastructure VLAN
      enp0s1.360:
        id: 360
        link: enp0s1
        addresses:
          - 192.168.104.130/29
          - 2001:678:3fc:168::82/64
        routes:
          - to: default
            via: 192.168.104.129
          - to: "::/0"
            via: "fe80::168:1"
            on-link: true
      # R1 -> R2
      enp0s1.440:
        id: 440
        link: enp0s1
        addresses:
          - 10.44.0.1/29
          - fe80::1b8:1/64
      # R1 -> R3
      enp0s1.441:
        id: 441
        link: enp0s1
        addresses:
          - 10.44.1.1/29
          - fe80::1b9:1/64

Voici une copie du fichier /etc/netplan/enp0s1.yaml du routeur R2 avec une sous-interface temporaire dans le VLAN 52.

network:
    version: 2
    ethernets:
      enp0s1:
        dhcp4: false
        dhcp6: false
        accept-ra: false
        nameservers:
          addresses:
            - 172.16.0.2
            - 2001:678:3fc:3::2

    vlans:
      # Temporary Internet access
      enp0s1.52:
        id: 52
        link: enp0s1
        dhcp4: true
        dhcp6: false
        accept-ra: true
      # R2 -> R1
      enp0s1.440:
        id: 440
        link: enp0s1
        addresses:
          - 10.44.0.2/29
          - fe80::1b8:2/64
      # R2 -> R3
      enp0s1.442:
        id: 442
        link: enp0s1
        addresses:
          - 10.44.2.2/29
          - fe80::1ba:2/64

Ce deuxième fichier de déclaration de la configuration réseau est pratiquement identique à celui du routeur R3. C'est pourquoi, on ne fournit pas de copie de ce dernier.

Une fois le fichier de configuration en place, il suffit de faire appel à la commande netplan pour appliquer les changements.

sudo netplan apply

Pour vérifier l'état courant de la configuration appliquée, on peut utiliser à nouveau la commande netplan.

sudo netplan status