Tu dois découper un /24 en plusieurs sous-réseaux pour ton projet. Combien d’hôtes dans un /27 ? Quelle est l’adresse de broadcast du 10.0.0.64/26 ? Ces calculs reviennent sans cesse en administration réseau — et les erreurs coûtent cher : conflit d’IP, machines isolées, routage cassé.
ipcalc répond à ces questions en une commande. Donne-lui une adresse IP et un masque, il te retourne instantanément : plage d’hôtes utilisables, broadcast, wildcard Cisco, et même le découpage optimal en sous-réseaux.
Ce guide est fait pour toi si…
Section intitulée « Ce guide est fait pour toi si… »Pourquoi utiliser ipcalc ?
Section intitulée « Pourquoi utiliser ipcalc ? »Le subnetting (découpage en sous-réseaux) est une compétence fondamentale en réseau. Mais les calculs manuels sont fastidieux et sources d’erreurs :
| Problème | Conséquence | Solution ipcalc |
|---|---|---|
| Erreur de masque | Machines qui ne communiquent pas | Validation instantanée |
| Mauvais broadcast | Paquets perdus | Calcul automatique |
| Sous-réseau trop petit | Pas assez d’IPs pour les hôtes | Calcul du nombre d’hôtes |
| VLSM mal planifié | Gaspillage d’adresses | Option `—split` |
ipcalc existe en deux versions :
| Version | Langage | Mainteneur | Particularités |
|---|---|---|---|
| 0.51 (ce guide) | Perl | jodies.de | Affichage binaire pédagogique, `—split`, `—range` |
| 1.0.3 | C | GitLab/nmav | IPv6 complet, JSON, géolocalisation |
La version Perl (0.51) est celle installée par défaut sur la plupart des distributions. Elle est parfaite pour l’apprentissage grâce à son affichage binaire.
Installation de ipcalc
Section intitulée « Installation de ipcalc »sudo apt update && sudo apt install ipcalcSur RHEL et dérivés, ipcalc fait partie du paquet `initscripts` :
sudo dnf install initscriptssudo pacman -S ipcalcbrew install ipcalcVérification de l’installation
Section intitulée « Vérification de l’installation »ipcalc --versionSortie attendue :
IP Calculator 0.51Comprendre les sorties de ipcalc
Section intitulée « Comprendre les sorties de ipcalc »Commençons par analyser un réseau simple :
ipcalc 192.168.1.100/24 -bSortie :
Address: 192.168.1.100Netmask: 255.255.255.0 = 24Wildcard: 0.0.0.255=>Network: 192.168.1.0/24HostMin: 192.168.1.1HostMax: 192.168.1.254Broadcast: 192.168.1.255Hosts/Net: 254 Class C, Private InternetDécryptage de chaque champ
Section intitulée « Décryptage de chaque champ »| Champ | Valeur | Signification |
|---|---|---|
| Address | 192.168.1.100 | L’IP analysée |
| Netmask | 255.255.255.0 = 24 | Masque en décimal et notation CIDR |
| Wildcard | 0.0.0.255 | Masque inverse (pour ACL Cisco) |
| Network | 192.168.1.0/24 | Adresse du réseau (tous les bits hôtes à 0) |
| HostMin | 192.168.1.1 | Première IP utilisable |
| HostMax | 192.168.1.254 | Dernière IP utilisable |
| Broadcast | 192.168.1.255 | Adresse de diffusion (tous les bits hôtes à 1) |
| Hosts/Net | 254 | Nombre d’IPs assignables (2^8 - 2) |
Affichage binaire (mode pédagogique)
Section intitulée « Affichage binaire (mode pédagogique) »Sans l’option `-b`, ipcalc affiche la représentation binaire :
ipcalc 192.168.1.100/24Address: 192.168.1.100 11000000.10101000.00000001. 01100100Netmask: 255.255.255.0 = 24 11111111.11111111.11111111. 00000000Wildcard: 0.0.0.255 00000000.00000000.00000000. 11111111=>Network: 192.168.1.0/24 11000000.10101000.00000001. 00000000HostMin: 192.168.1.1 11000000.10101000.00000001. 00000001HostMax: 192.168.1.254 11000000.10101000.00000001. 11111110Broadcast: 192.168.1.255 11000000.10101000.00000001. 11111111Hosts/Net: 254 Class C, Private InternetL’espace dans la représentation binaire marque la frontière entre :
- Bits réseau (à gauche) : fixes pour tout le sous-réseau
- Bits hôtes (à droite) : varient pour chaque machine
Syntaxe et options principales
Section intitulée « Syntaxe et options principales »Formats d’entrée acceptés
Section intitulée « Formats d’entrée acceptés »ipcalc accepte plusieurs notations pour le masque :
# Notation CIDR (recommandée)ipcalc 10.0.0.1/24
# Masque décimalipcalc 10.0.0.1 255.255.255.0
# Masque inverse (wildcard Cisco)ipcalc 10.0.0.1 0.0.0.255Options de la CLI
Section intitulée « Options de la CLI »| Option | Description |
|---|---|
| `-b`, `—nobinary` | Supprime l’affichage binaire |
| `-n`, `—nocolor` | Désactive les couleurs ANSI |
| `-c`, `—color` | Force les couleurs |
| `-s`, `—split N1 N2…` | Découpe en sous-réseaux de N hôtes |
| `-r`, `—range` | Décompose une plage en blocs CIDR |
| `—class` | Affiche uniquement le préfixe CIDR |
| `-h`, `—html` | Sortie HTML (expérimental) |
| `-v`, `—version` | Affiche la version |
Découper un réseau en sous-réseaux
Section intitulée « Découper un réseau en sous-réseaux »C’est la fonctionnalité killer de ipcalc. L’option `—split` calcule automatiquement le découpage optimal.
Exemple : 3 départements, 1 réseau
Section intitulée « Exemple : 3 départements, 1 réseau »Tu disposes du réseau `10.0.0.0/24` (254 hôtes) et dois créer 3 sous-réseaux :
- IT : 50 postes
- Compta : 30 postes
- Direction : 20 postes
ipcalc --split 50 30 20 10.0.0.0/24 -bSortie :
Address: 10.0.0.0Netmask: 255.255.255.0 = 24...Hosts/Net: 254 Class A, Private Internet
1. Requested size: 50 hostsNetmask: 255.255.255.192 = 26Network: 10.0.0.0/26HostMin: 10.0.0.1HostMax: 10.0.0.62Broadcast: 10.0.0.63Hosts/Net: 62 Class A, Private Internet
2. Requested size: 30 hostsNetmask: 255.255.255.224 = 27Network: 10.0.0.64/27HostMin: 10.0.0.65HostMax: 10.0.0.94Broadcast: 10.0.0.95Hosts/Net: 30 Class A, Private Internet
3. Requested size: 20 hostsNetmask: 255.255.255.224 = 27Network: 10.0.0.96/27HostMin: 10.0.0.97HostMax: 10.0.0.126Broadcast: 10.0.0.127Hosts/Net: 30 Class A, Private Internet
Needed size: 128 addresses.Used network: 10.0.0.0/25Unused:10.0.0.128/25Analyse du résultat
Section intitulée « Analyse du résultat »| Département | Demandé | Obtenu | Réseau | Plage utilisable |
|---|---|---|---|---|
| IT | 50 | 62 | 10.0.0.0/26 | .1 → .62 |
| Compta | 30 | 30 | 10.0.0.64/27 | .65 → .94 |
| Direction | 20 | 30 | 10.0.0.96/27 | .97 → .126 |
| Réserve | - | 126 | 10.0.0.128/25 | .129 → .254 |
Décomposer une plage d’adresses
Section intitulée « Décomposer une plage d’adresses »L’option `—range` fait l’inverse : elle trouve le ou les blocs CIDR qui couvrent une plage.
ipcalc --range 172.16.0.0-172.16.0.127Sortie :
deaggregate 172.16.0.0 - 172.16.0.127172.16.0.0/25Cas d’usage : agrégation de routes
Section intitulée « Cas d’usage : agrégation de routes »Tu as plusieurs réseaux contigus et veux les annoncer en une seule route :
ipcalc --range 192.168.0.0-192.168.3.255deaggregate 192.168.0.0 - 192.168.3.255192.168.0.0/22Résultat : les 4 réseaux /24 (192.168.0.0 à 192.168.3.0) s’agrègent en un seul /22.
Utilisation dans les scripts
Section intitulée « Utilisation dans les scripts »ipcalc s’intègre facilement dans les scripts d’automatisation.
Extraire une valeur spécifique
Section intitulée « Extraire une valeur spécifique »# Extraire l'adresse de broadcastipcalc 192.168.1.0/24 -b | grep Broadcast | awk '{print $2}'# 192.168.1.255
# Extraire le nombre d'hôtesipcalc 10.0.0.0/22 -b | grep Hosts | awk '{print $2}'# 1022Script de validation d’IP
Section intitulée « Script de validation d’IP »#!/bin/bash# validate-subnet.sh : vérifie si une IP appartient à un sous-réseau
IP=\$1SUBNET=\$2
if [[ -z "\$IP" || -z "\$SUBNET" ]]; then echo "Usage: \$0 <IP> <SUBNET>" exit 1fi
# Récupérer la plageMIN=\$(ipcalc "\$SUBNET" -b | grep HostMin | awk '{print \$2}')MAX=\$(ipcalc "\$SUBNET" -b | grep HostMax | awk '{print \$2}')
echo "Sous-réseau: \$SUBNET"echo "Plage valide: \$MIN - \$MAX"echo "IP testée: \$IP"Générer la config réseau
Section intitulée « Générer la config réseau »#!/bin/bash# generate-netplan.sh : génère une config Netplan depuis ipcalc
CIDR=\$1GATEWAY=\$2
NETWORK=\$(ipcalc "\$CIDR" -b | grep Network | awk '{print \$2}')NETMASK=\$(ipcalc "\$CIDR" -b | grep Netmask | awk '{print \$4}')
cat << EOFnetwork: version: 2 ethernets: eth0: addresses: - \$CIDR routes: - to: default via: \$GATEWAYEOFCas pratiques d’examen
Section intitulée « Cas pratiques d’examen »Ces exercices correspondent aux questions typiques CCNA et Network+.
Exercice 1 : Identifier le réseau
Section intitulée « Exercice 1 : Identifier le réseau »Question : À quel réseau appartient l’hôte 172.16.45.200/20 ?
ipcalc 172.16.45.200/20 -bNetwork: 172.16.32.0/20HostMin: 172.16.32.1HostMax: 172.16.47.254Broadcast: 172.16.47.255Hosts/Net: 4094Réponse : Le réseau est 172.16.32.0/20 (pas 172.16.45.0 !).
Exercice 2 : Combien d’hôtes ?
Section intitulée « Exercice 2 : Combien d’hôtes ? »Question : Combien d’adresses utilisables dans un /19 ?
ipcalc 10.0.0.0/19 -b | grep HostsHosts/Net: 8190Réponse : 8190 hôtes (2^13 - 2).
Exercice 3 : Trouver le bon masque
Section intitulée « Exercice 3 : Trouver le bon masque »Question : Quel masque pour 100 hôtes minimum ?
Méthode : tester les masques jusqu’à trouver le bon.
# /25 = 126 hôtes ✓ipcalc 10.0.0.0/25 -b | grep Hosts# Hosts/Net: 126
# /26 = 62 hôtes ✗ (insuffisant)ipcalc 10.0.0.0/26 -b | grep Hosts# Hosts/Net: 62Réponse : /25 (255.255.255.128) pour 126 hôtes utilisables.
Exercice 4 : Découpage VLSM
Section intitulée « Exercice 4 : Découpage VLSM »Question : Découpe 192.168.10.0/24 en :
- 1 réseau de 60 hôtes
- 2 réseaux de 25 hôtes
- 4 réseaux de 10 hôtes
ipcalc --split 60 25 25 10 10 10 10 192.168.10.0/24 -bVérifie que tous les sous-réseaux tiennent dans le /24 original.
Tableau de référence CIDR
Section intitulée « Tableau de référence CIDR »| CIDR | Masque | Hôtes | Usage typique |
|---|---|---|---|
| /32 | 255.255.255.255 | 1 | Hôte unique (loopback) |
| /31 | 255.255.255.254 | 2* | Liens point-à-point (RFC 3021) |
| /30 | 255.255.255.252 | 2 | Liens routeur-routeur |
| /29 | 255.255.255.248 | 6 | Petit segment |
| /28 | 255.255.255.240 | 14 | Petit bureau |
| /27 | 255.255.255.224 | 30 | Département |
| /26 | 255.255.255.192 | 62 | Étage |
| /25 | 255.255.255.128 | 126 | Grand bureau |
| /24 | 255.255.255.0 | 254 | Réseau standard |
| /23 | 255.255.254.0 | 510 | 2 × /24 |
| /22 | 255.255.252.0 | 1022 | 4 × /24 |
| /16 | 255.255.0.0 | 65534 | Classe B |
| /8 | 255.0.0.0 | 16M+ | Classe A |
*Le /31 est un cas spécial sans broadcast (RFC 3021).
Dépannage
Section intitulée « Dépannage »”Invalid address” ou résultat inattendu
Section intitulée « ”Invalid address” ou résultat inattendu »| Symptôme | Cause probable | Solution |
|---|---|---|
| ”Invalid address” | Format incorrect | Utiliser notation CIDR : `10.0.0.1/24` |
| Mauvais réseau | IP hors plage | Vérifier que l’IP est dans le sous-réseau |
| Résultat tronqué | Terminal trop étroit | Élargir le terminal ou utiliser `-b` |
| Pas de couleurs | Variable TERM | Forcer avec `-c` ou vérifier `$TERM` |
Différences entre versions
Section intitulée « Différences entre versions »Si tu obtiens des résultats différents de ce guide, vérifie ta version :
ipcalc --version- Version 0.51 (Perl) : ce guide
- Version 1.0.x (C) : syntaxe légèrement différente, plus d’options
À retenir
Section intitulée « À retenir »- ipcalc calcule instantanément masques, plages et broadcast
- L’option `-b` simplifie la sortie en supprimant le binaire
- `—split` découpe un réseau en sous-réseaux de tailles spécifiées
- `—range` trouve les blocs CIDR pour une plage d’adresses
- Le nombre d’hôtes = 2^(32-prefix) - 2 (sauf /31 et /32)
- Wildcard = inverse du masque, utilisé dans les ACL Cisco
- Les sous-réseaux doivent être alignés sur des puissances de 2
Prochaines étapes
Section intitulée « Prochaines étapes »Homelab réseau