4. Routeur Hub (bleu)

Le rôle du routeur Hub est d'interconnecter un réseau de collecte opérateur (LAN) qui donne accès à l'Internet et plusieurs réseaux étendus (WAN) de raccordement de sites distants. Le routeur Hub assure aussi la fonction Broadband Remote Access Server (BRAS). C'est la raison pour laquelle il détient les adresses IPv4 et IPv6 à attribuer aux routeurs d'extrémité appelés Spoke.

Le routeur Hub doit aussi gérer l'encapsulation des trames PPP sur un réseau de diffusion Ethernet.

Cette section reprend essentiellement la partie Routeur Hub (bleu) du support Routage inter-VLAN et protocole PPPoE “contexte Cloud“. On doit cependant adapter la configuration des interfaces réseau du routeur Hub en ajoutant un second jeu d'interfaces pour le deuxième site distant.

Q1.

Dans quel fichier sont stockés les paramètres passés au démon pppd lors du lancement du serveur PPPoE ?

Consulter les pages de manuels de l'outil pppoe-server.

C'est le fichier /etc/ppp/pppoe-server-options qui contient la liste des paramètres utilisés lors du dialogue PPP.

Ce fichier contient tous les paramètres communs aux deux démons pppd qui sont lancés via pppoe-server.

Q2.

Comment créer les comptes utilisateurs locaux sur le routeur Hub sachant qu'ils ne sont autorisés ni à se connecter ni à avoir un répertoire personnel ?

Consulter les options de la commande adduser.

Voici un exemple dans le contexte de la maquette.

etu@HubBleu:~$ sudo adduser --disabled-login --no-create-home --force-badname 5p0k3_1
Autorise l'usage de noms d'utilisateur critiquables.
Ajout de l'utilisateur « 5p0k3_1 » ...
Ajout du nouveau groupe « 5p0k3_1 » (1002) ...
Ajout du nouvel utilisateur « 5p0k3_1 » (1002) avec le groupe « 5p0k3_1 » ...
Le répertoire personnel « /home/5p0k3_1 » n'a pas été créé.
Changing the user information for 5p0k3_1
Enter the new value, or press ENTER for the default
        Full Name []: Spoke 1
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Cette information est-elle correcte ? [O/n]

etu@HubBleu:~$ sudo adduser --disabled-login --no-create-home --force-badname 5p0k3_2
Autorise l'usage de noms d'utilisateur critiquables.
Ajout de l'utilisateur « 5p0k3_2 » ...
Ajout du nouveau groupe « 5p0k3_2 » (1003) ...
Ajout du nouvel utilisateur « 5p0k3_2 » (1003) avec le groupe « 5p0k3_2 » ...
Le répertoire personnel « /home/5p0k3_2 » n'a pas été créé.
Changing the user information for 5p0k3_2
Enter the new value, or press ENTER for the default
        Full Name []: Spoke 2
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Cette information est-elle correcte ? [O/n]

Q3.

Dans quel fichier sont stockés les paramètres d'identité et d'authentification utilisés par le protocole CHAP ?

Consulter les pages de manuels du démon pppd à la section AUTHENTICATION.

C'est le fichier /etc/ppp/chap-secrets qui contient les couples login/password utilisés lors de l'authentification.

Q4.

Comment ajouter les authentifiants des deux routeurs Spoke dans le fichier d'authentification CHAP ?

Voici une copie du fichier dans le contexte de la maquette. Seuls les noms d'utilisateur et les mots de passe comptent.

# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
"5p0k3_1"       *               "0r4ng3_1"              *
"5p0k3_2"       *               "0r4ng3_2"              *

Q5.

Relativement au support Routage inter-VLAN et protocole PPPoE “contexte Cloud“, quel paramètre supplémentaire doit être ajouté à la configuration de la commande pppoe-server pour distinguer les échanges entre les deux routeurs Spoke ?

Consulter les options de la commande pppoe-server.

L'option -u permet de désigner une “unité“ qui sert à nommer l'interface. Par exemple, -u 0 correspond à l'interface ppp0.

Q6.

Comment éditer le fichier /etc/network/interfaces pour ouvrir le raccordement des deux sites distants ?

