MFormations
Modern Network Engineering

Chapitre 17

17 - Exercices Pratiques

17 - Exercices Pratiques

Cours 17 : Exercices Pratiques d'Ingénierie Réseau

Introduction

Ce chapitre présente 40 exercices pratiques qui couvrent l'ensemble des compétences essentielles d'un ingénieur réseau moderne. Les exercices sont organisés par difficulté croissante et par thématique. Chaque exercice est conçu pour être réalisé sur un environnement de simulation (GNS3, EVE-NG) ou sur des machines réelles (Linux, Docker, Kubernetes).

Objectifs d'Apprentissage

À la fin de ce chapitre, vous serez capable de :

  • Calculer et planifier des schémas d'adressage IPv4/IPv6 complexes
  • Configurer OSPF et BGP dans des topologies multi-zones
  • Déployer des VLANs et VXLANs avec EVPN
  • Mettre en place et sécuriser un serveur DNS
  • Écrire des règles iptables/nftables avancées
  • Déployer des tunnels VPN WireGuard
  • Configurer le réseau Docker et Kubernetes
  • Implémenter des politiques Cilium eBPF
  • Analyser le trafic réseau avec Wireshark

Partie 1 : Subnetting (Exercices 1-6)

Exercice 1 : Calculs CIDR de Base

Niveau : Débutant | Durée : 20 min | Prérequis : aucun

Énoncé : Vous disposez du bloc 192.168.10.0/24. Divisez-le en 4 sous-réseaux de taille égale. Pour chaque sous-réseau, donnez :

  • L'adresse réseau
  • Le masque CIDR
  • La première et dernière adresse utilisable
  • L'adresse de broadcast

Rédigez les réponses dans un tableau.

Exercice 2 : VLSM (Variable Length Subnet Mask)

Niveau : Débutant | Durée : 30 min | Prérequis : CIDR

Énoncé : Vous gérez le réseau 10.0.0.0/24 pour un petit bureau avec les besoins suivants :

  • Service IT : 50 hôtes
  • Service RH : 20 hôtes
  • Service Comptabilité : 10 hôtes
  • Liaison inter-sites : 2 adresses

Utilisez VLSM pour allouer les sous-réseaux de manière optimale. Montrez le plan d'adressage complet.

Exercice 3 : Supernetting et Agrégation de Routes

Niveau : Débutant | Durée : 25 min

Énoncé : Vous avez 4 réseaux à annoncer à votre FAI : 172.16.0.0/24, 172.16.1.0/24, 172.16.2.0/24, 172.16.3.0/24. Calculez la route agrégée. Vérifiez qu'aucun réseau extérieur n'est inclus dans l'agrégat. Proposez la route summarisée.

Exercice 4 : Subnetting IPv6

Niveau : Débutant | Durée : 25 min

Énoncé : Votre FAI vous attribue le préfixe 2001:db8:abcd::/48. Vous devez créer 16 sous-réseaux pour vos départements. Donnez le masque, la plage de chaque sous-réseau, et l'adresse IPv6 du premier hôte de chaque sous-réseau. Expliquez la différence avec le subnetting IPv4.

Exercice 5 : Plan d'Adressage pour Topologie Hiérarchique

Niveau : Intermédiaire | Durée : 40 min

Énoncé : Concevez un plan d'adressage complet pour une entreprise avec :

  • 3 sites (siège, datacenter, agence)
  • 5 VLANs par site (administration, production, DMZ, VoIP, management)
  • Interconnexion WAN en /30
  • Préfixe global : 10.0.0.0/8

Produisez un tableau complet avec site, VLAN, réseau, masque, gateway, et plage DHCP.

Exercice 6 : Calcul de Tables de Routage par Subnetting

Niveau : Intermédiaire | Durée : 35 min

Énoncé : Soit le réseau 172.20.0.0/16. Divisez-le pour créer :

  • 8 sous-réseaux de taille égale (A-H)
  • Chaque sous-réseau A-D contient 4 sous-sous-réseaux
  • Établissez la table de routage complète d'un routeur central vers tous les sous-réseaux

Partie 2 : Routage OSPF et BGP (Exercices 7-13)

Exercice 7 : Configuration OSPF Mono-Zone

Niveau : Débutant | Durée : 30 min

