Entendiendo la notación CIDR y los rangos de IP
Notación CIDR, rangos IP y cálculo de subredes para IPv4 e IPv6. Vea cómo leer prefijos, dimensionar redes y evitar solapes y reglas abiertas.
La notación CIDR se escribe como address/prefix, donde el prefijo es el número de bits iniciales fijados como la porción de red — así, en 10.0.0.0/16 los primeros 16 bits identifican la red y los 16 restantes quedan libres para los hosts.
La mayoría de la gente aprende esto por las malas, más o menos la tercera vez que un security group bloquea el tráfico de forma silenciosa y el culpable resulta ser un prefijo con un dígito de diferencia. Esa única línea es casi todo lo que necesitas para dejar de copiar y pegar 10.0.0.0/16 en un archivo de Terraform y empezar a leerlo. Este artículo te da el modelo mental, las matemáticas en dos pasos para pasar de un prefijo a un rango utilizable y un conteo de hosts, y los lugares donde un desarrollador web o full-stack realmente se encuentra con CIDR (dimensionamiento de VPC, reglas de security group, listas de permitidos y redes de contenedores), incluyendo los detalles que rompen la conectividad sin hacer ruido.
Puntos clave
- La notación CIDR es
address/prefix; el prefijo cuenta los bits iniciales de red, no el total de bits de la dirección. - El número de hosts utilizables de un bloque IPv4 es
2^(32 − prefix) − 2: un/24da 254, un/26da 62 y un/30da 2, restando las direcciones de red y de broadcast. 0.0.0.0/0(IPv4) y::/0(IPv6) significan todas las direcciones: una regla de permiso limitada a0.0.0.0/0en SSH o en un puerto de base de datos lo expone a todo internet.- RFC 1918 reserva tres rangos privados que ves constantemente en configuraciones de nube y contenedores:
10.0.0.0/8,172.16.0.0/12y192.168.0.0/16. - Dos redes que pretendas conectar mediante peering o VPN no deben usar bloques CIDR solapados, o el enrutamiento hacia las direcciones compartidas se vuelve ambiguo.
¿Qué es la notación CIDR?
La notación CIDR (Classless Inter-Domain Routing) expresa una red como una dirección IP seguida de una barra y una longitud de prefijo, donde la longitud del prefijo es la cantidad de bits iniciales que quedan fijados como la porción de red. Reemplazó al rígido sistema de clases A/B/C para que los bloques pudieran tener cualquier tamaño en lugar de ajustarse a límites de 8, 16 o 24 bits. El esquema se introdujo en 1993 con el RFC 1519 y se consolidó en la autoridad actual, el RFC 4632, en 2006. El prefijo no es el número total de bits de la dirección, una confusión habitual. En 192.168.129.23/17, el /17 significa que los primeros 17 bits son bits de red, dejando 15 para los hosts.
El modelo de bits: bits de red y bits de host
Discover how at OpenReplay.com.
Una dirección IPv4 es un número de 32 bits dividido en cuatro octetos de 8 bits, y el prefijo /n traza una línea a través de esos 32 bits: todo lo que queda a la izquierda de la línea es red fija, todo lo que queda a la derecha es host variable. Mueve la línea a la derecha (un prefijo mayor) y obtienes más redes, más pequeñas; muévela a la izquierda y obtienes menos redes, más grandes.
Toma 10.0.1.0/24. El /24 corta después del tercer octeto, así que los primeros 24 bits quedan bloqueados y los últimos 8 son tuyos:
00001010 . 00000000 . 00000001 . 00000000
└──────── network (24 bits) ──────┘ └ host ┘
10 0 1 0–255
Esos 8 bits de host van de 00000000 a 11111111: 256 combinaciones, de 10.0.1.0 a 10.0.1.255. El prefijo es lo único que decide dónde cae el corte.
¿Cuántos hosts hay en un bloque CIDR?
El número de hosts utilizables en un bloque IPv4 es 2^(32 − prefix) − 2: un /24 da 254, un /26 da 62 y un /30 da 2, siendo las dos direcciones restadas la dirección de red (todos los bits de host en 0) y la dirección de broadcast (todos los bits de host en 1), ninguna de las cuales puede asignarse a un host. Calcula primero el total de direcciones (2^(32 − prefix)) y luego resta dos.
| Prefijo | Direcciones totales | Hosts utilizables | Dónde lo ves |
|---|---|---|---|
/16 | 65.536 | 65.534 | Una VPC completa |
/24 | 256 | 254 | Una subred estándar |
/26 | 64 | 62 | Una capa dentro de una subred |
/30 | 4 | 2 | Enlace punto a punto |
/31 | 2 | 2 | Punto a punto (RFC 3021) |
/32 | 1 | 1 | Ruta de host único |
Dos excepciones a la regla del −2 importan en la práctica: un /31 produce 2 direcciones utilizables porque el RFC 3021 elimina la reserva de red y broadcast en enlaces punto a punto, y un /32 es una ruta de host único, la forma que usas para nombrar una IP exacta en un firewall o en una regla de lista de permitidos.
Leer un bloque CIDR en el mundo real
Para leer un bloque como 10.0.1.0/24: la dirección de red es 10.0.1.0, la de broadcast es 10.0.1.255 y el rango utilizable va de 10.0.1.1 a 10.0.1.254. La receta tiene cuatro pasos: (1) el prefijo te dice cuántos bits están fijos; (2) pon los bits de host restantes a 0 para la dirección de red; (3) ponlos a 1 para la de broadcast; (4) todo lo que hay en medio es utilizable.
Para ir en sentido inverso, desde un requisito de hosts hasta un prefijo, elige el bloque más pequeño cuyo conteo de utilizables cubra tu necesidad. ¿Necesitas espacio para 30 dispositivos? Un /27 da 30 utilizables; un /28 da solo 14, así que la respuesta es /27. Puedes verificar cualquier bloque con el módulo ipaddress de la biblioteca estándar de Python, sin necesidad de instalar nada:
python3 -c "import ipaddress; n=ipaddress.ip_network('10.0.1.0/24'); print(n.network_address, n.broadcast_address, n.num_addresses)"
# 10.0.1.0 10.0.1.255 256
Ejecútalo contra cualquier bloque para comprobar tus cálculos a mano antes de llevarlos a una configuración.
Si prefieres no bajar a la terminal, la calculadora CIDR de OpenReplay hace la misma expansión en el navegador. Pega un bloque como 10.0.0.0/16 y devuelve las direcciones de red y broadcast, la netmask y la wildcard, el primer y el último host utilizable, y el conteo total de direcciones. Maneja IPv4 e IPv6 y usa aritmética de enteros grandes, por lo que los bloques grandes y los rangos IPv6 se devuelven de forma exacta. Todo se calcula localmente, así que los rangos internos nunca salen de tu máquina.
Dónde se encuentran realmente los desarrolladores con CIDR
La mayoría de los desarrolladores se encuentran con CIDR en la configuración de nube y de aplicaciones mucho antes que en una tabla de enrutamiento. El RFC 1918 reserva tres rangos privados que verás constantemente (10.0.0.0/8, 172.16.0.0/12 y 192.168.0.0/16), ninguno de los cuales es enrutable en la internet pública, razón por la cual las VPC en la nube y las redes de Docker se nutren de ellos. Cuatro patrones cubren casi todo lo que vas a tocar:
- Dimensionamiento de VPC y subredes. Estableces un bloque en la creación y tallas subredes a partir de él. El bloque IPv4 de una VPC de AWS debe estar entre
/16y/28, y cada subred reserva las primeras cuatro direcciones más la última (cinco, no dos), por lo que una subred/24rinde 251 direcciones utilizables en AWS, no 254. El−2genérico es un techo, no una garantía. - Reglas de firewall y de security group. Las reglas se delimitan por un CIDR, p. ej. permitir entrada al 5432 solo desde
10.10.1.0/24, de modo que una capa de base de datos acepte tráfico Postgres desde la capa web y nada más. - Listas de permitidos y de bloqueados en la configuración de la aplicación. Los orígenes CORS, las reglas de WAF, los rangos de origen del API gateway y las directivas
allow/denydenginxtoman todos bloques CIDR. Un prefijo demasiado estrecho bloquea silenciosamente clientes legítimos; las repeticiones de sesión de estas implementaciones suelen mostrar el fallo como peticiones bloqueadas o fallidas que se rastrean hasta un prefijo equivocado. - La trampa de los CIDR solapados. Dos redes que pretendas conectar mediante peering o VPN no deben usar bloques CIDR solapados, porque un host no puede tener dos rutas no ambiguas hacia la misma dirección. Dale a cada una su propio rango RFC 1918 sin solapamientos, por ejemplo
10.10.0.0/16y10.20.0.0/16.
Un valor vale la pena memorizar: 0.0.0.0/0 en IPv4 (y ::/0 en IPv6) significa todas las direcciones. Es útil para una ruta por defecto, y un disparo en el pie como regla de permiso de entrada: 0.0.0.0/0 en el puerto 22 o 5432 es una puerta abierta a todo internet.
IPv6 usa la misma notación
IPv6 aplica la notación de barra idéntica a direcciones de 128 bits, y /64 es el tamaño estándar por subred, dejando 64 bits para hosts dentro de cada subred. Trata /64 como una convención, no como una ley: no es un invariante universal, e incluso AWS permite netmasks de subred IPv6 desde /44 hasta /64 en incrementos de /4. La lógica de división de bits es exactamente la misma. Solo la dirección es más larga.
Lee el prefijo como un conteo de bits de red, aplica 2^(32 − prefix) − 2 para los hosts IPv4 utilizables, recuerda las excepciones de /31, /32 y las reservas de la nube, y mantén las redes en peering sin solapamientos. Haz eso y podrás dimensionar una subred o auditar una regla de firewall sin recurrir a una calculadora. La próxima vez que aparezca un bloque CIDR en un pull request, interprétalo de un vistazo y comprueba si ese /0 debía estar ahí.
Preguntas frecuentes
¿Cuál es la diferencia entre una máscara de subred como 255.255.255.0 y un prefijo CIDR como /24?
Expresan el mismo límite de dos formas. Una máscara de subred es un valor de 32 bits donde los bits de red son 1 y los bits de host son 0, así que 255.255.255.0 en binario son 24 unos seguidos de 8 ceros. El prefijo CIDR /24 simplemente cuenta esos bits 1 iniciales. 255.255.255.0 equivale a /24, 255.255.255.192 equivale a /26 y 255.255.255.252 equivale a /30. CIDR es la abreviatura de la misma máscara.
¿Cuántas direcciones IP utilizables da un /30, y por qué es habitual para enlaces punto a punto?
Un /30 da 2 direcciones utilizables de 4 en total, porque las direcciones de red y de broadcast siguen estando reservadas bajo la regla estándar de menos dos. Dos direcciones utilizables son exactamente lo suficiente para los dos extremos de un enlace punto a punto, y por eso /30 fue la elección tradicional. El RFC 3021 permitió más tarde que /31 sirviera al mismo propósito con 2 direcciones utilizables de 2, eliminando la reserva de red y broadcast y sin desperdiciar direcciones.
¿Pueden dos subredes tener bloques CIDR solapados en la misma red?
No si necesitan enrutar entre sí. Dentro de una única tabla de enrutamiento, un solapamiento se resuelve mediante la coincidencia del prefijo más largo: un paquete para 10.0.1.5 sigue la ruta 10.0.1.0/24 en lugar de la más amplia 10.0.0.0/16, así que el camino nunca es ambiguo. El problema aparece cuando conectas dos redes que se direccionaron de forma independiente. Una conexión de peering entre dos VPC que ambas usan 10.0.0.0/16 falla, porque cada lado ya enruta ese bloque localmente y no tiene manera de alcanzar al otro. Por eso el peering de VPC y las VPN site-to-site requieren rangos sin solapamiento. Asigna a cada red su propio bloque RFC 1918 distinto desde el principio.
¿Un número de prefijo más pequeño significa una red más grande o más pequeña?
Un número de prefijo más pequeño significa una red más grande. El prefijo cuenta bits de red fijos, así que menos bits de red dejan más bits de host libres. Un /8 tiene 24 bits de host y más de 16 millones de direcciones, mientras que un /24 tiene 8 bits de host y 256 direcciones. A medida que el número de prefijo baja, el tamaño del bloque se duplica en cada paso: un /23 contiene el doble de direcciones que un /24, y un /16 contiene 256 veces más que un /24.
¿Por qué AWS da a una subred /24 solo 251 direcciones utilizables en lugar de 254?
AWS reserva cinco direcciones por subred, no las dos que asume la regla genérica de menos dos. AWS retiene las primeras cuatro direcciones de cada bloque CIDR de subred más la última para la dirección de red, el router de la VPC, DNS, uso futuro y broadcast. Así, un /24 con 256 direcciones totales rinde 251 utilizables en AWS, frente a 254 en un cálculo de red simple. Comprueba siempre las reglas de reserva de tu proveedor de nube antes de dimensionar una subred de forma ajustada.