3. Installer le paquet frr et lancer les démons de routage OSPF

La suite de démons de routage FRRouting couvre la totalité des protocoles de routage dynamiques. Le paquet FRR fournit autant de processus que de protocoles. Ici, on se concentre sur le protocole OSPF. Voici une représentation de l'organisation des démons actifs dans notre contexte.

Synoptique des démons FRRouting

Les manipulations de ce support s'appuient sur la documentation du projet : FRRouting User Guide

[Note] Note

Au moment de la rédaction de ce document, FRRouting ne permet pas d’utiliser simultanément les familles d’adresses IPv4 et IPv6 avec un seul démon. C’est pourquoi nous devons activer et configurer deux démons distincts : ospfd pour IPv4 et ospf6d pour IPv6.

[Important] Important

Les questions de cette section doivent être traitées sur les trois routeurs de la topologie étudiée.

Q157.

Comment installer le paquet frr à partir du dépôt du site FRRouting Project ?

Pour installer le paquet FRR, on doit ajouter un nouveau dépôt au système.

On commence par ajouter la clé de signature des paquets à la configuration du gestionnaire.

sudo apt -y install curl gpg
curl -s https://deb.frrouting.org/frr/keys.asc | \
sudo gpg -o /usr/share/keyrings/frr-keyring.gpg --dearmor

On créé ensuite un nouveau fichier de liste de sources de paquets qui fait référence à cette clé de signature.

echo "deb [signed-by=/usr/share/keyrings/frr-keyring.gpg] \
https://deb.frrouting.org/frr bookworm frr-stable" | \
sudo tee /etc/apt/sources.list.d/frr.list

Avant de lancer l'installation des paquets de la suite FRRouting, on doit mettre à jour le catalogue local.

sudo apt update
sudo apt -y install frr frr-pythontools

On peut afficher les informations sur le paquet frr.

apt show ^frr$

Sans configuration particulière, les services zebra et staticd sont lancés. Aucun protocole de routage dynamique n'est activé.

systemctl status frr
● frr.service - FRRouting
     Loaded: loaded (/usr/lib/systemd/system/frr.service; enabled; preset: enabled)
     Active: active (running) since Sat 2024-11-02 16:17:42 CET; 5min ago
 Invocation: a1d3f0e79647471bb1a17069f3f4c69a
       Docs: https://frrouting.readthedocs.io/en/latest/setup.html
    Process: 2098 ExecStart=/usr/lib/frr/frrinit.sh start (code=exited, status=0/SUCCESS)
   Main PID: 2107 (watchfrr)
     Status: "FRR Operational"
      Tasks: 8 (limit: 1032)
     Memory: 14.9M (peak: 28.2M)
        CPU: 416ms
     CGroup: /system.slice/frr.service
             ├─2107 /usr/lib/frr/watchfrr -d -F traditional zebra mgmtd staticd
             ├─2117 /usr/lib/frr/zebra -d -F traditional -A 127.0.0.1 -s 90000000
             ├─2122 /usr/lib/frr/mgmtd -d -F traditional -A 127.0.0.1
             └─2124 /usr/lib/frr/staticd -d -F traditional -A 127.0.0.1

nov. 02 16:17:42 R2 staticd[2124]: [VTVCM-Y2NW3] Configuration Read in Took: 00:00:00
nov. 02 16:17:42 R2 frrinit.sh[2144]: [2144|staticd] done
nov. 02 16:17:42 R2 zebra[2117]: [VTVCM-Y2NW3] Configuration Read in Took: 00:00:00
nov. 02 16:17:42 R2 frrinit.sh[2128]: [2128|zebra] done
nov. 02 16:17:42 R2 watchfrr[2107]: [QDG3Y-BY5TN] zebra state -> up : connect succeeded
nov. 02 16:17:42 R2 watchfrr[2107]: [QDG3Y-BY5TN] mgmtd state -> up : connect succeeded
nov. 02 16:17:42 R2 watchfrr[2107]: [QDG3Y-BY5TN] staticd state -> up : connect succeeded
nov. 02 16:17:42 R2 watchfrr[2107]: [KWE5Q-QNGFC] all daemons up, doing startup-complete notify
nov. 02 16:17:42 R2 frrinit.sh[2098]: Started watchfrr.
nov. 02 16:17:42 R2 systemd[1]: Started frr.service - FRRouting.

Q158.

Comment vérifier que la console unifiée du service frr est active ?

Afficher le contenu du fichier /etc/frr/vtysh.conf et vérifier qu'il contient l'entrée service integrated-vtysh-config.

L'accès à cette console unifiée est important puisqu'il permet d'utiliser une console unique pour les trois démons qui sont utilisés dans la suite des manipulations : zebra, ospfd et ospf6d.

Voici un exemple pour un routeur de la maquette.

sudo grep "service integrated-vtysh-config" /etc/frr/vtysh.conf
service integrated-vtysh-config

Q159.

Comment ajouter l'utilisateur etu aux groupes frr et frrvty ?

Utiliser la commande adduser.

Une fois que l'utilisateur appartient à ces groupes, il a un accès direct à la console de configuration des protocoles actifs.