Énoncé : Trois routeurs R1, R2, R3 sont interconnectés en triangle :

  • R1-R2 : 10.0.12.0/30
  • R2-R3 : 10.0.23.0/30
  • R3-R1 : 10.0.31.0/30
  • Loopback R1 : 1.1.1.1/32, R2 : 2.2.2.2/32, R3 : 3.3.3.3/32

Configurez OSPF en zone 0. Vérifiez la convergence et la table de routage. Montrez les commandes de configuration et de vérification.

Exercice 8 : OSPF Multi-Zones avec Redistribution

Niveau : Intermédiaire | Durée : 40 min

Énoncé : Créez une topologie avec 4 routeurs répartis en 3 zones OSPF :

  • Area 0 : R1, R2 (Backbone)
  • Area 1 : R2, R3 (Stub)
  • Area 2 : R1, R4 (NSSA)

Configurez les types de zones appropriés. Redistribuez une route statique dans la NSSA. Vérifiez les LSDB et les routes.

Exercice 9 : OSPF Authentication et Optimisation

Niveau : Intermédiaire | Durée : 35 min

Énoncé : Sur la topologie de l'exercice 7, ajoutez :

  • Authentification MD5 sur tous les adjacences OSPF
  • Modification des timers hello/dead (5s/15s sur les liens rapides)
  • Configuration d'interfaces passives
  • Ajustement de cost sur les liens

Montrez les configurations et les vérifications.

Exercice 10 : Configuration BGP eBGP de Base

Niveau : Débutant | Durée : 30 min

Énoncé : Deux FAI s'interconnectent :

  • AS 64501 : R1 (192.0.2.1/30) annonce 203.0.113.0/24
  • AS 64502 : R2 (192.0.2.2/30) annonce 198.51.100.0/24

Configurez la session eBGP entre R1 et R2. Utilisez les loopbacks pour la stabilité (update-source). Vérifiez les routes reçues et annoncées.

Exercice 11 : BGP iBGP et Route Reflector

Niveau : Intermédiaire | Durée : 45 min

Énoncé : Un AS 65000 contient 4 routeurs en full mesh :

  • RR (Route Reflector) : R1
  • Clients : R2, R3, R4
  • R1 est connecté à l'extérieur (eBGP)

Configurez :

  • iBGP avec R1 comme route reflector
  • Les clients en client-to-client reflection
  • Vérifiez que R2 reçoit les routes de R3 via R1

Exercice 12 : BGP Communities et Path Manipulation

Niveau : Avancé | Durée : 50 min

Énoncé : Configurez les BGP communities pour influencer le routage :

  • AS 65001 : réseau 203.0.113.0/24
  • Créez 3 communautés : NO_EXPORT, LOCAL_PREF (100/200), PREPEND
  • Appliquez des route-maps pour :
    • Marquer les routes client avec community
    • Modifier LOCAL_PREF basé sur la communauté
    • Ajouter des AS path prepend

Montrez les configurations route-map, les verify commands.

Exercice 13 : Redistribution OSPF-BGP et Filtrage

Niveau : Avancé | Durée : 60 min

Énoncé : Scénario hybride OSPF + BGP :

  • OSPF zone 0 : R1, R2 (réseau interne 10.0.0.0/8)
  • BGP AS 65000 : R1 avec FAI
  • R1 redistribue BGP dans OSPF et OSPF dans BGP
  • Ajoutez un prefix-list pour filtrer :
    • Routes privées vers l'extérieur
    • Routes BGP par défaut dans OSPF
  • Vérifiez les routes et le path selection

Partie 3 : VLAN et VXLAN (Exercices 14-18)

Exercice 14 : Configuration VLANs 802.1Q

Niveau : Débutant | Durée : 25 min

Énoncé : Configurez 3 VLANs sur un switch :

  • VLAN 10 : "Clients" (192.168.10.0/24)
  • VLAN 20 : "Serveurs" (192.168.20.0/24)
  • VLAN 30 : "DMZ" (192.168.30.0/24)

Configurez les ports d'accès et le trunk entre les switches. Ajoutez un routeur-on-a-stick pour l'inter-VLAN routing. Montrez la configuration et la vérification.

Exercice 15 : STP et RSTP

Niveau : Intermédiaire | Durée : 35 min

