Diferencia de Rangos
Calcula A menos B para rangos de IP
The range to subtract from
The range to subtract
Enter two CIDR ranges to calculate A − B
Range Difference (A − B)
Calculates the set difference between two IP ranges. The result contains all addresses that are in Range A but not in Range B. Useful for creating firewall rules with exceptions.
La herramienta Range Difference calcula la diferencia de conjuntos entre dos rangos IP -- direcciones que existen en el rango A pero no en el rango B. Ingresa 10.0.0.0/8 como rango A y 10.1.0.0/16 como rango B para obtener los ocho bloques CIDR que cubren todo en el /8 excepto ese /16 específico.
Entendiendo la diferencia de rangos IP
La operación de diferencia de conjuntos (A menos B) es uno de los cálculos de rangos IP más útiles en la práctica. Responde a la pregunta: si comienzo con el rango A y elimino todo lo que se superpone con el rango B, ¿qué queda? El resultado es la porción de A que no se superpone con B, expresada como una lista mínima de bloques CIDR.
Esto surge frecuentemente en el diseño de políticas de firewall y seguridad. El ejemplo clásico es "permitir todo en esta red excepto la subred de administración". Tienes una regla amplia de permitir para 10.0.0.0/8, pero necesitas excluir 10.0.0.0/24 porque es tu red de administración con sus propias reglas más estrictas. La diferencia 10.0.0.0/8 menos 10.0.0.0/24 te da la lista exacta de bloques CIDR que necesitas para la regla de permitir. Sin esta herramienta, tendrías que calcular manualmente qué bloques cubren el espacio de direcciones restante, lo cual es tedioso y propenso a errores.
El resultado de una operación de diferencia a menudo contiene muchos más bloques CIDR de lo que podrías esperar. Cuando eliminas un bloque del medio de un rango, el espacio restante a cada lado puede no alinearse con límites CIDR limpios. Eliminar un solo /32 de un /24 puede producir ocho bloques CIDR. Esto no es un defecto de la herramienta -- es una propiedad fundamental de cómo funcionan los bloques CIDR. Cada bloque debe tener un tamaño de potencia de dos y estar alineado en binario, por lo que expresar un "rango con un hueco" arbitrario requiere múltiples bloques para cubrir el espacio restante.
Cómo calcular la diferencia de rangos IP (A menos B)
- Ingresa el Rango A -- el rango base o bloque CIDR (por ejemplo,
10.0.0.0/8) - Ingresa el Rango B -- el rango a restar (por ejemplo,
10.1.0.0/16) - La herramienta calcula A menos B -- todas las direcciones en A que no están en B
- Revisa los bloques CIDR resultantes que representan A con la porción B eliminada
Ejemplos de diferencia de rangos
Restar un bloque pequeño de un bloque grande
A: 10.0.0.0/8 (10.0.0.0 - 10.255.255.255)
B: 10.1.0.0/16 (10.1.0.0 - 10.1.255.255)
Result (A - B):
10.0.0.0/16 (10.0.0.0 - 10.0.255.255)
10.2.0.0/15 (10.2.0.0 - 10.3.255.255)
10.4.0.0/14 (10.4.0.0 - 10.7.255.255)
10.8.0.0/13 (10.8.0.0 - 10.15.255.255)
10.16.0.0/12 (10.16.0.0 - 10.31.255.255)
10.32.0.0/11 (10.32.0.0 - 10.63.255.255)
10.64.0.0/10 (10.64.0.0 - 10.127.255.255)
10.128.0.0/9 (10.128.0.0 - 10.255.255.255)
El /8 menos un /16 produce 8 bloques CIDR que cubren todo en el /8 excepto el /16 excluido.
Otros escenarios comunes
| Rango A | Rango B | Resultado | Descripción |
|---|---|---|---|
192.168.0.0/24 | 192.168.0.128/25 | 192.168.0.0/25 | Eliminar mitad superior |
192.168.0.0/24 | 192.168.0.0/25 | 192.168.0.128/25 | Eliminar mitad inferior |
192.168.0.0/24 | 192.168.1.0/24 | 192.168.0.0/24 | Sin superposición, A sin cambios |
192.168.0.0/24 | 192.168.0.0/16 | Vacío | B contiene completamente a A |
10.0.0.0/24 | 10.0.0.100/32 | Múltiples CIDRs cubriendo .0-.99 y .101-.255 | Eliminar un solo host |
Eliminar un solo host de una subred
A: 10.0.0.0/24 (10.0.0.0 - 10.0.0.255)
B: 10.0.0.100/32 (10.0.0.100)
Result (A - B):
10.0.0.0/26 (10.0.0.0 - 10.0.0.63)
10.0.0.64/27 (10.0.0.64 - 10.0.0.95)
10.0.0.96/30 (10.0.0.96 - 10.0.0.99)
10.0.0.101/32 (10.0.0.101)
10.0.0.102/31 (10.0.0.102 - 10.0.0.103)
10.0.0.104/29 (10.0.0.104 - 10.0.0.111)
10.0.0.112/28 (10.0.0.112 - 10.0.0.127)
10.0.0.128/25 (10.0.0.128 - 10.0.0.255)
Eliminar un solo /32 de un /24 crea un "hueco" que requiere múltiples bloques CIDR para expresar las direcciones restantes.
Cuándo usar la herramienta de diferencia de rangos
- Reglas de firewall "permitir todo excepto" -- cuando necesitas permitir un rango amplio pero excluir subredes específicas, calcula la diferencia para obtener la lista exacta de CIDR para tus reglas
- Inventario de espacio de direcciones -- resta las subredes asignadas de un bloque padre para ver qué queda disponible para nuevas asignaciones
- Políticas de seguridad basadas en excepciones -- aplica una política a un rango de red menos los hosts conocidos o subredes de administración
- Configuración de VPN split-tunnel -- enruta todo el tráfico corporativo a través de la VPN excepto rangos IP específicos de servicios en la nube
- Migración de red -- rastrea qué porciones de un rango de direcciones antiguo han sido migradas vs cuáles permanecen en la red legacy
- Rangos de exclusión DHCP -- calcula los bloques CIDR a asignar cuando ciertas direcciones dentro de una subred están reservadas
Cómo funciona la diferencia de conjuntos para rangos IP
La operación de diferencia de rangos es matemáticamente equivalente a A AND (NOT B). Devuelve direcciones que satisfacen estar en A mientras simultáneamente no están en B.
Pasos del algoritmo
- Si B no se superpone con A en absoluto, el resultado es simplemente A (nada que restar)
- Si B contiene completamente a A, el resultado es vacío (todo es restado)
- Si B se superpone parcialmente con A, divide A en los límites de B:
- La porción de A antes de la superposición permanece
- La porción de A después de la superposición permanece
- La porción superpuesta se elimina
- Convierte las porciones restantes a notación CIDR mínima
Por qué el resultado tiene muchos bloques CIDR
Cuando eliminas un bloque del medio de un rango, el espacio de direcciones restante a cada lado puede no alinearse con límites CIDR limpios. Cada lado debe expresarse como una serie de bloques CIDR de tamaño decreciente que juntos cubren el espacio entre el límite de A y el límite de B. Esta es la misma razón por la que los rangos IP arbitrarios a menudo requieren múltiples CIDRs -- el requisito de alineación binaria impide que un solo bloque cubra una porción arbitraria del espacio de direcciones.
Visualización de la diferencia
A: |==================================|
B: |==========|
A - B: |========| |==============|
^-- porción izquierda ^-- porción derecha
Cada porción (izquierda y derecha) se convierte a su conjunto mínimo de bloques CIDR de forma independiente.
Consejos prácticos para la diferencia de rangos
Cuando construyas reglas de firewall del tipo "permitir todo excepto", siempre comienza calculando la diferencia para ver cuántos bloques CIDR contiene el resultado. Si eliminar una subred de administración de un /16 produce 15 bloques CIDR, podrías decidir que implementar 15 reglas separadas es peor que reestructurar tu enfoque -- quizás usando una regla de permitir más amplia combinada con una regla de denegar de mayor prioridad para la excepción. Muchas plataformas de firewall procesan las reglas en orden y se detienen en la primera coincidencia, así que una regla de denegar antes de una regla de permitir puede lograr el mismo efecto con solo dos entradas en lugar de quince.
Cuando uses la diferencia para inventario de espacio de direcciones, recuerda que el resultado te muestra el espacio disponible a nivel CIDR, no necesariamente espacio que sea práctico de usar. Un espacio de 3 direcciones entre dos asignaciones aparecerá como tres bloques /32 en la salida de diferencia, lo cual es matemáticamente correcto pero no útil para asignar una nueva subred. Busca los bloques más grandes en la salida cuando planifiques nuevas asignaciones.
El orden de las operaciones importa significativamente. A - B y B - A producen resultados completamente diferentes. Si A es más grande que B y B está dentro de A, A - B te da A con un hueco. Pero B - A te da un conjunto vacío porque todo en B también está en A, así que no hay nada en B que no esté en A. Siempre verifica dos veces cuál rango es A (la base) y cuál es B (la sustracción).
Preguntas frecuentes
¿La diferencia de rangos es lo mismo que la exclusión CIDR?
Son funcionalmente idénticas. La herramienta de exclusión CIDR está diseñada para restar múltiples CIDRs de excepción de un solo bloque padre, mientras que la diferencia de rangos maneja el caso par A-menos-B. Para restar muchas excepciones, la herramienta de exclusión es más conveniente.
¿Puedo encadenar múltiples operaciones de diferencia?
Sí. Para restar múltiples rangos de A, calcula A - B1, luego resta B2 de ese resultado, y así sucesivamente. Alternativamente, usa la herramienta de exclusión CIDR que maneja múltiples sustracciones en un solo paso.
¿Importa el orden? ¿Es A-B lo mismo que B-A?
No, el orden importa significativamente. 10.0.0.0/8 - 10.1.0.0/16 elimina una pieza pequeña de un bloque grande. 10.1.0.0/16 - 10.0.0.0/8 elimina todo porque B contiene completamente a A, resultando en un conjunto vacío.
¿Por qué eliminar una IP de un /24 produce tantos bloques?
Un /24 tiene 256 direcciones. Eliminar una crea 255 direcciones restantes, que no pueden expresarse como un solo bloque CIDR (255 no es una potencia de dos). La herramienta debe cubrir el espacio restante con los bloques alineados más grandes posibles, resultando en 8 bloques para una eliminación del medio.
¿Qué pasa si A y B no se superponen en absoluto?
El resultado es simplemente A sin cambios. Como B no tiene direcciones en común con A, no hay nada que restar, y el rango original completo permanece.
¿Puedo usar esto con rangos IPv6?
Sí. El mismo algoritmo de diferencia aplica a direcciones IPv6 de 128 bits. Los resultados pueden contener más bloques CIDR debido al espacio de direcciones más grande, pero la lógica es idéntica.
Herramientas relacionadas
- Range Union - Combinar rangos IP superpuestos en una lista unificada
- Range Intersection - Encontrar direcciones comunes entre dos rangos IP
- CIDR Exclusion Tool - Restar CIDRs de excepción de un bloque padre
- CIDR Gap Finder - Encontrar espacios no asignados dentro de un CIDR padre
- Next Available Subnet Finder - Encontrar la siguiente subred disponible dentro de un bloque padre