Chapitre 8: Gestion réseau

Avant-propos

Nous vous recommandons de ne pas utiliser d’IA pour faire les exercices car vous êtes en phase d’apprentissage.

Introduction

Dans cette partie, nous aborderons les points suivants :

Prérequis

Toujours la même histoire. 😉



Le réseau informatique (brièvement)

Introduction au réseau informatique

Un réseau informatique est un ensemble d’ordinateurs et de périphériques connectés entre eux pour partager des ressources, échanger des données et fournir des services. Les réseaux informatiques sont essentiels dans le monde moderne, permettant la communication, le partage de fichiers et l’accès à des ressources distantes.

Comment tout cela fonctionne ?

Pour que les ordinateurs puissent communiquer entre eux, ils doivent parler un langage commun : ce sont les protocoles réseau. Le plus fondamental de tous, c’est TCP/IP.


Le modèle TCP/IP (le vrai fonctionnement d’Internet)

TCP/IP, c’est l’ensemble de règles (ou “pile de protocoles”) utilisé pour faire fonctionner Internet et la plupart des réseaux. Il est composé de plusieurs couches, chacune ayant un rôle spécifique.

Couches du modèle TCP/IP (simplifié) :

Couche Rôle
1. Accès réseau Gère la communication avec le matériel (Wi-Fi, câble Ethernet, etc.)
2. Internet Permet de trouver l’adresse IP d’un ordinateur sur le réseau (protocole IP)
3. Transport Assure la fiabilité ou la rapidité de la communication (TCP ou UDP)
4. Application Ce que l’utilisateur utilise : HTTP, FTP, mail, etc.

TCP et UDP : deux manières de transporter les données

Au niveau de la couche Transport, deux protocoles sont principalement utilisés :

TCP (Transmission Control Protocol)

UDP (User Datagram Protocol)

Métaphore :


Le modèle OSI (modèle théorique en 7 couches)

Le modèle OSI (Open Systems Interconnection) est une représentation théorique utilisée pour comprendre comment les données circulent dans un réseau, en les divisant en 7 couches.

Couche Nom Rôle simplifié
7 Application Ce que voit l’utilisateur (navigateur, mail, etc.)
6 Présentation Encodage, chiffrement, compression
5 Session Gestion des connexions entre applications
4 Transport Fiabilité et ordre des données (TCP/UDP)
3 Réseau Adressage et routage (IP)
2 Liaison de données Communication entre deux machines directement reliées
1 Physique Câbles, ondes, signaux électriques

Astuce mnémotechnique pour retenir l’ordre : “All People Seem To Need Data Processing” (Application, Présentation, Session, Transport, Réseau, Données, Physique)

OSI vs TCP/IP — Quelle différence ?

OSI (7 couches) TCP/IP (4 couches)
Modèle théorique Modèle réel, utilisé sur Internet
Plus détaillé Plus pratique et implémenté
Sépare bien les fonctions Fusionne certaines couches (ex : application + présentation + session)

En pratique, les réseaux utilisent TCP/IP, mais l’OSI aide à comprendre ce qui se passe à chaque étape.

Types de Réseaux Informatiques

Vous devez savoir qu’il existe différents types de réseaux :

Équipements Réseau

Maintenant, parlons des équipements réseau :

Adresses Réseau

Dans un réseau informatique, il y a deux éléments principaux pour identifier une machine. L’adresse IP et l’adresse MAC.


À tester 👨🏾‍💻👩🏾‍💻:

Ci-dessous un exemple de retour.

$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:c8:9a:ac brd ff:ff:ff:ff:ff:ff
    inet 172.30.1.2/24 brd 172.30.1.255 scope global dynamic noprefixroute enp1s0
       valid_lft 86302846sec preferred_lft 75513646sec
    inet6 fe80::7008:be3c:4abc:6bcd/64 scope link 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1454 qdisc noqueue state DOWN group default 
    link/ether 02:42:4c:21:02:63 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