Énoncé : Topologie en anneau avec 3 switches :

  • SW1-SW2, SW2-SW3, SW3-SW1 (trunks)
  • Configurez STP, puis migrez vers RSTP
  • Modifiez les priorités pour que SW1 soit root bridge
  • Vérifiez l'état des ports (blocking/forwarding)
  • Testez la convergence après coupure de lien

Exercice 16 : VXLAN avec Configuration Manuelle

Niveau : Avancé | Durée : 50 min

Énoncé : Déployez VXLAN entre deux hôtes Linux :

  • Host1 (VTEP1) : 10.0.1.1/24, VNI 100
  • Host2 (VTEP2) : 10.0.2.1/24, VNI 100
  • Underlay IP : 192.168.10.0/24
  • Configurez les VXLAN interfaces avec iproute2
  • Vérifiez la connectivité overlay et l'encapsulation avec tcpdump

Exercice 17 : EVPN-VXLAN avec FRRouting

Niveau : Avancé | Durée : 60 min

Énoncé : Déployez EVPN VXLAN avec FRRouting :

  • 2 VTEPs avec FRR configuré en EVPN
  • Type-2 routes (MAC/IP advertisement)
  • Type-3 routes (IMET pour BUM traffic)
  • VNI 100 : VLAN 100 sur chaque VTEP
  • Vérifiez les EVPN routes et la table de forwarding

Exercice 18 : MLAG et Multihoming EVPN

Niveau : Avancé | Durée : 55 min

Énoncé : Mettez en place une topologie avec :

  • 2 leaf switches en MLAG (MC-LAG)
  • 1 spine switch
  • 1 serveur dual-homed aux deux leafs
  • EVPN multihoming (Ethernet Segment)
  • Configurez ESI (Ethernet Segment Identifier)
  • Vérifiez le DF (Designated Forwarder) election

Partie 4 : DNS (Exercices 19-21)

Exercice 19 : Installation et Configuration BIND9

Niveau : Débutant | Durée : 30 min

Énoncé : Installez et configurez BIND9 comme DNS primaire :

  • Zone forward : "example.lab"
  • Zone reverse : 10.0.0.0/24
  • Enregistrements : A, AAAA, MX, CNAME, NS, TXT
  • Client "ns1.example.lab" : 10.0.0.53
  • Configurez un client pour utiliser ce DNS

Montrez les fichiers named.conf, les fichiers de zone, et les tests avec dig.

Exercice 20 : DNSSEC et Sécurisation DNS

Niveau : Intermédiaire | Durée : 45 min

Énoncé : Activez DNSSEC sur la zone "example.lab" :

  • Générez les clés ZSK et KSK
  • Signez la zone
  • Publiez les DS records
  • Configurez la validation DNSSEC sur le résolveur
  • Vérifiez avec dig l'authentification des réponses

Exercice 21 : Unbound comme Résolveur Récurseur

Niveau : Intermédiaire | Durée : 30 min

Énoncé : Configurez Unbound comme résolveur DNS local :

  • Forwarding vers Cloudflare (1.1.1.1) et Google (8.8.8.8)
  • Cache DNS avec TTL personnalisé
  • Validation DNSSEC activée
  • Access control (réseau local uniquement)
  • QPS (queries per second) limiting

Montrez la configuration unbound.conf et les statistiques de cache avec unbound-control.


Partie 5 : Pare-feu et iptables (Exercices 22-25)

Exercice 22 : Règles iptables de Base

Niveau : Débutant | Durée : 25 min

Énoncé : Configurez un pare-feu de base sur un serveur Linux :

  • Politique DROP par défaut pour INPUT et FORWARD
  • Autoriser SSH (port 22) depuis le réseau local
  • Autoriser HTTP/HTTPS (80, 443) depuis partout
  • Autoriser les connexions déjà établies
  • Bloquer les pings entrants
  • Logger les paquets rejetés

Montrez les règles complètes et la vérification avec iptables -L -v.

Exercice 23 : NAT et Port Forwarding

Niveau : Intermédiaire | Durée : 35 min

Énoncé : Configurez un routeur NAT avec iptables :

  • Réseau interne : 192.168.1.0/24
  • Interface WAN : eth0 (IP publique)
  • NAT (Masquerade) pour le trafic sortant
  • Port forwarding : port 8080 -> 192.168.1.10:80
  • Port forwarding : port 2222 -> 192.168.1.20:22 (SSH)
  • Redirection de port pour un serveur Minecraft (25565)

