Cómo Calcular una Máscara de Subred (CIDR Explicado con un Ejemplo Práctico)
Para calcular una máscara de subred a partir de un prefijo CIDR, se ponen en 1 esa cantidad de bits desde la izquierda de un número de 32 bits, se rellena el resto con 0 y luego se lee cada grupo de 8 bits como un número decimal. Un prefijo /24 fija los primeros 24 bits en 1, lo que se traduce en 255.255.255.0.
Qué significa realmente el número CIDR
Una dirección IPv4 tiene 32 bits, escritos como cuatro grupos de 8 bits (octetos) en decimal. La notación CIDR, esa barra seguida de un número que aparece después de una dirección como 192.168.1.0/24, indica cuántos de esos 32 bits están fijados como porción de red. Los bits restantes quedan disponibles para los hosts de esa red.
Un /24 fija los primeros 24 bits, dejando 8 bits para hosts. Un /26 fija 26 bits, dejando solo 6. Cuantos menos bits queden para hosts, menos dispositivos puede alojar esa red, y la matemática detrás de esto es una potencia de dos directa: una red con h bits de host tiene 2^h direcciones en total.
Calculando la máscara a mano: 192.168.1.0/24
Se toma el prefijo CIDR, 24, y se escribe un número de 32 bits con los primeros 24 bits en 1 y los últimos 8 en 0:
11111111.11111111.11111111.00000000
Se convierte cada grupo de 8 bits a decimal. Ocho 1 seguidos son 255, y ocho 0 son 0:
255 . 255 . 255 . 0
Esa es la máscara de subred: 255.255.255.0. Para obtener la dirección de red, se alinean la dirección IP y la máscara en binario y se aplica un AND bit a bit, bit por bit, dejando un 1 solo donde ambos valores tienen un 1:
| Octeto 1 | Octeto 2 | Octeto 3 | Octeto 4 | |
|---|---|---|---|---|
| Dirección IP | 11000000 | 10101000 | 00000001 | 00000000 |
| Máscara de subred | 11111111 | 11111111 | 11111111 | 00000000 |
| Red (AND) | 11000000 | 10101000 | 00000001 | 00000000 |
Eso da una dirección de red de 192.168.1.0, que no cambia en este caso porque la porción de host de la dirección original ya era toda ceros. La dirección de broadcast es la operación contraria: se toma la dirección de red y se ponen en 1 todos los bits de host, lo que aquí da 192.168.1.255. Todo lo que queda en medio, de 192.168.1.1 a 192.168.1.254, es una dirección de host utilizable. Eso son 256 direcciones totales en el bloque, menos 2 reservadas (la dirección de red y la de broadcast), para 254 hosts utilizables.
Dividiendo un /24 en cuatro subredes /26
Supongamos que tenemos 192.168.1.0/24 y necesitamos dividirlo en cuatro redes más pequeñas y separadas, tal vez una por piso de una oficina. Pasar de /24 a /26 toma prestados 2 bits adicionales para la porción de red (26 − 24 = 2), y 2 bits prestados siempre producen 2^2 = 4 subredes iguales. Cada subred /26 tiene 32 − 26 = 6 bits de host restantes, así que cada una aloja 2^6 = 64 direcciones totales, 62 de ellas utilizables.
| Subred | Dirección de red | Rango utilizable | Broadcast |
|---|---|---|---|
| 1 | 192.168.1.0/26 | 192.168.1.1 – 192.168.1.62 | 192.168.1.63 |
| 2 | 192.168.1.64/26 | 192.168.1.65 – 192.168.1.126 | 192.168.1.127 |
| 3 | 192.168.1.128/26 | 192.168.1.129 – 192.168.1.190 | 192.168.1.191 |
| 4 | 192.168.1.192/26 | 192.168.1.193 – 192.168.1.254 | 192.168.1.255 |
Nótese que cada dirección de red avanza en saltos de 64, el tamaño del bloque, y que la dirección de broadcast de cada subred es exactamente una unidad menor que la dirección de red de la siguiente. Ese patrón se mantiene sin importar a qué prefijo se esté dividiendo: el tamaño del bloque siempre es 2^h, donde h es la cantidad de bits de host restantes, y las subredes cubren el espacio de direcciones sin huecos ni solapamientos.
Tabla de referencia: CIDR a máscara de subred
Una chuleta con los prefijos que se van a encontrar en la práctica, desde una ruta de host único /32 hasta un bloque /8:
| CIDR | Máscara de subred | Direcciones totales | Hosts utilizables |
|---|---|---|---|
| /8 | 255.0.0.0 | 16,777,216 | 16,777,214 |
| /16 | 255.255.0.0 | 65,536 | 65,534 |
| /24 | 255.255.255.0 | 256 | 254 |
| /25 | 255.255.255.128 | 128 | 126 |
| /26 | 255.255.255.192 | 64 | 62 |
| /27 | 255.255.255.224 | 32 | 30 |
| /28 | 255.255.255.240 | 16 | 14 |
| /29 | 255.255.255.248 | 8 | 6 |
| /30 | 255.255.255.252 | 4 | 2 |
| /31 | 255.255.255.254 | 2 | 2 (punto a punto) |
| /32 | 255.255.255.255 | 1 | 1 (ruta de host) |
Calcula con tu propia dirección
Escribe cualquier dirección IPv4 y un prefijo CIDR o una máscara a continuación, y el desglose (dirección de red, broadcast, rango utilizable y la máscara en binario) se actualiza mientras escribes.
Errores comunes y casos límite
Olvidar que la dirección de red y la de broadcast no son hosts utilizables. Un /24 tiene 256 direcciones en total, pero solo 254 se pueden asignar realmente a un dispositivo. Es un error de conteo frecuente planear la capacidad según el total de direcciones en lugar del total utilizable, y luego quedarse sin espacio dos direcciones antes de lo esperado.
Tratar /31 y /32 como cualquier otro prefijo. El RFC 3021 convierte al /31 en un caso especial para enlaces punto a punto: ambas direcciones del par son utilizables, ya que un bloque de 2 direcciones no tiene margen para reservar una como broadcast. Un /32 es una única dirección aislada, algo que se ve sobre todo como ruta de host o dirección de loopback, y no tiene ninguna dirección de red ni de broadcast que restar.
Confundir la máscara de subred con la máscara wildcard. La máscara de subred marca los bits de red con 1, 255.255.255.0 para un /24. La máscara wildcard es su inversa a nivel de bits, marca los bits de host con 1 en su lugar, 0.0.0.255 para ese mismo /24. Las máscaras wildcard aparecen en las listas de control de acceso de equipos Cisco y similares, y escribir una máscara de subred donde el dispositivo espera una wildcard (o al revés) hace que se filtre silenciosamente el conjunto equivocado de direcciones.
Suponer que una máscara de subred siempre es una serie contigua válida de 1. Una máscara como 255.0.255.0 parece plausible a primera vista, pero no es válida: los bits en 1 no forman un bloque continuo desde la izquierda, así que no puede expresarse como prefijo CIDR en absoluto. Las máscaras de subred reales siempre son una cantidad de bits en 1 desde la izquierda seguidos de bits en 0, y nada más.
Preguntas frecuentes
¿Cómo convierto una máscara de subred de vuelta a un prefijo CIDR?
Se cuenta la cantidad de bits en 1 de la máscara, leyendo de izquierda a derecha en binario. 255.255.255.0 es 11111111.11111111.11111111.00000000, que tiene 24 unos, así que es un /24. Esto solo funciona de forma limpia cuando la máscara es una serie contigua válida de 1 seguida de 0; una máscara como 255.0.255.0 no tiene equivalente CIDR porque sus bits no son contiguos.
¿Por qué tomar prestados bits para subredes siempre produce una potencia de dos? Cada bit que se toma prestado de la porción de host duplica la cantidad de valores posibles que ese bit puede representar, 0 o 1. Se toma prestado 1 bit y se obtienen 2 subredes, se toman 2 y se obtienen 4, se toman 3 y se obtienen 8. Es la misma razón por la que un byte (8 bits) puede representar 256 valores distintos: cada bit adicional duplica el conteo.
¿Cuál es la diferencia entre una máscara de subred y una puerta de enlace predeterminada? Una máscara de subred le indica a un dispositivo qué parte de una dirección IP es la red y qué parte es el host, para que pueda determinar si otra dirección está en su propia red local. La puerta de enlace predeterminada es una configuración aparte, la dirección IP del router al que un dispositivo envía el tráfico cuando el destino no está en su red local. Se necesitan ambas configuradas correctamente para que un dispositivo pueda alcanzar algo fuera de su propia subred.
¿Puedo subdividir usando un prefijo que no divida de forma pareja, como partir un /24 en 3 redes? No en exactamente 3 partes iguales, no, porque el subnetting siempre divide un bloque en una potencia de dos. Dividir un /24 da 2, 4, 8, 16 y así sucesivamente, nunca 3. En la práctica esto significa que se subdividiría en 4 (tomando prestados 2 bits) y se dejaría una /26 sin usar, o se dividiría más para un departamento pequeño, en lugar de intentar forzar una división exacta en tres partes.