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
- Lisez l'énoncé en entier avant de commencer
- Dessinez la topologie sur papier ou avec un outil
- Testez chaque étape avant de passer à la suivante
- Documentez vos configurations dans un fichier
- Consultez les corrigés (chapitre 19) seulement après avoir essayé
- Expérimentez en modifiant les paramètres pour comprendre les impacts
- 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