Dans notre cas, nous avons 3 interfaces réseau: lo, enp1s0 et docker0.

Interface Type Adresse IPv4 Adresse IPv6 Adresse MAC Statut
lo Loopback 127.0.0.1/8 ::1/128 00:00:00:00:00:00 UP
enp1s0 Ethernet 172.30.1.2/24 fe80::…/64 (link-local) 52:54:00:c8:9a:ac UP
docker0 Virtuelle 172.17.0.1/16 (aucune IPv6 ici) 02:42:4c:21:02:63 DOWN (no carrier)

Focus sur l’interface loopback

L’interface loopback (lo) permet à une machine de s’envoyer des messages à elle-même, comme si elle passait par le réseau. Cela peut paraître inutile, mais en réalité, c’est fondamental pour :

1. Test de réseau local (localhost)

2. Services internes du système

3. Diagnostic réseau

4. Sécurité

Exemple concret :

Imaginons que tu développes une application web locale :

python3 -m http.server 8000

Tu peux y accéder depuis ton navigateur via :

http://127.0.0.1:8000

Même si tu n’as aucun accès Internet, cette communication fonctionne via l’interface loopback.

En résumé :

L’interface lo permet à un ordinateur de s’adresser à lui-même via des protocoles réseau standard. C’est indispensable pour :

Configuration réseau et routage sous Linux

Comprendre le routage

En réseau, “router” signifie décider par quel chemin (interface, passerelle) envoyer les paquets IP pour atteindre une destination. Voyons quelques commandes en rapport avec le routage.

route (ancienne commande)

La commande route est obsolète, mais encore utilisée parfois pour afficher la table de routage :

route -n

Cela montre les chemins utilisés pour atteindre les réseaux connus. Le -n évite la résolution DNS pour un affichage plus rapide.

ip r ou ip route (moderne)

ip route
# ou plus court :
ip r

Affiche la table de routage actuelle du système.

Exemple :
default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100

ip route get

ip route get 8.8.8.8

Affiche le chemin précis qu’un paquet prendrait pour atteindre une IP donnée.

Résultat exemple :
8.8.8.8 via 192.168.1.1 dev eth0 src 192.168.1.100

Gateway (passerelle)

La gateway, ou passerelle, est l’adresse IP d’un routeur sur le réseau local, par lequel le trafic sortant vers l’extérieur (ex : Internet) est redirigé.

Sans gateway définie → le système ne peut pas atteindre l’extérieur.

Configuration d’une interface réseau

Méthode 1 – Temporaire (non persistante)

Utilisation des commandes ip :

# Donner une IP à l’interface eth0
sudo ip addr add 192.168.1.100/24 dev eth0

# Activer l’interface
sudo ip link set eth0 up

# Ajouter une passerelle
sudo ip route add default via 192.168.1.1

⛔ Cette configuration est temporaire : elle disparaît après un redémarrage ou désactivation de l’interface.

Méthode 2 – Persistante (configuration conservée après redémarrage)

Dépend de la distribution :

Debian / Ubuntu (avec Netplan ou interfaces)

Avec netplan (Ubuntu 18.04+)

Éditer le fichier YAML :

sudo nano /etc/netplan/01-netcfg.yaml

Exemple de configuration statique :

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: no
      addresses: [192.168.1.100/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 1.1.1.1]

Puis appliquer :

sudo netplan apply
Avec /etc/network/interfaces (systèmes plus anciens) :
auto eth0
iface eth0 inet static
  address 192.168.1.100
  netmask 255.255.255.0
  gateway 192.168.1.1
  dns-nameservers 8.8.8.8

Redémarrer le réseau :

sudo systemctl restart networking

Red Hat / CentOS / Fedora (avec nmcli ou fichiers ifcfg-)

Exemple fichier :

/etc/sysconfig/network-scripts/ifcfg-eth0

