Dans le scénario défini dans la Section 2, « Topologie Hub & Spoke - Protocole PPPoE », un routeur de site d'extrémité ou Spoke ne peut accéder aux autres réseaux que via le routeur Hub. Son interface WAN joue donc le rôle de route par défaut pour le réseau local des hôtes hébergé sur un site distant.
Dans le contexte de ces manipulations, le réseau local de site est représenté par des conteneurs LXD raccordés à un commutateur virtuel.
Cette section, comme la précédente, reprend la partie Routeur Spoke (vert) du support Routage inter-VLAN et protocole PPPoE “contexte Cloud“.
Les routeurs Spoke utilisent un
démon pppd
dans le VLAN Data
(Orange)
pour établir une session PPP
avec le routeur Hub.
Avant d'aborder les questions ci-dessous, il faut s'assurer que :
-
Le routage est activé.
-
Le paquet
ppp
est installé. -
Le fichier
/etc/ppp/chap-secrets
contenant les authentifiants pour l'établissement de la session PPP est complété. -
Le fichier
/etc/ppp/peers/pppoe-provider
de définition du profil de session PPP est créé.Attention au nom d'utilisateur qui doit correspondre à l'entrée du fichier
/etc/ppp/chap-secrets
!Attention au numéro de VLAN de la sous-interface qui doit désigner la bon côté du triangle !
-
Le fichier
/etc/network/interfaces
doit contenir une définition d'interface qui appelle le profil de sessionpppoe-provider
.
Q11. |
Quels sont les messages des journaux système qui montrent que la session PPP a bien été établie ? Après avoir consulté la page Point-to-Point Protocol repérer les messages relatifs aux deux sous-couches LCP et NCP du protocole PPP. |
sur le routeur Spoke-1 de la maquette, on relève les messages suivants à l'aide de l'une des deux commandes suivantes : grep -i ppp /var/log/syslog journalctl /usr/sbin/pppd
|
|
Q12. |
Comment installer et configurer le commutateur virtuel qui permet de raccorder les conteneurs dans le réseau dédié (vert) ? Reprendre les traitements réalisés dans la section sur l'activation du commutateur virtuel du support Routage inter-VLAN et protocole PPPoE “contexte Cloud“. |
Pour traiter cette question, il faut :
On obtient les résultats suivants pour le routeur Spoke-1 avec le VLAN numéro 10.
|
|
Q13. |
Comment configurer le gestionnaire de conteneur LXD pour que tous les conteneurs soient automatiquement placés dans le bon VLAN avec un adressage IPv6 de type SLAAC et un adressage IPv4 automatisé à l'aide de scripts ? Reprendre les traitements réalisés dans les sections sur l'installation et la configuration du gestionnaire de conteneur LXD du support Routage inter-VLAN et protocole PPPoE “contexte Cloud“. |
Pour traiter cette question, il faut :
Pour valider le résultat, on affiche le profil de configuration par défaut des conteneurs qui montre que le raccordement au commutateur se fera dans le bon VLAN. lxc profile show default config: {} description: Default LXD profile devices: eth0: name: eth0 nictype: bridged parent: sw-vlan10 type: nic root: path: / pool: default type: disk name: default used_by: [] Pour l'adressage automatique IPv6, on doit se contenter de l'état du service à ce stade. systemctl status radvd
• radvd.service - Router advertisement daemon for IPv6
Loaded: loaded (/lib/systemd/system/radvd.service; enabled; preset: enabled)
Active: active (running) since Sat 2022-10-22 15:15:00 CEST; 9s ago
Docs: man:radvd(8)
Process: 5022 ExecStartPre=/usr/sbin/radvd --logmethod stderr_clean --configtest (code=exited, status=0/SUCCESS)
Process: 5023 ExecStart=/usr/sbin/radvd --logmethod stderr_clean (code=exited, status=0/SUCCESS)
Main PID: 5024 (radvd)
Tasks: 2 (limit: 1114)
Memory: 516.0K
CPU: 30ms
CGroup: /system.slice/radvd.service
├─5024 /usr/sbin/radvd --logmethod stderr_clean
└─5025 /usr/sbin/radvd --logmethod stderr_clean
oct. 22 15:15:00 Spoke-1 systemd[1]: Starting Router advertisement daemon for IPv6...
oct. 22 15:15:00 Spoke-1 radvd[5022]: config file, /etc/radvd.conf, syntax ok
oct. 22 15:15:00 Spoke-1 radvd[5023]: version 2.18 started
oct. 22 15:15:00 Spoke-1 systemd[1]: Started Router advertisement daemon for IPv6. |
|
Q14. |
Comment lancer la création et relever les adresses utilisées par les conteneurs LXD après installation et configuration de 3 conteneurs dans le VLAN vert ? Là encore on reprend les traitements réalisés dans le support Routage inter-VLAN et protocole PPPoE “contexte Cloud“. |
Après exécution de la boucle de création des conteneurs, voici une copie du premier résultat avec adressage IPv6 uniquement. lxc ls +------+---------+------+-----------------------------------------+-----------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +------+---------+------+-----------------------------------------+-----------+-----------+ | c0 | RUNNING | | fda0:7a62:a:0:216:3eff:feb6:f7fd (eth0) | CONTAINER | 0 | +------+---------+------+-----------------------------------------+-----------+-----------+ | c1 | RUNNING | | fda0:7a62:a:0:216:3eff:fe91:e2e2 (eth0) | CONTAINER | 0 | +------+---------+------+-----------------------------------------+-----------+-----------+ | c2 | RUNNING | | fda0:7a62:a:0:216:3eff:feb0:ba39 (eth0) | CONTAINER | 0 | +------+---------+------+-----------------------------------------+-----------+-----------+ Pour compléter l'adressage, on exécute la boucle de création des
fichiers for i in {0..2} do echo ">>>>>>>>>>>>>>>>> c$i" config=$(cat << EOF [Match] Name=eth0 [Network] DHCP=false Address=10.0.10.$((i + 10))/24 Address=fda0:7a62:a::$(printf "%x" $((i + 10)))/64 Gateway=10.0.10.1 DNS=172.16.0.2 EOF ) lxc exec c$i -- bash -c "echo \"${config}\" | tee /etc/systemd/network/eth0.network" lxc exec c$i -- systemctl restart systemd-networkd done L'adressage complet donne le résultat suivant : lxc ls +------+---------+-------------------+-----------------------------------------+-----------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +------+---------+-------------------+-----------------------------------------+-----------+-----------+ | c0 | RUNNING | 10.0.10.10 (eth0) | fda0:7a62:a::a (eth0) | CONTAINER | 0 | | | | | fda0:7a62:a:0:216:3eff:feb6:f7fd (eth0) | | | +------+---------+-------------------+-----------------------------------------+-----------+-----------+ | c1 | RUNNING | 10.0.10.11 (eth0) | fda0:7a62:a::b (eth0) | CONTAINER | 0 | | | | | fda0:7a62:a:0:216:3eff:fe91:e2e2 (eth0) | | | +------+---------+-------------------+-----------------------------------------+-----------+-----------+ | c2 | RUNNING | 10.0.10.12 (eth0) | fda0:7a62:a::c (eth0) | CONTAINER | 0 | | | | | fda0:7a62:a:0:216:3eff:feb0:ba39 (eth0) | | | +------+---------+-------------------+-----------------------------------------+-----------+-----------+ On peut maintenant lancer des boucles de tests ICMP depuis les conteneurs. for i in {0..2} do echo ">>>>>>>>>>>>>>>>> c$i" ping -q -c2 9.9.9.9 done |
|
Q15. |
Quelles sont les opérations à effectuer pour installer un service Web dans chaque conteneur ? Une fois l'installation du service effectuée, comment vérifier que ce service est bien en écoute ? Installer le paquet nginx dans chaque conteneur et donner la liste des ports en écoute dans chaque conteneur. |
On reprend l'exécution d'une boucle qui réalise les mêmes actions dans chaque conteneur. for i in {0..2} do echo ">>>>>>>>>>>>>>>>> c$i" lxc exec c$i -- apt -y update lxc exec c$i -- apt -y full-upgrade lxc exec c$i -- apt -y install nginx lxc exec c$i -- apt clean done Dans chaque conteneur, le port for i in {0..2} do echo ">>>>>>>>>>>>>>>>> c$i" lxc exec c$i -- ss -at '( dport = :http or sport = :http )'; done Voici un exemple de résultat. >>>>>>>>>>>>>>>>> c0 State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 511 0.0.0.0:http 0.0.0.0:* LISTEN 0 511 [::]:http [::]:* >>>>>>>>>>>>>>>>> c1 State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 511 0.0.0.0:http 0.0.0.0:* LISTEN 0 511 [::]:http [::]:* >>>>>>>>>>>>>>>>> c2 State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 511 0.0.0.0:http 0.0.0.0:* LISTEN 0 511 [::]:http [::]:* |
|
Q16. |
Comment valider l'accès à ces services Web à partir du routeur Spoke ? Il s'agit de faire un test au niveau de la couche application. À la console, les deux outils adaptés sont wget et curl. |
Voici un exemple de test pour chaque protocole de la couche réseau avec wget dans le contexte de la maquette. for addr in {10..12} do wget -O /dev/null http://10.0.10.$addr 2>&1 | grep "HTTP " done requête HTTP transmise, en attente de la réponse… 200 OK requête HTTP transmise, en attente de la réponse… 200 OK requête HTTP transmise, en attente de la réponse… 200 OK for addr in {10..12} do wget -O /dev/null http://[fda0:7a62:a::$(printf "%x" $addr)] 2>&1 | grep "HTTP " done requête HTTP transmise, en attente de la réponse… 200 OK requête HTTP transmise, en attente de la réponse… 200 OK requête HTTP transmise, en attente de la réponse… 200 OK |