Agregación
Dos bloques pueden fundirse en uno cuando tienen el mismo tamaño, son adyacentes y el bloque combinado está alineado a su nuevo tamaño: 10.0.0.0/25 y 10.0.0.128/25 se convierten en 10.0.0.0/24, pero 10.0.0.128/25 y 10.0.1.0/25 no. La herramienta ordena la entrada, funde todo lo que se solapa o se toca y escribe cada rango resultante como el menor número de bloques alineados. Es exactamente lo que hacen los routers al resumir rutas, y lo que quieres antes de pegar una lista en un cortafuegos: menos reglas, coincidencia más rápida, sin duplicados.
Rangos a CIDR
Un rango arbitrario como 192.168.1.6 – 192.168.1.9 rara vez es un solo bloque. El algoritmo toma el bloque alineado más grande que empieza en la primera dirección del rango y cabe dentro, y repite desde el final de ese bloque: aquí 192.168.1.6/31 y 192.168.1.8/31. Un rango de 255 direcciones que empiece en .1 necesita ocho bloques.
Excepciones
«Todo en 10.0.0.0/8 salvo 10.1.0.0/16» hace falta a menudo en túneles divididos y listas de permitidos. Restar un /16 de un /8 deja 8 bloques (/9, /10 … /16), porque cada paso de la división binaria desprende una mitad. La salida crece aproximadamente un bloque por cada bit de diferencia.
Formatos de salida
La forma nftables genera un set que puedes pegar en nft add element; iptables produce una regla por bloque; la forma Cisco usa máscaras wildcard; la forma HAProxy es un archivo para acl src -f. La forma de rangos sirve para documentación y para sistemas que esperan pares inicio-fin.
Preguntas
¿Por qué mis dos /24 no se convirtieron en un /23?
Un /23 tiene que empezar en un tercer octeto par: 10.0.2.0/24 y 10.0.3.0/24 se convierten en 10.0.2.0/23, pero 10.0.1.0/24 y 10.0.2.0/24 no, porque 10.0.1.0/23 empezaría en 10.0.0.0.
¿Cuántas direcciones tiene el resultado?
La línea de resumen bajo la herramienta las cuenta por separado para IPv4 e IPv6. En IPv6 los recuentos son potencias de dos y se muestran así.
¿Maneja entradas solapadas?
Sí. Los solapamientos y duplicados se funden, así que puedes pegar listas de varias fuentes y obtener una unión limpia.
¿Puedo convertir un bloque CIDR en un rango inicio-fin?
Cambia el formato de salida a rangos. Cada bloque muestra su primera y última dirección; para un único bloque de entrada esa es toda la respuesta.