taap.digitalherramientas de ingeniería de redes

Convertir rango de IP a CIDR

Muchos firewalls y prefix-lists solo aceptan prefijos. Esta herramienta descompone cualquier rango arbitrario en el menor número de bloques CIDR.

range2cidr

El problema

Un rango como 192.168.1.10 – 192.168.1.100 no corresponde a ningún prefijo único: los bloques CIDR siempre tienen tamaño potencia de 2 y comienzan en un múltiplo de su tamaño. Para expresar el rango exacto, sin dejar afuera ni agregar direcciones, hay que dividirlo en varios bloques.

Algoritmo voraz

  1. Parta de la dirección inicial.
  2. Busque el bloque más grande que empiece exactamente ahí (la dirección debe ser múltiplo del tamaño) y que no pase del final del rango.
  3. Agréguelo a la lista, avance hasta la dirección siguiente al bloque y repita hasta cubrir el final.
tamaño = mayor 2k tal que inicio mod 2k = 0 y inicio + 2k − 1 ≤ fin

Este método produce la cantidad mínima de bloques; es el mismo que usan herramientas como netaddr en Python o ipcalc con la opción de desagregación.

Ejemplo: 192.168.1.10 a 192.168.1.100

BloqueRangoDirecciones
192.168.1.10/31.10 – .112
192.168.1.12/30.12 – .154
192.168.1.16/28.16 – .3116
192.168.1.32/27.32 – .6332
192.168.1.64/27.64 – .9532
192.168.1.96/30.96 – .994
192.168.1.100/32.1001

Siete bloques que suman exactamente 91 direcciones. Note el patrón: los bloques crecen mientras la alineación lo permite y luego decrecen al acercarse al final.

Uso en equipos

! Cisco IOS: prefix-list
ip prefix-list RANGO seq 10 permit 192.168.1.10/31
ip prefix-list RANGO seq 20 permit 192.168.1.12/30
ip prefix-list RANGO seq 30 permit 192.168.1.16/28
...

# Linux nftables
nft add set inet filter rango { type ipv4_addr\; flags interval\; }
nft add element inet filter rango { 192.168.1.10-192.168.1.100 }

# MikroTik: address-list acepta rangos directamente
/ip firewall address-list add list=rango address=192.168.1.10-192.168.1.100

Si su plataforma acepta rangos (nftables, RouterOS, muchos NGFW), úselos; la conversión a CIDR es necesaria en ACL de Cisco y Junos, en prefix-lists de BGP, en iptables sin ipset y en listas de bloqueo de servicios en la nube.

Consejos

  • Si el resultado tiene muchos bloques y la precisión no es crítica, evalúe usar un prefijo algo mayor (la calculadora de sumarización muestra cuánto sobra).
  • Rangos de proveedores (listas de IPs de nubes, de geolocalización) suelen venir como inicio–fin; convertirlos reduce reglas y uso de TCAM.

Preguntas frecuentes

¿Por qué un rango simple genera tantos bloques?

Porque cada bloque CIDR debe empezar en un múltiplo de su tamaño. Un rango que empieza o termina en valores “desalineados” obliga a usar bloques pequeños en los extremos.

¿El resultado es la cantidad mínima de bloques?

Sí. El algoritmo voraz, que toma siempre el bloque alineado más grande posible, produce la descomposición mínima y exacta.

¿Puedo invertir el orden de inicio y fin?

Sí. Si la dirección inicial es mayor que la final, la herramienta las intercambia automáticamente.

Herramienta para estudio y diseño. Valide la configuración en laboratorio y con la documentación del fabricante antes de aplicarla en producción.