Reprendre la configuration du support Routage inter-VLAN et protocole PPPoE “contexte Cloud“ en la complétant.

  • Ajouter l'option -u suivie du numéro de l'interface ppp utilisée pour la session vers un site distant donné. Ce numéro conditionne l'ajout des routes statiques vers les réseaux de conteneurs.

  • Ajouter une condition spécifique à l'arrêt du processus pppoe-server relatif à un site distant unique. Il ne faut pas que l'arrêt d'une liaison vers un site provoque l'arrêt de toutes les liaisons.

Voici une copie du fichier de configuration réseau système dans le contexte de la maquette.

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto enp0s6
iface enp0s6 inet manual
        up ip link set dev $IFACE up
        down ip link set dev $IFACE down

# ---------- VLAN ROUGE ----------
auto enp0s6.300
iface enp0s6.300 inet static
        address 10.141.0.162/27
        gateway 10.141.0.161
        dns-nameserver 9.9.9.9

iface enp0s6.300 inet6 static
        address 2001:678:3fc:12c::2/64
        gateway 2001:678:3fc:12c::1

# ---------- VLAN VIOLET SPOKE 1 -
auto enp0s6.470
iface enp0s6.470 inet6 static
        address fe80:1d6::1/64

# ---------- VLAN ORANGE SPOKE 1 -
auto enp0s6.471
iface enp0s6.471 inet manual
        up ip link set dev $IFACE up
        up pppoe-server -I $IFACE -C BRAS -L 10.47.1.1 -R 10.47.1.2 -N 1 -u 0
        down kill $(ps aux | egrep "[pppoe]-server.*$IFACE" | tr -s [:blank:] | cut -d ' ' -f 2)
        down ip link set dev $IFACE down

# ---------- VLAN VIOLET SPOKE 2 -
auto enp0s6.472
iface enp0s6.472 inet6 static
        address fe80:1d8::1/64

# ---------- VLAN ORANGE SPOKE 2 -
auto enp0s6.473
iface enp0s6.473 inet manual
        up ip link set dev $IFACE up
        up pppoe-server -I $IFACE -C BRAS -L 10.47.3.1 -R 10.47.3.2 -N 1 -u 1
        down kill $(ps aux | egrep "[pppoe]-server.*$IFACE" | tr -s [:blank:] | cut -d ' ' -f 2)
        down ip link set dev $IFACE down

Q7.

Comment ajouter les routes statiques vers les réseaux locaux IPv4 et IPv6 de chaque site distant lors de l'ouverture de la session PPP propre à un site ?

  • Pour IPv4, il est possible d'utiliser l'adresse IP de l'extrémité de la liaison PPP pour désigner le routeur qui donne accès au réseau local distant. Cette possibilité est intéressante si on ne veut pas dépendre du numéro de l'interface PPP.

    Dans notre cas, l'option -u du démon pppoe-server fixe le numéro d'interface PPP et on peut l'utiliser pour traiter la question.

  • Pour IPv6, la liaison PPP n'utilise que des adresses de lien local générées dynamiquement puisqu'il s'agit d'un réseau de transit entre deux routeurs. Il est donc nécessaire d'utiliser le numéro d'interface pour appliquer la route statique vers le réseau local d'un site donné.

Voici une copie du script exécutable /etc/ppp/ip-up.d/staticroute pour IPv4 qui utilise les adresses d'extrémités de la maquette. Ce choix manque de rigueur dans la mesure où on applique les routes statiques pour tous les sites sans distinguer les sessions PPP.

#!/bin/sh

if [ -z "${CONNECT_TIME}" ]; then
        ip route add 10.0.1.0/24 via 10.47.1.2
        ip route add 10.0.2.0/24 via 10.47.3.2
fi

Voici une copie du script exécutable /etc/ppp/ipv6-up.d/staticroute pour IPv6. Cette fois-ci, on distingue bien la route statique à appliquer en fonction de la session PPP.

#!/bin/sh