Montrez toutes les règles NAT, la configuration IP forwarding, et les tests.

Exercice 24 : Migration iptables vers nftables

Niveau : Avancé | Durée : 40 min

Énoncé : Migrez les règles de l'exercice 22 de iptables vers nftables :

  • Utilisez nft pour créer les tables et chaînes
  • Ajoutez un set pour les ports autorisés
  • Utilisez les verdict maps pour des règles conditionnelles
  • Montrez les commandes de translation avec iptables-translate

Exercice 25 : Pare-feu avec Conntrack et Rate Limiting

Niveau : Avancé | Durée : 50 min

Énoncé : Implémentez un pare-feu avancé :

  • Utilisation de conntrack pour le stateful firewall
  • Rate limiting pour SSH (3 connexions/min/IP)
  • Protection SYN flood avec synproxy
  • Limitation ICMP (1 echo-request/sec)
  • Bannissement automatique après 5 tentatives SSH échouées (avec fail2ban simulé)

Partie 6 : VPN WireGuard (Exercices 26-28)

Exercice 26 : Tunnel WireGuard Point-à-Point

Niveau : Débutant | Durée : 25 min

Énoncé : Configurez un tunnel WireGuard entre deux machines :

  • Site A : 10.0.0.1/24 (IP publique : 203.0.113.1)
  • Site B : 10.0.0.2/24 (IP publique : 198.51.100.1)
  • Génération des clés (wg genkey, wg pubkey)
  • Configuration wg0.conf sur chaque site
  • Mise en place de la persistent keepalive
  • Test de connexion et vérification handshake

Exercice 27 : WireGuard Hub-and-Spoke

Niveau : Intermédiaire | Durée : 40 min

Énoncé : Déployez une topologie hub-and-spoke avec WireGuard :

  • Hub : Paris (10.0.255.1/24) avec IP publique
  • Spoke 1 : Londres (10.0.1.1/24) derrière NAT
  • Spoke 2 : Berlin (10.0.2.1/24) derrière NAT
  • Spoke 3 : Madrid (10.0.3.1/24) derrière NAT
  • Tout le trafic inter-spoke passe par le hub
  • Activez IP forwarding sur le hub
  • Configurez les routes pour le sous-réseau de chaque site

Exercice 28 : WireGuard avec Split Tunneling et Kill Switch

Niveau : Avancé | Durée : 45 min

Énoncé : Configurez un client WireGuard avec :

  • Split tunneling : trafic vers 10.0.0.0/8 via tunnel, reste en direct
  • Kill switch : couper tout trafic si le tunnel tombe (avec iptables)
  • PostUp/PreDown scripts pour la configuration automatique
  • Table de routage personnalisée (table 51820)
  • Vérification que le kill switch fonctionne (arrêt du tunnel)

Partie 7 : Docker et Kubernetes Networking (Exercices 29-33)

Exercice 29 : Réseaux Docker (Bridge, Host, Overlay)

Niveau : Débutant | Durée : 30 min

Énoncé : Explorez les types de réseaux Docker :

  • Créez un réseau bridge personnalisé "app-net"
  • Lancez 3 conteneurs sur "app-net" (web, api, db)
  • Vérifiez la résolution DNS intégrée
  • Publiez le port 8080 vers l'hôte
  • Testez la communication inter-conteneurs
  • Ajoutez un conteneur en mode "host"

Exercice 30 : Docker Compose avec Réseau Multi-Service

Niveau : Intermédiaire | Durée : 35 min

Énoncé : Créez un docker-compose.yml pour une stack multi-service :

  • Service "frontend" (nginx) : port 80 exposé
  • Service "backend" (api) : réseau interne uniquement
  • Service "database" (postgres) : réseau interne
  • Service "cache" (redis) : réseau interne
  • Service "monitoring" (prometheus) : scrape tous les services
  • Configurez les réseaux : frontend-net, backend-net, monitoring-net
  • Utilisez les depends_on et healthcheck

Exercice 31 : Kubernetes Network Policies

Niveau : Intermédiaire | Durée : 40 min