Contenu :

DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8

Redémarrage de l’interface :

sudo ifdown eth0 && sudo ifup eth0

Résumé

Commande / Élément Rôle
ip r / ip route Affiche la table de routage
ip route get <IP> Montre le chemin réseau utilisé
route -n Ancienne méthode pour voir la table de routage
gateway Passerelle vers l’extérieur (routeur)
ip addr add / ip link Configuration temporaire d’interface
Fichiers YAML ou interfaces Configuration persistante

DNS

Le DNS (Domain Name System) est un système qui traduit les noms de domaine en adresses IP. C’est essentiel pour naviguer sur Internet ! Vous pouvez modifier votre DNS de différentes manières. Soit via le fichier /etc/resovl.conf. Soit via l’interface graphique de Network Manager.

# Ajoutez la ligne suivante : nameserver 8.8.8.8


 Quelques explications :
* `nameserver` : C’est une directive utilisée pour spécifier un **serveur DNS** (Domain Name System).
* `8.8.8.8` : C’est l’**adresse IP du serveur DNS** que le système utilisera pour **traduire les noms de domaine** (ex : `www.google.com`) en adresses IP (ex : `142.250.190.68`).

<br>

**⚠️ Attention**:

Dans certaines distributions modernes (Ubuntu, Fedora…), ce fichier est généré automatiquement par des services comme systemd-resolved ou NetworkManager. Donc toute modification manuelle de /etc/resolv.conf risque d’être écrasée au redémarrage.


<br>

Parlons à présent du fichier **/etc/hosts** !!!

Avant même de consulter un serveur DNS, Linux vérifie d’abord le fichier **/etc/hosts**.
Ce fichier permet d’associer manuellement des noms d’hôtes à des adresses IP. Il est utilisé en priorité, avant le DNS, pour la résolution locale.


**Exemple de fichier `/etc/hosts`** :

```bash
127.0.0.1       localhost
127.0.1.1       monpc.local monpc
192.168.1.100   serveur-web.local monsite

Explication :

Cas d’usage de /etc/hosts

Rôle des Ports réseau et des Services

Les ports sont des numéros qui identifient les services qui écoutent sur une machine. Vous pouvez voir les numéros de ports standards et les services dans le fichier /etc/services.

Quelques outils de dépannage Réseau sous Linux

INFO:
Les outils listés ci-dessous sont présents dans le paquet “net-tools”. Il faudra donc l’installer au cas où vous n’en avez pas.🙂

Ping

Traceroute

Netstat

Tcpdump

Wireshark

Nmap

Netcat

SS

MTR

Entraînement ⚔️

EXERCICE 1

Faire les challenges du niveau 0 à 20 de la catégorie “Bandit” de la plateforme “overthewire”. Lien: https://overthewire.org/wargames/bandit/ (Ce lien pointe sur la catégorie “Bandit” directement)

Les premiers challenges vous serviront de révision 🙂.

EXERCICE 2

Vous devez réaliser une analyse réseau complète sur le serveur public scanme.nmap.org à l’aide de l’outil Nmap , afin de répondre aux questions suivantes :

  1. Quelle est la version du service SSH (port 22) hébergé sur ce serveur ?
  2. Quel service est disponible sur le port 80/tcp ?
  3. Combien de ports TCP sont dans l’état open ?
  4. Quel service est associé au port 9929/tcp ?

⚠️ Attention: Il est illégal de scanner un réseau ou un site web qui n’est pas le votre sans autorisation. “scanme.nmap.org” est une plateforme de test fournie par nmap afin de tester l’outil nmap librement.

EXERCICE 3

Lien du script du challenge: https://raw.githubusercontent.com/N0vachr0n0/NoFD/refs/heads/main/Network_EXO_1.sh



Feedback

Faites-nous part de votre avis sur ce chapitre.

👉🏾 Cliquez ici