if [ -z "${CONNECT_TIME}" ]; then
        case "${PPP_IFACE}" in
                "ppp0")
                        ip -6 route add fda0:7a62:1::/64 dev ${PPP_IFACE}
                        ;;
                "ppp1")
                        ip -6 route add fda0:7a62:2::/64 dev ${PPP_IFACE}
                        ;;
        esac
fi

Q8.

Comment tester la validité des tables de routage IPv4 et IPv6 pour chaque site distant après de l'ouverture de la session PPP ?

Après affichage des tables de routage on peut contacter une adresse IPv4 et une adresse IPv6 d'un conteneur de chaque site distant.

Attention ! Pour qu'un conteneur soit joignable, il faut qu'il ait été créé et configuré. Si ce n'est pas encore le cas au moment des tests, on doit se contenter des adresses du commutateur virtuel. Ce dernier test présente un gros défaut : il ne qualifie pas la fonction routage du routeur Spoke.

Voici une série de copie d'écran valables dans le contexte de la maquette.

On commence par les tables de routages.

$ ip route ls
default via 10.141.0.161 dev enp0s6.300 onlink
10.0.1.0/24 via 10.47.1.2 dev ppp0
10.0.2.0/24 via 10.47.3.2 dev ppp1
10.47.1.2 dev ppp0 proto kernel scope link src 10.47.1.1
10.47.3.2 dev ppp1 proto kernel scope link src 10.47.3.1
10.141.0.160/27 dev enp0s6.300 proto kernel scope link src 10.141.0.162
$ ip -6 route ls proto 3
fda0:7a62:1::/64 dev ppp0 metric 1024 pref medium
fda0:7a62:2::/64 dev ppp1 metric 1024 pref medium
fe80::/10 dev ppp0 metric 1 pref medium
fe80::/10 dev ppp1 metric 1 pref medium
default via 2001:678:3fc:12c::1 dev enp0s6.300 metric 1024 onlink pref medium

On débute les tests ICMP par les adresses de passerelles des réseaux locaux des sites distants.

etu@HubBleu:~$ ping -q -c2 10.0.1.1
PING 10.0.1.1 (10.0.1.1) 56(84) bytes of data.

--- 10.0.1.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 0.744/1.025/1.307/0.281 ms
etu@HubBleu:~$ ping -q -c2 10.0.2.1
PING 10.0.2.1 (10.0.2.1) 56(84) bytes of data.

--- 10.0.2.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.672/0.953/1.235/0.281 ms
etu@HubBleu:~$ ping -q -c2 fda0:7a62:1::1
PING fda0:7a62:1::1(fda0:7a62:1::1) 56 data bytes

--- fda0:7a62:1::1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.767/0.923/1.080/0.156 ms
etu@HubBleu:~$ ping -q -c2 fda0:7a62:2::1
PING fda0:7a62:2::1(fda0:7a62:2::1) 56 data bytes

--- fda0:7a62:2::1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.775/0.973/1.172/0.198 ms

Enfin, on teste la connectivité réseau avec les adresses d'un conteneur de chaque site distant.

etu@HubBleu:~$ ping -q -c2 10.0.1.10
PING 10.0.1.10 (10.0.1.10) 56(84) bytes of data.

--- 10.0.1.10 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 0.776/1.211/1.647/0.435 ms

etu@HubBleu:~$ ping -q -c2 fda0:7a62:1:0:216:3eff:feda:e1a
PING fda0:7a62:1:0:216:3eff:feda:e1a(fda0:7a62:1:0:216:3eff:feda:e1a) 56 data bytes

--- fda0:7a62:1:0:216:3eff:feda:e1a ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.824/1.527/2.230/0.703 ms
etu@HubBleu:~$ ping -q -c2 10.0.2.10
PING 10.0.2.10 (10.0.2.10) 56(84) bytes of data.

--- 10.0.2.10 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.865/1.465/2.066/0.600 ms

etu@HubBleu:~$ ping -q -c2 fda0:7a62:2:0:216:3eff:feda:e1a
PING fda0:7a62:2:0:216:3eff:feda:e1a(fda0:7a62:2:0:216:3eff:feda:e1a) 56 data bytes

--- fda0:7a62:2:0:216:3eff:feda:e1a ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.698/1.350/2.002/0.652 ms