IPv4
IPv4 (Internet Protocol version 4) est le protocole d’adressage fondamental d’Internet depuis 1981. Il fournit un système d’adressage hiérarchique et de routage pour les paquets sur les réseaux interconnectés.
En-tête IPv4§
Un paquet IP est constitué d’un en-tête (20 à 60 octets) suivi des données.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| IHL | DSCP |ECN| Total Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identification |Flags| Fragment Offset |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Time to Live | Protocol | Header Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Champ | Taille | Description |
|---|---|---|
| Version | 4 bits | 4 pour IPv4 |
| IHL | 4 bits | Longueur de l’en-tête (en mots de 32 bits) |
| DSCP | 6 bits | QoS / priorité des paquets |
| Total Length | 16 bits | Longueur totale (max 65 535 octets) |
| Identification | 16 bits | ID pour la fragmentation |
| Flags | 3 bits | DF (Don’t Fragment), MF (More Fragments) |
| TTL | 8 bits | Décrémenté à chaque routeur (max 255) |
| Protocol | 8 bits | 6=TCP, 17=UDP, 1=ICMP, 89=OSPF |
| Source/Dest | 32 bits | Adresses IP émetteur et destinataire |
Espace d’adressage§
IPv4 utilise des adresses de 32 bits → 2³² = 4 294 967 296 adresses théoriques. En pratique, beaucoup sont réservées.
Épuisement : L’IANA a alloué le dernier bloc /8 en 2011. Le passage à IPv6 est la solution à long terme ; en attendant, NAT permet de conserver IPv4.
Fragmentation§
Si un paquet est trop grand pour le MTU (Maximum Transmission Unit) d’un lien intermédiaire, il est fragmenté.
MTU Ethernet standard : 1500 octets (payload IP)
Jumbo frames : jusqu'à 9000 octets (datacenter)
Paquet 3000 octets → fragmentation en :
Fragment 1 : 1500 octets (offset=0, MF=1)
Fragment 2 : 1500 octets (offset=185, MF=0)
DF bit (Don’t Fragment) : si activé et que le paquet est trop grand → le routeur envoie ICMP “Fragmentation Needed” → base du Path MTU Discovery.
Problèmes de sécurité :
- Fragmentation utilisée pour contourner des IDS/pare-feux
- Attaque Teardrop : fragments avec offsets se chevauchant → crash OS anciens
- Attaque Ping of Death : paquet réassemblé > 65 535 octets
ICMP — Internet Control Message Protocol§
Protocole de diagnostic et de contrôle associé à IP (protocole 1).
# Types ICMP courants
Type 0 : Echo Reply (réponse ping)
Type 3 : Destination Unreachable (codes 0-15)
Code 0 : Net unreachable
Code 1 : Host unreachable
Code 3 : Port unreachable
Code 4 : Fragmentation needed (DF set)
Type 8 : Echo Request (ping)
Type 11 : Time Exceeded (TTL expired → traceroute)
Type 12 : Parameter Problem
# ping — test de connectivité
ping -c 4 8.8.8.8
ping -s 1400 192.168.1.1 # Taille personnalisée (test MTU)
# traceroute — chemin vers la destination
traceroute 8.8.8.8 # Linux (UDP)
tracert 8.8.8.8 # Windows (ICMP)
traceroute -T 8.8.8.8 # TCP SYN (passe mieux les firewalls)
Utilisations malveillantes d’ICMP :
ICMP tunneling : exfiltration de données dans les payloads ICMP
Ping flood : DDoS par saturation de requêtes Echo
Smurf attack : ICMP Echo broadcast avec source spoofée → amplification
Routage IP§
Tables de routage§
# Linux — afficher la table de routage
ip route show
# ou
route -n
# Exemple de table
Destination Gateway Interface
0.0.0.0/0 192.168.1.1 eth0 ← Route par défaut
192.168.1.0/24 0.0.0.0 eth0 ← Réseau local
10.0.0.0/8 192.168.1.254 eth0 ← Route statique
# Windows
route print
Algorithme de sélection de route§
1. Correspondance la plus longue (longest prefix match)
Destination : 192.168.1.50
Route A : 192.168.0.0/16 → via GW_A
Route B : 192.168.1.0/24 → via GW_B ← SÉLECTIONNÉE (plus spécifique)
2. En cas d'égalité de préfixe → choisir la métrique la plus faible
3. En cas d'égalité de métrique → ECMP (Equal-Cost Multi-Path)
Protocoles associés§
DHCP — Dynamic Host Configuration Protocol§
Attribue automatiquement les paramètres réseau (IP, masque, passerelle, DNS).
Client → Serveur : DISCOVER (broadcast)
Serveur → Client : OFFER (IP proposée)
Client → Serveur : REQUEST (je prends cette IP)
Serveur → Client : ACK (IP confirmée, bail de X secondes)
Sécurité DHCP :
- DHCP Snooping : les switches filtrent les réponses DHCP (uniquement depuis des ports approuvés) pour prévenir les faux serveurs DHCP
- DHCP Starvation : attaque qui remplit le pool DHCP avec de fausses demandes (Gobbler) → les vraies machines ne peuvent plus obtenir d’IP
# Wireshark — capturer les échanges DHCP
tshark -f "udp port 67 or udp port 68" -i eth0
ARP — Address Resolution Protocol§
Résout une adresse IP en adresse MAC sur un réseau local (voir note dédiée).
Qui a 192.168.1.1 ? (ARP Request — broadcast)
192.168.1.1 est à AA:BB:CC:DD:EE:FF (ARP Reply — unicast)
Problèmes de sécurité IPv4§
| Vulnérabilité | Description | Contre-mesure |
|---|---|---|
| IP Spoofing | Falsifier l’adresse source | BCP38, uRPF (Unicast Reverse Path Forwarding) |
| ICMP tunneling | Exfiltration via ICMP | Filtrage et inspection ICMP |
| Fragmentation attacks | Contournement IDS via fragments | Réassemblage au niveau pare-feu |
| Land attack | Src = Dst → boucle | Filtrage d’adresses invalides |
| Smurf attack | Amplification via broadcast ICMP | Désactiver directed broadcasts |
| Route injection | Injection de routes malveillantes | Authentification des protocoles de routage (MD5/SHA) |
# Activer l'anti-spoofing (uRPF strict)
# Cisco IOS
interface GigabitEthernet0/0
ip verify unicast source reachable-via rx
# Linux — vérification RPF
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
# Bloquer les paquets avec source dans les plages RFC 1918 (ingress depuis Internet)
iptables -A INPUT -i eth0 -s 10.0.0.0/8 -j DROP
iptables -A INPUT -i eth0 -s 172.16.0.0/12 -j DROP
iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j DROP