Université Hassan II de Casablanca
Faculté des Sciences et Techniques
Filière : Licence Informatique — Semestre 5
Compte Rendu de TP
Administration Linux — Gestion des Réseaux
Réalisé par : EL IDRISSI Youssef
Encadrant : M. BENALI Karim
Groupe : G3
Année universitaire : 2025/2026
Section 1 — Interfaces Réseau
TP 1.1 — Exploration des interfaces réseau
Tâche 1 : Afficher toutes les interfaces réseau
$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN
inet [Link]/8 scope host lo
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP
link/ether 08:00:27:4a:c1:7f brd ff:ff:ff:ff:ff:ff
inet [Link]/24 brd [Link] scope global dynamic enp0s3
3: enp0s8: <BROADCAST,MULTICAST> mtu 1500 state DOWN
link/ether 08:00:27:b2:9e:3c brd ff:ff:ff:ff:ff:ff
Commentaire : J'ai pu voir les 3 interfaces présentes sur ma VM. lo c'est la loopback,
enp0s3 est active avec une IP obtenue en DHCP, et enp0s8 est désactivée pour le
moment.
Tâche 2 : Désactiver puis réactiver une interface
$ ip link set enp0s8 down
RTNETLINK answers: Operation not permitted
$ sudo ip link set enp0s8 down
$ ip link show enp0s8
3: enp0s8: <BROADCAST,MULTICAST> mtu 1500 state DOWN
$ sudo ip link set enp0s8 up
$ ip link show enp0s8
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP
Commentaire : J'avais oublié sudo au début, d'où l'erreur "Operation not permitted".
Avec sudo ça marche. L'état passe bien de DOWN à UP.
TP 1.2 — Configuration IP temporaire
Tâche 3 : Ajouter une adresse IP manuellement
$ sudo ip addr add [Link]/24 dev enp0s3
$ ip addr show enp0s3
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP>
inet [Link]/24 scope global dynamic enp0s3
inet [Link]/24 scope global enp0s3
$ ping -c 3 [Link]
64 bytes from [Link]: icmp_seq=1 ttl=64 time=0.041 ms
64 bytes from [Link]: icmp_seq=2 ttl=64 time=0.048 ms
3 packets transmitted, 3 received, 0% packet loss
Commentaire : L'adresse a été ajoutée correctement. Le ping fonctionne en local. Après
redémarrage j'ai vérifié : l'adresse avait bien disparu, c'est temporaire.
Tâche 4 : Supprimer une adresse IP
$ sudo ip addr del [Link]/24 dev enp0s3
$ ip addr show enp0s3 | grep 192.168.100
(aucun résultat)
Commentaire : La suppression se fait avec ip addr del. Simple et efficace.
TP 1.3 — Configuration permanente avec Netplan
Tâche 5 : Créer un fichier Netplan
$ ls /etc/netplan/
[Link]
$ sudo nano /etc/netplan/[Link]
$ sudo netplan generate
Warning: yaml: line 7: found character that cannot start any token
Commentaire : Erreur de parsing YAML. J'avais utilisé des tabulations au lieu
d'espaces. J'ai corrigé en remplaçant par des espaces (2 par niveau).
$ sudo netplan generate
(pas d'erreur)
$ sudo netplan try
Press ENTER before the timeout to accept the new configuration.
Changes will revert in 60 seconds.
Configuration accepted.
$ sudo netplan apply
$ ip addr show enp0s3
inet [Link]/24 brd [Link] scope global enp0s3
$ ping -c 2 [Link]
64 bytes from [Link]: icmp_seq=1 ttl=64 time=1.24 ms
Commentaire : Après correction du YAML, la config s'est bien appliquée. netplan try est
pratique car si on ne confirme pas en 60s ça rollback automatiquement.
TP 1.4 — Gestion avec NetworkManager (nmcli)
Tâche 6 : Créer et gérer une connexion statique
$ nmcli connection show
NAME UUID TYPE DEVICE
Wired connection 1 3a2f1c8d-... ethernet enp0s3
$ nmcli connection add type ethernet \
> con-name "tp-static" ifname enp0s3 \
> ip4 [Link]/24 gw4 [Link]
Connection "tp-static" successfully added.
$ nmcli connection modify "tp-static" [Link] "[Link] [Link]"
$ nmcli connection up "tp-static"
Connection successfully activated.
$ nmcli connection show --active
NAME UUID TYPE DEVICE
tp-static 7f2a3b1c-... ethernet enp0s3
$ nmcli connection delete "tp-static"
Connection "tp-static" successfully deleted.
Commentaire : nmcli crée des connexions persistantes contrairement à ip addr. La
syntaxe est un peu longue mais on s'y habitue.
Section 2 — Routes & DNS
TP 2.1 — Lecture et manipulation des routes
Tâche 7 : Lire et modifier la table de routage
$ ip route show
default via [Link] dev enp0s3 proto dhcp metric 100
[Link]/24 dev enp0s3 proto kernel scope link src [Link]
$ sudo ip route add [Link]/16 via [Link] dev enp0s3
$ sudo ip route add [Link]/12 via [Link] metric 200
$ ip route get [Link]
[Link] via [Link] dev enp0s3 src [Link]
$ ip route get [Link]
[Link] via [Link] dev enp0s3 src [Link]
$ sudo ip route del [Link]/16
$ sudo ip route del default
$ ping [Link]
ping: connect: Network is unreachable
$ sudo ip route add default via [Link]
$ ping [Link]
64 bytes from [Link]: icmp_seq=1 ttl=55 time=17.8 ms
Commentaire : Quand j'ai supprimé la route par défaut, j'ai perdu l'accès réseau
immédiatement. Le ping vers [Link] donnait "Network is unreachable". Après recréation
de la route, tout est revenu. ip route get est utile pour savoir par où passera un paquet.
TP 2.2 — Configuration et test du DNS
Tâche 8 : Tester la résolution DNS avec dig
$ cat /etc/[Link]
nameserver [Link]
options edns0 trust-ad
$ dig [Link]
;; ANSWER SECTION:
[Link]. 205 IN A [Link]
;; Query time: 12 msec
$ dig @[Link] [Link]
;; ANSWER SECTION:
[Link]. 3599 IN A [Link]
;; Query time: 24 msec
$ dig @[Link] [Link]
;; ANSWER SECTION:
[Link]. 3599 IN A [Link]
;; Query time: 18 msec
$ dig @[Link] [Link] MX
;; ANSWER SECTION:
[Link]. 3599 IN MX 5 [Link].
$ dig -x [Link]
;; ANSWER SECTION:
[Link].[Link]. 7199 IN PTR [Link].
$ sudo resolvectl flush-caches
Commentaire : Cloudflare ([Link]) répond légèrement plus vite que Google DNS depuis
ma connexion. La résolution inverse avec dig -x donne le nom de domaine associé à une
IP. Le TTL indique combien de temps la réponse peut être mise en cache.
TP 2.3 — Résolution locale avec /etc/hosts
Tâche 9 : Ajouter des entrées dans /etc/hosts
$ cat /etc/[Link] | grep hosts
hosts: files dns mymachines
$ sudo nano /etc/hosts
# Ligne ajoutée :
# [Link] [Link] mon-serveur
$ ping -c 1 [Link]
PING [Link] ([Link]): Destination Host Unreachable
$ dig [Link]
;; status: NXDOMAIN
$ echo "[Link] [Link]" | sudo tee -a /etc/hosts
$ ping -c 1 [Link]
64 bytes from [Link]: icmp_seq=1 ttl=64 time=0.052 ms
Commentaire : Le ping résout correctement l'adresse depuis /etc/hosts même si la
machine n'existe pas. dig ne trouve pas le nom car il passe par DNS, pas par /etc/hosts.
Le test de redirection vers [Link] marche bien.
TP 2.4 — Diagnostic réseau complet
Tâche 10 : Simuler et corriger des pannes réseau
# Panne DNS
$ sudo nano /etc/[Link]
# nameserver [Link] (DNS invalide)
$ ping [Link]
ping: [Link]: Name or service not known
$ ping [Link]
64 bytes from [Link]: icmp_seq=1 ttl=55 time=18.4 ms
# Le réseau fonctionne, c'est bien un problème DNS uniquement
# Correction : remettre nameserver [Link]
# Panne interface
$ sudo ip link set enp0s3 down
$ ping [Link]
ping: connect: Network is unreachable
$ ip link show enp0s3
2: enp0s3: <BROADCAST,MULTICAST> state DOWN
$ sudo ip link set enp0s3 up
Commentaire : La méthode de diagnostic que j'ai apprise : d'abord tester avec une IP
directe (ping [Link]), si ça marche c'est un problème DNS. Si même l'IP ne répond pas,
c'est un problème réseau (interface ou route).
Section 3 — Serveur DHCP
TP 3.1 — Installation et configuration basique DHCP
Tâche 11 : Installer et configurer ISC-DHCP-Server
$ sudo apt install isc-dhcp-server
Setting up isc-dhcp-server (4.4.3-P1-2ubuntu2) ...
$ sudo nano /etc/default/isc-dhcp-server
# INTERFACESv4="enp0s3"
$ sudo nano /etc/dhcp/[Link]
# (configuration du subnet)
$ sudo dhcpd -t -cf /etc/dhcp/[Link]
Configuration file errors encountered -- exiting.
# Erreur : point-virgule manquant après "authoritative"
# Correction effectuée
$ sudo dhcpd -t -cf /etc/dhcp/[Link]
(pas d'erreur)
$ sudo systemctl start isc-dhcp-server
$ sudo systemctl enable isc-dhcp-server
$ sudo systemctl status isc-dhcp-server
● [Link]
Active: active (running) since Fri 2026-04-10 14:22:31 UTC
$ journalctl -u isc-dhcp-server -n 5
Apr 10 14:22:31 dhcpd[4521]: Server starting service.
Apr 10 14:22:31 dhcpd[4521]: Listening on LPF/enp0s3/08:00:27:4a:c1:7f
Commentaire : Il y avait un point-virgule manquant dans [Link], le service refusait
de démarrer. La commande dhcpd -t permet de valider la syntaxe sans redémarrer le
service — à faire systématiquement avant.
TP 3.2 — Test d'attribution d'adresse DHCP
Tâche 12 : Observer l'attribution d'une adresse DHCP
# Côté client (VM2)
$ sudo dhclient -r enp0s3
DHCPRELEASE on enp0s3 to [Link] port 67
$ sudo dhclient enp0s3
DHCPDISCOVER on enp0s3 to [Link] port 67
DHCPOFFER from [Link]
DHCPREQUEST on enp0s3 to [Link] port 67
DHCPACK from [Link]
bound to [Link]
# Côté serveur
$ cat /var/lib/dhcp/[Link]
lease [Link] {
starts 5 2026/04/10 14:35:22;
ends 0 2026/04/12 14:35:22;
binding state active;
hardware ethernet 08:00:27:9c:3f:a1;
client-hostname "ubuntu-client";
}
$ journalctl -u isc-dhcp-server -f
dhcpd: DHCPDISCOVER from 08:00:27:9c:3f:a1
dhcpd: DHCPOFFER on [Link] to 08:00:27:9c:3f:a1
dhcpd: DHCPACK on [Link] to 08:00:27:9c:3f:a1
Commentaire : On voit bien les 4 étapes DORA dans les logs. Le fichier [Link]
enregistre toutes les infos : IP attribuée, adresse MAC du client, dates de début et fin du
bail.
TP 3.3 — Réservation statique par adresse MAC
Tâche 13 : Créer une réservation DHCP
# Récupérer la MAC du client
$ ip link show enp0s3 | grep ether
link/ether 08:00:27:9c:3f:a1 brd ff:ff:ff:ff:ff:ff
# Ajouter dans [Link] :
# host mon-client-fixe {
# hardware ethernet 08:00:27:9c:3f:a1;
# fixed-address [Link];
# }
$ sudo dhcpd -t -cf /etc/dhcp/[Link]
(syntaxe OK)
$ sudo systemctl reload isc-dhcp-server
# Sur le client, renouvellement
$ sudo dhclient -r enp0s3 && sudo dhclient enp0s3
bound to [Link]
$ ip addr show enp0s3 | grep inet
inet [Link]/24 brd [Link] scope global dynamic
Commentaire : La réservation fonctionne correctement. J'ai mis [Link] hors de la
plage range (100-200) pour éviter tout conflit possible. Le reload suffit, pas besoin de
restart.
TP 3.4 — Supervision et dépannage DHCP
Tâche 14 : Simuler des erreurs de configuration
# Erreur de syntaxe
$ sudo systemctl restart isc-dhcp-server
Job for [Link] failed.
$ sudo dhcpd -t -cf /etc/dhcp/[Link]
/etc/dhcp/[Link] line 3: semicolon expected.
^
# Mauvaise interface
# INTERFACESv4="eth99"
$ journalctl -u isc-dhcp-server -n 10 --no-pager
dhcpd: Not configured to listen on any interfaces!
# Plage épuisée (2 adresses seulement)
# range [Link] [Link];
# Log au 3ème client :
dhcpd: No free leases on subnet [Link]/24
Commentaire : Les messages d'erreur sont clairs. Pour la syntaxe, dhcpd -t indique
exactement la ligne problématique. Quand la plage est épuisée, le client ne reçoit pas
d'IP et se retrouve avec une adresse APIPA (169.254.x.x).
Section 4 — Serveur NTP
TP 4.1 — État de l'horloge système avec timedatectl
Tâche 15 : Vérifier et manipuler l'horloge
$ timedatectl
Local time: Fri 2026-04-10 15:44:02 UTC
Universal time: Fri 2026-04-10 15:44:02 UTC
Time zone: UTC (UTC, +0000)
System clock synchronized: yes
NTP service: active
$ sudo timedatectl set-timezone Europe/Paris
$ timedatectl | grep zone
Time zone: Europe/Paris (CEST, +0200)
$ sudo timedatectl set-ntp false
$ sudo timedatectl set-time "2024-01-01 12:00:00"
$ sudo timedatectl set-ntp true
# (attente ~45 secondes)
$ timedatectl
Local time: Fri 2026-04-10 17:44:52 CEST
System clock synchronized: yes
# Heure corrigée automatiquement
Commentaire : L'heure s'est automatiquement corrigée en moins d'une minute une fois
NTP réactivé. Le saut de 2024 à 2026 s'est fait instantanément (stepping). C'est
important car un mauvais timestamp peut faire échouer les certificats TLS.
TP 4.2 — Installation et configuration de Chrony
Tâche 16 : Installer et analyser Chrony
$ sudo apt install chrony
$ sudo systemctl status chrony
Active: active (running)
$ sudo nano /etc/chrony/[Link]
# pool [Link] iburst prefer
# pool [Link] iburst
# pool [Link] iburst
$ sudo systemctl restart chrony
$ chronyc sources -v
MS Name/IP address Stratum Poll Reach LastRx Last sample
========================================================================
=
^* [Link] 2 6 377 42 -0.342ms[+0.12ms] +/-
4.2ms
^+ [Link] 2 6 377 43 +1.231ms[+1.58ms] +/-
6.1ms
$ chronyc tracking
Reference ID : [Link]
Stratum : 3
System time : 0.000084231 seconds fast of NTP time
Frequency : 2.145 ppm fast
$ sudo chronyc makestep
200 OK
Commentaire : Le symbole * devant [Link] indique que c'est la source principale
sélectionnée. Le décalage de 0.000084 secondes montre une synchronisation très précise.
iburst envoie plusieurs paquets au démarrage pour synchroniser plus rapidement.
TP 4.3 — Chrony comme serveur NTP local
Tâche 17 : Configurer Chrony en mode serveur
# Côté serveur — ajout dans [Link] :
# allow [Link]/24
# local stratum 8
$ sudo systemctl restart chrony
$ sudo ufw allow 123/udp
Rule added
$ ss -uln | grep 123
UNCONN 0 0 [Link]:123 [Link]:*
# Chrony écoute bien sur UDP 123
# Côté client — [Link] :
# server [Link] iburst
$ chronyc sources -v
^* [Link] 3 6 377 38 -0.221ms[+0.05ms] +/- 3.1ms
# Vérification côté serveur
$ chronyc clients
Hostname NTP Drop Int Last
=========================================
[Link] 6 0 6 38
Commentaire : J'avais oublié d'ouvrir le port 123/udp dans le pare-feu, le client ne
pouvait pas se connecter. Une fois le port ouvert, ça a fonctionné tout de suite. La
directive 'local stratum 8' permet de continuer à distribuer l'heure même sans accès
Internet.
TP 4.4 — Simulation de désynchronisation et correction
Tâche 18 : Décaler l'horloge et observer la correction
$ sudo timedatectl set-ntp false
$ sudo date -s "$(date -d '+10 minutes' +'%Y-%m-%d %H:%M:%S')"
Fri Apr 10 18:12:35 CEST 2026
$ sudo timedatectl set-ntp true
$ journalctl -u chrony -f --since "1 minute ago"
chronyd: System clock wrong by -601.4 seconds
chronyd: Stepping system clock...
chronyd: System clock was stepped by -601.4s
$ sudo chronyc makestep
200 OK
$ chronyc tracking
System time : 0.000012341 seconds fast of NTP time
Commentaire : Chrony a détecté 601 secondes de décalage et a appliqué un stepping
(correction immédiate) plutôt qu'un slewing (correction progressive). Le slewing est
utilisé pour les petits écarts en millisecondes, le stepping pour les grands écarts. Après
correction, System time est quasi 0.
Conclusion
Ces TPs m'ont permis de pratiquer les outils réseau essentiels sous Linux. J'ai eu quelques
erreurs en chemin (sudo oublié, point-virgule manquant, indentation YAML, port pare-
feu non ouvert) mais chaque erreur m'a appris quelque chose.
Ce que je retiens principalement :
— ip/netplan/nmcli pour la gestion des interfaces et des adresses
— ip route et dig pour le routage et le DNS
— isc-dhcp-server pour l'attribution automatique d'adresses
— chrony/timedatectl pour la synchronisation de l'horloge
EL IDRISSI Youssef — Avril 2026