Plage IP vers CIDR

Convertir une plage IP en notation CIDR

Comprendre Conversion de plage IP vers CIDR
TL;DR

Convertir une plage IP en blocs CIDR consiste a trouver l'ensemble minimal de notations CIDR qui couvrent exactement une plage IP de debut a fin -- essentiel pour les regles de pare-feu et les ACL.

Qu’est-ce que la conversion plage vers CIDR ?

La conversion plage vers CIDR prend une adresse IP de debut et une adresse IP de fin et produit l’ensemble minimal de blocs CIDR qui couvrent exactement chaque adresse de cette plage — ni plus, ni moins. C’est l’operation inverse de l’expansion CIDR vers plage : au lieu de passer de 192.168.1.0/24 a une plage de 256 adresses, on passe d’une plage a la notation CIDR.

Cette conversion est essentielle car la plupart des infrastructures reseau — pare-feu, routeurs, groupes de securite cloud et listes de controle d’acces — fonctionnent avec des blocs CIDR, pas des plages IP arbitraires. Quand un fournisseur communique une plage IP (par ex. “nos serveurs utilisent les adresses 203.0.113.10 a 203.0.113.50”), vous devez exprimer cette plage sous forme d’un ou plusieurs blocs CIDR pour configurer votre infrastructure.

Si la plage s’aligne parfaitement sur une frontiere CIDR (par ex. 192.168.1.0 a 192.168.1.255), le resultat est un bloc unique. Mais en pratique, les plages arbitraires s’alignent rarement proprement, et la conversion produit plusieurs blocs de tailles differentes.

Pourquoi les plages non alignees necessitent plusieurs CIDR

Les blocs CIDR suivent des regles mathematiques strictes. Un bloc /n doit commencer a une adresse qui est un multiple de 2^(32-n). Par exemple, un bloc /24 (256 adresses) doit commencer a une adresse ou le dernier octet est 0 (comme 192.168.1.0). Un bloc /25 (128 adresses) doit commencer a 0 ou 128.

Lorsqu’une plage commence a une adresse qui n’est pas une frontiere CIDR valide, aucun bloc unique ne peut la representer. L’algorithme doit decomposer la plage en les plus grands blocs alignes possibles, en travaillant des deux extremites vers le milieu.

Considerons la plage 10.0.0.5 a 10.0.0.19 (15 adresses) :

  1. Debut a 10.0.0.5 : Le plus grand bloc aligne commencant a .5 est un /32 (adresse unique). Mais .5 est impair, on ne peut donc commencer qu’avec 10.0.0.5/32.
  2. Ensuite, 10.0.0.6 : Cette adresse est alignee sur un /31 (2 adresses), ce qui donne 10.0.0.6/31 (couvre .6 et .7).
  3. Ensuite, 10.0.0.8 : Elle est alignee sur un /29 (8 adresses), ce qui donne 10.0.0.8/29 (couvre .8 a .15).
  4. Ensuite, 10.0.0.16 : Un /30 couvrirait .16 a .19, ce qui donne 10.0.0.16/30 (couvre .16 a .19).

Resultat : 4 blocs CIDR au lieu d’un seul. L’algorithme trouve toujours le nombre minimum de blocs, mais les plages non alignees necessitent inheremment plus d’entrees.

L’algorithme en bref

L’approche standard fonctionne comme suit :

  1. Convertir les adresses de debut et de fin en entiers de 32 bits
  2. Trouver le plus grand bloc en puissance de deux qui commence a l’adresse courante et ne depasse pas l’adresse de fin
  3. Enregistrer ce bloc CIDR et avancer l’adresse courante au-dela de celui-ci
  4. Repeter jusqu’a ce que la plage entiere soit couverte

Cet algorithme glouton garantit de produire l’ensemble minimal de blocs CIDR pour toute plage donnee.

Utilisations pratiques

La conversion plage vers CIDR apparait dans de nombreux scenarios reels :

  • Configuration de pare-feu : Quand un service tiers publie une plage IP pour la mise en liste blanche (par ex. “nos serveurs webhook utilisent les adresses 198.51.100.32 a 198.51.100.63”), vous avez besoin de blocs CIDR pour vos regles de pare-feu. Dans ce cas, la plage correspond judicieusement a 198.51.100.32/27.
  • Groupes de securite cloud : Les Security Groups AWS, les NSG Azure et les regles de pare-feu GCP necessitent tous la notation CIDR. Si un fournisseur vous donne une plage IP brute, vous devez la convertir avant de pouvoir ajouter la regle.
  • Bases de donnees de geolocalisation IP : Les registres internet regionaux (RIR) publient les allocations IP sous forme de plages. Les outils qui consomment ces donnees convertissent souvent les plages en CIDR pour une correspondance de prefixe efficace a l’aide d’algorithmes de correspondance de prefixe le plus long.
  • Optimisation des routes BGP : Les ingenieurs reseau convertissent les allocations IP des clients de plages en blocs CIDR pour l’annonce BGP. Moins de blocs, plus grands, reduisent la taille de la table de routage globale.
  • Audit des ACL : Lors de la comparaison de deux versions d’une liste de controle d’acces, la conversion des plages en CIDR fournit une forme normalisee qui rend les diffs significatifs et lisibles par l’homme.
  • Planification de migration : Lors du deplacement de charges de travail entre centres de donnees ou fournisseurs cloud, la conversion plage IP vers CIDR aide a planifier le nouveau schema d’adressage et a verifier qu’aucune adresse ne chevauche les allocations existantes.

La maitrise de cette conversion garantit que vos regles reseau sont a la fois precises (couvrant exactement les adresses prevues) et efficaces (utilisant le moins d’entrees CIDR possible).

Essayez ces exemples

Plage alignee -- CIDR unique Valide

Cette plage est parfaitement alignee sur une frontiere /24, elle correspond donc a un seul bloc CIDR : 192.168.1.0/24. L'adresse de debut a tous les bits d'hote a 0 et l'adresse de fin a tous les bits d'hote a 1.

192.168.1.0-192.168.1.255
Plage non alignee -- CIDR multiples Valide

Cette plage ne commence ni ne finit sur une frontiere en puissance de deux, elle necessite donc plusieurs blocs CIDR : 192.168.1.1/32, 192.168.1.2/31, 192.168.1.4/31, 192.168.1.6/32. Quatre blocs sont necessaires pour couvrir exactement 6 adresses.

192.168.1.1-192.168.1.6