3. 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.

Comment activer la fonction routage du sous-système réseau du noyau ?

Reprendre les mêmes actions que dans le support Routage inter-VLAN et protocole PPPoE “contexte Cloud“.

Il faut éditer le fichier /etc/sysctl.conf et appliquer les modifications.

sudo sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf
sudo sed -i 's/#net.ipv6.conf.all.forwarding=1/net.ipv6.conf.all.forwarding=1/' /etc/sysctl.conf
sudo sysctl --system

Q2.

Comment activer la traduction d'adresses sources pour tous les flux réseaux sortants sur le VLAN rouge ?

Reprendre les mêmes actions que dans le support Routage inter-VLAN et protocole PPPoE “contexte Cloud“.

Il faut créer une règle par protocole de couche réseau et sauvegarder ces deux règles dans les fichiers prévus pour la persistance au redémarrage.

  • On débute par l'installation des paquets nécessaires au filtrage réseau et à la sauvegarde des règles.

    sudo apt -y install iptables iptables-persistent
  • On active la traduction des adresses source IPv4.

    sudo iptables -t nat -A POSTROUTING -o enp0s1.360 -j MASQUERADE
    sudo sh -c "iptables-save >/etc/iptables/rules.v4"
  • On applique le même traitement pour IPv6.

    sudo ip6tables -t nat -A POSTROUTING -o enp0s1.360 -j MASQUERADE
    sudo sh -c "ip6tables-save >/etc/iptables/rules.v6"

Q3.

Quel est le paquet qui fournit le démon de gestion du dialogue PPPoE ?

Dans un réseau de diffusion, il est nécessaire d'identifier les deux extrémités qui vont établir une session PPP.

C'est le paquet pppoe. Il a pour dépendance le paquet ppp.

sudo apt -y install pppoe

Q4.

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. Voici comment créer le fichier.

cat << EOF | sudo tee /etc/ppp/pppoe-server-options
login
require-chap
nodefaultroute
ms-dns 172.16.0.2
+ipv6
EOF

Q5.

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.

sudo adduser --gecos 'Spoke 1' --disabled-login --no-create-home --force-badname 5p0k3_1
sudo adduser --gecos 'Spoke 2' --disabled-login --no-create-home --force-badname 5p0k3_2

Q6.

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.

Q7.

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"              *

Q8.

Quel paramètre supplémentaire doit être ajouté à la configuration de la commande pppoe-server pour distinguer les échanges entre les deux routeurs Spoke ?

Relativement au support Routage inter-VLAN et protocole PPPoE “contexte Cloud“, il est essentiel de définir correctement les routes statiques vers les réseaux d'extrémité de chaque routeur 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.

Q9.

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 enp0s1
iface enp0s1 inet manual
        up ip link set dev $IFACE up
        down ip link set dev $IFACE down

# ---------- VLAN ROUGE ----------
auto enp0s1.360
iface enp0s1.360 inet static
        address 192.168.104.130/29
        gateway 192.168.104.129
        dns-nameserver 172.16.0.2

iface enp0s1.360 inet6 static
        address 2001:678:3fc:168::2/64
        gateway fe80:168::1

# ---------- VLAN VIOLET SPOKE 1 -
auto enp0s1.440
iface enp0s1.440 inet6 static
        address fe80:1b8::1/64

# ---------- VLAN ORANGE SPOKE 1 -
auto enp0s1.441
iface enp0s1.441 inet manual
        up ip link set dev $IFACE up
        up pppoe-server -I $IFACE -C BRAS -L 10.44.1.1 -R 10.44.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 enp0s1.442
iface enp0s1.442 inet6 static
        address fe80:1ba::1/64

# ---------- VLAN ORANGE SPOKE 2 -
auto enp0s1.443
iface enp0s1.443 inet manual
        up ip link set dev $IFACE up
        up pppoe-server -I $IFACE -C BRaS -L 10.44.3.1 -R 10.44.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

Q10.

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 ?

  • L'utilisation de l'option -u du démon pppoe-server fixe le numéro d'interface PPP et on peut l'utiliser pour traiter cette 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 comment créer un script exécutable /etc/ppp/ip-up.d/staticroute pour IPv4 qui utilise les adresses d'extrémités de la maquette.

cat << 'EOF' | sudo tee /etc/ppp/ip-up.d/staticroute
#!/bin/bash

if [ -z "${CONNECT_TIME}" ]; then
        case "${PPP_IFACE}" in
                "ppp0")
                        ip route add 10.0.10.0/24 dev ${PPP_IFACE}
                        ;;
                "ppp1")
                        ip route add 10.0.20.0/24 dev ${PPP_IFACE}
                        ;;
        esac
fi
EOF
sudo chmod +x /etc/ppp/ip-up.d/staticroute

Voici comment créer un 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.

cat << 'EOF' | sudo tee /etc/ppp/ipv6-up.d/staticroute
#!/bin/bash

if [ -z "${CONNECT_TIME}" ]; then
        case "${PPP_IFACE}" in
                "ppp0")
                        ip -6 route add fda0:7a62:a::/64 dev ${PPP_IFACE}
                        ;;
                "ppp1")
                        ip -6 route add fda0:7a62:14::/64 dev ${PPP_IFACE}
                        ;;
        esac
fi
EOF
sudo chmod +x /etc/ppp/ipv6-up.d/staticroute