Tri & Comparaison IP
Trier et comparer les adresses IP
Les résultats triés apparaîtront ici...Le tri d'IP ordonne les adresses numeriquement (et non alphabetiquement) de sorte que 10.0.0.2 precede 10.0.0.10 -- essentiel pour comparer les ACL, les listes blanches et les regles de pare-feu.
Qu’est-ce que le tri d’adresses IP ?
Le tri d’adresses IP ordonne une liste d’adresses IP par leur valeur numerique plutot que par leur representation en chaine de caracteres. Cette distinction est essentielle car le tri alphabetique (lexicographique) par defaut utilise par la plupart des outils de texte produit des resultats absurdes pour les adresses IP.
Considerons une liste simple : 10.0.0.1, 10.0.0.2, 10.0.0.10. Un tri alphabetique place 10.0.0.10 entre 10.0.0.1 et 10.0.0.2 car la chaine “10” precede “2” caractere par caractere. Un tri numerique place correctement 10.0.0.10 apres 10.0.0.2, correspondant a la structure logique de l’espace d’adressage.
Ce probleme s’aggrave avec les donnees reelles. Un ensemble de regles de pare-feu avec des centaines d’adresses IP devient illisible lorsqu’il est trie alphabetiquement, et comparer deux de ces listes pour trouver les differences devient quasiment impossible.
Tri numerique vs alphabetique
La cause fondamentale du probleme est que les adresses IP ressemblent a des chaines de caracteres mais representent des nombres. Chaque adresse IPv4 est un entier non signe de 32 bits affiche sous forme de quatre octets decimaux separes par des points. La bonne maniere de les trier est de comparer par valeur numerique, et non par codes de caracteres.
La comparaison
| Adresse | Position alphabetique | Position numerique |
|---|---|---|
| 10.0.0.1 | 1re | 1re |
| 10.0.0.10 | 2e | 4e |
| 10.0.0.100 | 3e | 5e |
| 10.0.0.2 | 4e | 2e |
| 10.0.0.20 | 5e | 3e |
Le tri alphabetique est faux car il compare caractere par caractere : le caractere ‘1’ (ASCII 49) est inferieur a ‘2’ (ASCII 50), donc “10” est trie avant “2”, et “100” est trie avant “20”.
Comment fonctionne le tri numerique
Le tri numerique des IP convertit chaque adresse en un seul entier de 32 bits pour la comparaison :
- Analyser chaque octet comme un entier :
10.0.0.2devient[10, 0, 0, 2] - Convertir en valeur 32 bits :
10 * 2^24 + 0 * 2^16 + 0 * 2^8 + 2=167 772 162 - Trier par les valeurs entieres
Alternativement, vous pouvez trier octet par octet : comparer les premiers octets ; s’ils sont egaux, comparer les seconds ; et ainsi de suite. Cela produit le meme resultat sans calculer de grands entiers et constitue l’approche la plus intuitive.
Pour les adresses IPv6, le meme principe s’applique mais avec des valeurs de 128 bits ou 8 groupes de valeurs de 16 bits. Les adresses doivent etre normalisees au prealable (expansion du raccourci :: et suppression des zeros initiaux) pour assurer une comparaison coherente.
Deduplication
Le tri des IP s’associe naturellement a la deduplication — la suppression des doublons d’une liste. Lorsqu’on travaille avec des listes fusionnees provenant de sources multiples (differents exports de pare-feu, fichiers de logs multiples ou listes blanches combinees), les doublons sont courants et doivent etre supprimes avant que les donnees soient exploitables.
Le flux de travail standard est :
- Analyser toutes les IP de l’entree
- Valider chaque adresse (ecarter les entrees mal formees)
- Trier numeriquement
- Dedupliquer en supprimant les entrees identiques consecutives (efficace sur une liste triee)
- Produire la liste propre, triee et sans doublons
Cela produit une representation canonique facile a comparer, auditer et importer dans d’autres outils.
Cas d’usage courants
- Audit des regles de pare-feu : Trier et dedupliquer les adresses IP a partir des configurations de pare-feu exportees pour identifier les regles redondantes, les entrees manquantes ou les ajouts non autorises
- Comparaison d’ACL : Trier deux listes de controle d’acces avant d’executer un diff pour montrer clairement quelles adresses ont ete ajoutees, supprimees ou modifiees entre les versions
- Gestion des listes blanches : Maintenir une liste blanche maitresse triee et dedupliquee pouvant etre comparee aux configurations actives pour detecter les derives
- Analyse de logs : Trier les IP extraites des logs d’acces pour identifier rapidement les plages, reperer les tendances et regrouper les adresses associees
- Reponse aux incidents : Fusionner les indicateurs de compromission (IOC) IP provenant de multiples flux de renseignement sur les menaces en une seule liste de blocage triee et dedupliquee
- Documentation reseau : Produire des inventaires IP propres et tries pour la documentation reseau, les audits de conformite et les rapports de planification de capacite
Essayez ces exemples
Tri numerique : .1, .2, .10, .20, .100. Chaque adresse est comparee octet par octet comme des entiers, produisant un ordre naturel qui correspond a la structure des reseaux.
10.0.0.1, 10.0.0.2, 10.0.0.10, 10.0.0.20, 10.0.0.100 Tri alphabetique : .1 < .10 < .100 < .2 < .20. C'est incorrect car la comparaison de chaines traite le caractere '1' comme inferieur a '2', independamment de la valeur numerique. L'adresse 10.0.0.2 apparait a tort apres 10.0.0.100.
10.0.0.1, 10.0.0.10, 10.0.0.100, 10.0.0.2, 10.0.0.20