« Le /24 est seulement une autre manière d’écrire 255.255.255.0. »
C’est vrai, mais incomplet. Le préfixe indique surtout à la machine quelles destinations elle considère comme locales. Une erreur de préfixe change donc son comportement.
Tu vas relier directement deux postes virtuels. Ils auront des adresses proches, mais des préfixes différents. La panne montrera ce que le nombre après la barre commande réellement.
pc1 192.168.50.10/24 ───────── pc2 192.168.50.130/25
01Construire le lien
Crée deux namespaces reliés par une paire veth
sudo ip netns del pc1 2>/dev/null || true
sudo ip netns del pc2 2>/dev/null || true
sudo ip netns add pc1
sudo ip netns add pc2
sudo ip link add pc1-eth type veth peer name pc2-eth
sudo ip link set pc1-eth netns pc1
sudo ip link set pc2-eth netns pc2
sudo ip -n pc1 link set pc1-eth name eth0
sudo ip -n pc2 link set pc2-eth name eth0
sudo ip -n pc1 link set lo up
sudo ip -n pc2 link set lo up
sudo ip -n pc1 link set eth0 up
sudo ip -n pc2 link set eth0 up02Créer volontairement une incohérence
Attribue deux préfixes différents
sudo ip -n pc1 addr add 192.168.50.10/24 dev eth0
sudo ip -n pc2 addr add 192.168.50.130/25 dev eth0
sudo ip -n pc1 route
sudo ip -n pc2 routeObservepc1 : 192.168.50.0/24 dev eth0
pc2 : 192.168.50.128/25 dev eth0Demande ensuite à chaque poste comment il traiterait l’autre :
sudo ip -n pc1 route get 192.168.50.130
sudo ip -n pc2 route get 192.168.50.1003Observer la panne asymétrique
Lance un ping et capture ARP/ICMP
Dans un terminal :
sudo ip netns exec pc2 tcpdump -ni eth0 'arp or icmp'Dans un second terminal :
sudo ip netns exec pc1 ping -c 3 192.168.50.130192.168.50.10 : la réponse ne trouve pas de chemin.Comprends le préfixe dessine la frontière locale
Avec /24, les 24 premiers bits identifient le réseau et les 8 derniers l’hôte. Avec /25, 25 bits appartiennent au réseau : le dernier octet est séparé en deux blocs, 0–127 et 128–255.
04Relier CIDR et masque
| CIDR | Masque | Adresses totales | Hôtes IPv4 usuels |
|---|---|---|---|
| /24 | 255.255.255.0 | 256 | 254 |
| /25 | 255.255.255.128 | 128 | 126 |
| /26 | 255.255.255.192 | 64 | 62 |
| /27 | 255.255.255.224 | 32 | 30 |
Chaque bit ajouté au préfixe divise le nombre d’adresses par deux. La formule générale est 2^(32 - préfixe).
05Vérifier avec la bibliothèque standard
Demande à Python de calculer le réseau
python3 - <<'PY'
from ipaddress import ip_interface
for value in ("192.168.50.10/24", "192.168.50.130/25"):
interface = ip_interface(value)
network = interface.network
print(value)
print(" masque :", network.netmask)
print(" réseau :", network.network_address)
print(" broadcast :", network.broadcast_address)
print(" adresses :", network.num_addresses)
PY06Réparer
Place les deux postes dans le même /24
sudo ip -n pc2 addr flush dev eth0
sudo ip -n pc2 addr add 192.168.50.130/24 dev eth0
sudo ip netns exec pc1 ping -c 3 192.168.50.130Prédit avant de tester
- configure pc1 en
172.16.10.20/26; - choisis trois adresses : une locale, une dans le bloc /26 suivant et une très éloignée ;
- prédit la décision de
ip route getpour chacune ; - vérifie ensuite avec Python et Linux ;
- explique l’erreur si ta prédiction était fausse.
07Nettoyer
sudo ip netns del pc1
sudo ip netns del pc2
✓Ce que tu retiens
Le préfixe CIDR n’est pas décoratif : il sépare les bits réseau des bits hôte et définit les destinations considérées comme locales. Un préfixe incohérent peut créer une communication asymétrique même si les adresses semblent proches.