Comme dans les autres travaux pratiques de la série, on utilise une boucle.

for grp in frr frrvty
do
    sudo adduser etu $grp
done

Il ne faut pas oublier de déconnecter/reconnecter l'utilisateur pour bénéficier de la nouvelle attribution de groupe.

On vérifie l'appartenance aux groupes avec la commande groups.

groups
etu adm sudo users frrvty frr

Q160.

Comment activer les deux démons des protocoles OSPFv2 et OSPFv3 ?

Consulter le fichier de configuration : /etc/frr/daemons.

Il faut remplacer les clés no en yes pour les démons des deux versions du protocole OSPF.

sudo sed -i 's/ospfd=no/ospfd=yes/' /etc/frr/daemons
sudo sed -i 's/ospf6d=no/ospf6d=yes/' /etc/frr/daemons
sudo systemctl restart frr

On peut alors afficher l'état du service frr et vérifier que les nouveaux démons de routage dynamique OSPF sont bien activés.

systemctl status frr
● frr.service - FRRouting
     Loaded: loaded (/usr/lib/systemd/system/frr.service; enabled; preset: enabled)
     Active: active (running) since Sat 2024-11-02 17:40:32 CET; 6s ago
 Invocation: 84e33888211f45f297c9135cace76751
       Docs: https://frrouting.readthedocs.io/en/latest/setup.html
    Process: 2467 ExecStart=/usr/lib/frr/frrinit.sh start (code=exited, status=0/SUCCESS)
   Main PID: 2476 (watchfrr)
     Status: "FRR Operational"
      Tasks: 12 (limit: 1032)
     Memory: 23M (peak: 34.8M)
        CPU: 380ms
     CGroup: /system.slice/frr.service
             ├─2476 /usr/lib/frr/watchfrr -d -F traditional zebra mgmtd ospfd ospf6d staticd
             ├─2488 /usr/lib/frr/zebra -d -F traditional -A 127.0.0.1 -s 90000000
             ├─2493 /usr/lib/frr/mgmtd -d -F traditional -A 127.0.0.1
             ├─2495 /usr/lib/frr/ospfd -d -F traditional -A 127.0.0.1
             ├─2498 /usr/lib/frr/ospf6d -d -F traditional -A ::1
             └─2501 /usr/lib/frr/staticd -d -F traditional -A 127.0.0.1

nov. 02 17:40:32 R2 mgmtd[2493]: [VTVCM-Y2NW3] Configuration Read in Took: 00:00:00
nov. 02 17:40:32 R2 frrinit.sh[2504]: [2504|mgmtd] done
nov. 02 17:40:32 R2 watchfrr[2476]: [QDG3Y-BY5TN] zebra state -> up : connect succeeded
nov. 02 17:40:32 R2 watchfrr[2476]: [QDG3Y-BY5TN] mgmtd state -> up : connect succeeded
nov. 02 17:40:32 R2 watchfrr[2476]: [QDG3Y-BY5TN] ospfd state -> up : connect succeeded
nov. 02 17:40:32 R2 watchfrr[2476]: [QDG3Y-BY5TN] ospf6d state -> up : connect succeeded
nov. 02 17:40:32 R2 watchfrr[2476]: [QDG3Y-BY5TN] staticd state -> up : connect succeeded
nov. 02 17:40:32 R2 watchfrr[2476]: [KWE5Q-QNGFC] all daemons up, doing startup-complete notify
nov. 02 17:40:32 R2 frrinit.sh[2467]: Started watchfrr.
nov. 02 17:40:32 R2 systemd[1]: Started frr.service - FRRouting.

On peut aussi lister les démons actifs à partir de la console du service.

vtysh
Hello, this is FRRouting (version 10.1.1).
Copyright 1996-2005 Kunihiro Ishiguro, et al.

R2# sh daemons
 mgmtd zebra ospfd ospf6d watchfrr staticd

Q161.

Comment désactiver les sous-interfaces d'accès temporaire à Internet pour les routeurs R2 et R3 ?

Il existe au moins deux possibilités.

  • Utiliser directement la commande ip pour désactiver une sous-interface au niveau liaison.

  • Éditer le fichier de déclaration et commenter tous les paramètre de la sous-interface temporaire.

Si on utilise la commande ip, l'interface sera bien désactivée mais elle apparaîtra à nouveau lors du redémarrage du routeur virtuel.

sudo ip link set enp0s1.52 down

Si on édite le fichier de déclaration en commentant les paramètres de la sous-interface, on s'assure qu'elle n'apparaîtra plus, même lors d'un redémarrage du routeur. Voici un exemple pour le routeur R3.

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
      # R3 -> R1
      enp0s1.440:
        id: 440
        link: enp0s1
        addresses:
          - 10.44.0.3/29
          - fe80::1b8:3/64
      # R3 -> R2
      enp0s1.442:
        id: 442
        link: enp0s1
        addresses:
          - 10.44.2.3/29
          - fe80::1ba:3/64

Une fois l'ensemble des opérations de cette section réalisées, chaque routeur dispose des outils pour mettre en œuvre la topologie physique et ensuite les protocoles de routage dynamique OSPF.