Énoncé : Déployez des Network Policies Kubernetes :

  • Namespace "frontend" : pods web accessibles depuis ingress
  • Namespace "backend" : pods api accessibles depuis frontend uniquement
  • Namespace "database" : pods db accessibles depuis api uniquement
  • Namespace "monitoring" : pods prometheus accessibles partout
  • Policies : deny-all par défaut, puis autorisations spécifiques
  • Testez la connectivité avec des pods curl/nslookup

Exercice 32 : Services Kubernetes (ClusterIP, NodePort, LoadBalancer)

Niveau : Intermédiaire | Durée : 35 min

Énoncé : Déployez et configurez les différents types de Services :

  • ClusterIP : service "db" accessible uniquement dans le cluster
  • NodePort : service "web" accessible depuis l'extérieur
  • ExternalName : service "external-db" pointant vers une base externe
  • Headless Service : pour les statefulsets
  • Vérifiez les endpoints, iptables rules, kube-proxy

Exercice 33 : CNI Plugins (Calico, Flannel, Cilium)

Niveau : Avancé | Durée : 50 min

Énoncé : Comparez les plugins CNI :

  • Déployez un cluster kind avec Flannel (par défaut)
  • Observez les routes et les interfaces (cni0, flannel.1)
  • Déployez un second cluster kind avec Calico
  • Comparez les politiques réseau et l'isolation
  • Déployez un troisième cluster avec Cilium
  • Mesurez les performances avec iperf3 entre pods

Partie 8 : Cilium et eBPF (Exercices 34-37)

Exercice 34 : Installation Cilium sur Kind

Niveau : Intermédiaire | Durée : 30 min

Énoncé : Installez Cilium comme CNI sur un cluster Kind :

  • Créez un cluster kind avec une configuration personnalisée
  • Installez Cilium via Helm avec les options :
    • kubeProxyReplacement: true
    • ipam.mode: kubernetes
    • hubble.enabled: true
  • Vérifiez l'état de Cilium (cilium status)
  • Observez les endpoints et les services

Exercice 35 : Politiques Réseau L3/L4 avec Cilium

Niveau : Intermédiaire | Durée : 35 min

Énoncé : Implémentez des politiques réseau Cilium :

  • L3 policy : autoriser app=frontend vers app=backend
  • L4 policy : autoriser TCP/8080 uniquement
  • Deny policy : bloquer app=malicious vers n'importe quoi
  • Utilisez les CiliumNetworkPolicy CRDs
  • Testez avec des clients curl et observez les décisions avec hubble

Exercice 36 : Politiques L7 avec Cilium (HTTP, gRPC, Kafka)

Niveau : Avancé | Durée : 50 min

Énoncé : Implémentez des politiques L7 avec Cilium :

  • HTTP policy : autoriser GET /api/v1/users, bloquer POST /admin
  • gRPC policy : autoriser helloworld.Greeter/SayHello uniquement
  • Kafka policy : autoriser topic "orders" en production, bloquer "admin"
  • Utilisez CiliumNetworkPolicy avec sections http, grpc, kafka
  • Vérifiez avec hubble observe --protocol http

Exercice 37 : Hubble Observabilité et Service Mesh

Niveau : Avancé | Durée : 45 min

Énoncé : Mettez en place Hubble pour l'observabilité :

  • Déployez Hubble UI et Hubble Relay
  • Activez les flows L7
  • Créez des dashboards Grafana avec les métriques Hubble
  • Implémentez un service mesh avec Cilium (L7 load balancing)
  • Observez les flux avec hubble observe --from-pod X --to-pod Y
  • Générez du trafic et analysez les flows

Partie 9 : Wireshark et Analyse de Trafic (Exercices 38-40)

Exercice 38 : Capture et Analyse TCP Handshake

Niveau : Débutant | Durée : 25 min

Énoncé : Capturez et analysez un handshake TCP complet :

  • Lancez tcpdump sur une interface
  • Effectuez un curl vers example.com
  • Analysez dans Wireshark :
    • SYN, SYN-ACK, ACK
    • Numéros de séquence et d'acknowledgement
    • Fenêtre TCP (window size)
    • Options TCP (MSS, WS, SACK_PERM)
  • Filtrez : tcp.flags.syn == 1 and tcp.flags.ack == 0

Exercice 39 : Analyse de Protocole DNS

Niveau : Intermédiaire | Durée : 30 min

Énoncé : Analysez les requêtes DNS :

  • Capturez une requête DNS (dig example.com)
  • Identifiez :
    • Transaction ID
    • Flags (QR, OPCODE, AA, TC, RD, RA)
    • Question section (QNAME, QTYPE, QCLASS)
    • Answer section (NAME, TYPE, CLASS, TTL, RDLENGTH, RDATA)
    • Additional section
  • Analysez une réponse avec DNSSEC (RRSIG, DNSKEY)
  • Filtres Wireshark : dns, dns.flags.response == 0

Exercice 40 : Analyse de Session HTTP/2 et QUIC

Niveau : Avancé | Durée : 40 min

Énoncé : Analysez le trafic HTTP/2 et QUIC :

  • Capturez une session vers un site HTTP/2 (curl --http2)
  • Analysez :
    • TLS handshake avec ALPN (h2)
    • HTTP/2 frames (HEADERS, DATA, SETTINGS, WINDOW_UPDATE)
    • Multiplexing et stream IDs
    • HPACK header compression
  • Capturez une session QUIC (vers un serveur supportant HTTP/3)
  • Comparez le RTT et les temps de connexion
  • Filtres : http2, quic

Annexe : Récapitulatif des Compétences

Débutant (Exercices 1-4, 7, 10, 14, 19, 22, 26, 29, 38)

  • Calculs CIDR et VLSM
  • Configuration OSPF mono-zone
  • Configuration BGP eBGP
  • VLANs 802.1Q
  • DNS BIND9
  • iptables basique
  • WireGuard point-à-point
  • Réseaux Docker
  • Capture Wireshark

Intermédiaire (Exercices 5-6, 8-9, 11, 15, 20-21, 23, 27, 30-32, 34-35, 39)

  • Multi-zone OSPF avec redistribution
  • Route Reflector BGP
  • STP/RSTP
  • DNSSEC
  • NAT iptables
  • WireGuard hub-and-spoke
  • Docker Compose
  • Kubernetes Network Policies
  • Cilium L3/L4 policies
  • Analyse DNS

Avancé (Exercices 12-13, 16-18, 24-25, 28, 33, 36-37, 40)

  • BGP communities et route-maps
  • Redistribution OSPF-BGP
  • VXLAN manuel
  • EVPN VXLAN FRRouting
  • MLAG EVPN
  • nftables
  • Conntrack et rate limiting
  • WireGuard split tunnel + kill switch
  • CNI plugins comparés
  • Cilium L7 policies
  • Hubble observabilité
  • Analyse HTTP/2 et QUIC

Outils Nécessaires

Pour réaliser ces exercices, vous aurez besoin de :

  • GNS3 ou EVE-NG (exercices 7-18)
  • Linux (Ubuntu 22.04+ recommandé) (exercices 22-28)
  • Docker et Docker Compose (exercices 29-30)
  • Kind ou Minikube (exercices 31-37)
  • Wireshark ou tshark (exercices 38-40)
  • Cilium CLI (exercices 34-37)
  • FRRouting (à installer dans GNS3 ou en conteneur)

Temps Total Estimé

  • Débutant : 8-10 heures
  • Intermédiaire : 12-15 heures
  • Avancé : 10-12 heures
  • Total : environ 30-37 heures

Conseils pour Réussir

  1. Lisez l'énoncé en entier avant de commencer
  2. Dessinez la topologie sur papier ou avec un outil
  3. Testez chaque étape avant de passer à la suivante
  4. Documentez vos configurations dans un fichier
  5. Consultez les corrigés (chapitre 19) seulement après avoir essayé
  6. Expérimentez en modifiant les paramètres pour comprendre les impacts
  7. Utilisez les commandes de vérification (show, debug, ping, traceroute)

Erreurs Fréquentes

  • Oublier d'activer IP forwarding (net.ipv4.ip_forward=1)
  • Confondre les adresses réseau et broadcast
  • Masques CIDR incorrects dans les calculs VLSM
  • OSPF : oublier network statements ou passive interfaces
  • BGP : oublier update-source loopback
  • iptables : ordre des règles (la première match gagne)
  • DNS : oublier le point final dans les FQDN
  • Kubernetes : oublier que Network Policies sont additives