Skip to content
Volver al blog
Tutoriales

Calcular la máscara de subred: tabla CIDR de /8 a /32

Un /26 deja 62 direcciones utilizables, no 64, y en un /31 la regla de menos dos falla. Aprende a leer un prefijo CIDR, calcular la máscara y comprobarla en línea.

15 min de lectura

Notación CIDR y máscaras de subred: cómo leer de /8 a /32

El número que va después de la barra en 192.168.1.0/24 cuenta bits, no direcciones. Dice cuántos de los 32 bits de una dirección IPv4 pertenecen a la red; lo que sobra pertenece a los hosts. Esa sola frase es casi todo lo que hay que saber sobre la notación CIDR.

Todo lo demás sale de ahí. Un /24 deja 8 bits de host, así que el bloque contiene 2⁸ = 256 direcciones. Un /26 deja 6, así que contiene 64. Cada bit que le devuelves al lado del host duplica el bloque; cada bit que le quitas duplica la cantidad de bloques. La cantidad que de verdad puedes asignar a dispositivos suele ser dos menos que el total, porque la primera dirección nombra la red y la última es la de broadcast. Un /26 te da 62 hosts utilizables, no 64.

Dos prefijos rompen esa regla de menos dos a propósito. Y una máscara comodín no es una máscara de subred, aunque las dos terminen pegadas en el campo de la otra todo el tiempo. Los dos casos están abajo, junto con el método para sacar la máscara a mano. Si solo quieres la respuesta para un bloque, la calculadora de subredes la imprime; este artículo trata de llegar ahí sin ella.

Lo que dice realmente la notación CIDR

Una máscara de subred es a su vez un número de 32 bits, escrito como se escribe una dirección. Sus bits son una serie de 1 seguida de una serie de 0. Los 1 marcan bits de red, los 0 marcan bits de host. Escribe un /26 completo y obtienes:

11111111.11111111.11111111.11000000
    255  .   255  .   255  .   192

Convierte cada octeto de vuelta a decimal y eso es 255.255.255.192. La notación CIDR cuenta los 1 iniciales en lugar de escribir los treinta y dos. 192.168.1.0/26 y 192.168.1.0 255.255.255.192 son la misma afirmación en dos sintaxis, y cuál de las dos quiere un equipo depende por completo del comando que estés escribiendo.

El conteo es todo el truco. /8, /16 y /24 caen en fronteras de octeto, y por eso se ven prolijos en decimal: 255.0.0.0, 255.255.0.0, 255.255.255.0. Nada en la notación exige eso. /22 y /27 son igual de válidos. Cortan por la mitad de un octeto y producen máscaras como 255.255.252.0 que parecen arbitrarias hasta el momento exacto en que las escribes en binario.

Por qué desaparecieron las clases. Antes de 1993 los bits iniciales de una dirección decidían su tamaño: la clase A tomaba un /8, la clase B un /16, la clase C un /24, y no había nada intermedio. Una organización con 300 hosts tenía que reclamar una clase B y desperdiciar más de sesenta y cinco mil direcciones, o tomar dos bloques de clase C y cargar con dos rutas. CIDR (RFC 1519, revisado después como RFC 4632) rompió ese acoplamiento. El prefijo viaja con la dirección, así que un bloque puede ser cualquier potencia de dos. Las clases todavía aparecen en exámenes de certificación y en documentación vieja, pero el enrutamiento con clases quedó obsoleto desde que llegó CIDR en 1993: la máscara decide dónde termina una red, no el primer octeto.

La tabla de máscaras de subred, de /8 a /32

En la tabla de CIDR a máscara de subred, la última columna es deliberada: muestra lo que produce la fórmula genérica 2ⁿ − 2, que coincide con el conteo real de utilizables en todas partes salvo en las dos últimas filas.

PrefijoMáscara de subredMáscara comodínDirecciones totalesHosts utilizablesEl 2ⁿ − 2 ingenuo da
/8255.0.0.00.255.255.255167772161677721416777214
/9255.128.0.00.127.255.255838860883886068388606
/10255.192.0.00.63.255.255419430441943024194302
/11255.224.0.00.31.255.255209715220971502097150
/12255.240.0.00.15.255.255104857610485741048574
/13255.248.0.00.7.255.255524288524286524286
/14255.252.0.00.3.255.255262144262142262142
/15255.254.0.00.1.255.255131072131070131070
/16255.255.0.00.0.255.255655366553465534
/17255.255.128.00.0.127.255327683276632766
/18255.255.192.00.0.63.255163841638216382
/19255.255.224.00.0.31.255819281908190
/20255.255.240.00.0.15.255409640944094
/21255.255.248.00.0.7.255204820462046
/22255.255.252.00.0.3.255102410221022
/23255.255.254.00.0.1.255512510510
/24255.255.255.00.0.0.255256254254
/25255.255.255.1280.0.0.127128126126
/26255.255.255.1920.0.0.63646262
/27255.255.255.2240.0.0.31323030
/28255.255.255.2400.0.0.15161414
/29255.255.255.2480.0.0.7866
/30255.255.255.2520.0.0.3422
/31255.255.255.2540.0.0.1220
/32255.255.255.2550.0.0.011−1

Lee la tabla como un conjunto de relaciones y no como una lista de respuestas. Cada fila hacia abajo parte el bloque a la mitad: un /24 contiene 256 direcciones, un /25 contiene 128, un /26 contiene 64. La columna de comodín es la máscara de subred con todos los bits invertidos, y por eso 255.255.255.192 y 0.0.0.63 siempre aparecen en la misma línea. Las dos filas en negrita son donde la fórmula estándar deja de describir la realidad, tema de una sección más adelante.

Solo hace falta memorizar los valores del último octeto de la columna de máscara, porque se repiten: 128, 192, 224, 240, 248, 252, 254, 255. Esos son los únicos ocho valores de byte no triviales con los que puede terminar una máscara válida. Si quieres ver por qué, conviértelos tú mismo: el conversor de bases numéricas imprime cualquiera de ellos en binario.

Leer la tabla al revés: de la máscara de subred al prefijo CIDR

Dada una máscara en decimal punteado, cuenta los bits en 1. Cada 255 aporta 8, y el único octeto interesante aporta el resto:

Último octeto de la máscara128192224240248252254255
Bits que suma12345678

Así, 255.255.255.192 es 8 + 8 + 8 + 2 = /26. Con 255.255.252.0 sale 8 + 8 + 6 + 0 = /22, porque 252 en binario es 11111100.

De aquí salen dos cosas. Cualquier octeto que no sea ni 255 ni 0 es el octeto de frontera, y una máscara válida solo puede tener uno. Ese mismo octeto, además, te da directamente el tamaño de bloque, que es la siguiente sección.

Cómo calcular a mano una máscara de subred y la red

El método mecánico tiene tres pasos y sirve para cualquier prefijo. El ejemplo resuelto de abajo usa 192.168.1.130/26, pero lo que importa es el procedimiento, no esta dirección.

Paso 1 — encontrar el tamaño de bloque

El tamaño de bloque es 256 − el octeto de frontera de la máscara.

Para un /26 la máscara es 255.255.255.192, así que el tamaño de bloque es 256 − 192 = 64. Las subredes de ese tamaño caen en múltiplos de 64 en el cuarto octeto: 0, 64, 128, 192. No hay otros puntos de inicio posibles.

El tamaño de bloque y la cantidad de direcciones son el mismo número; aquí llegas a él desde la máscara en vez de desde el conteo de bits.

Paso 2 — encontrar en qué bloque cae la dirección

Divide el octeto de frontera de la dirección entre el tamaño de bloque y redondea hacia abajo.

La dirección es 192.168.1.130, el tamaño de bloque es 64, así que 130 ÷ 64 = 2.03…, que redondeado hacia abajo da 2. Multiplica de vuelta: 2 × 64 = 128. La dirección está en el bloque que empieza en 128.

Casi todos los errores ocurren aquí, y siempre en la misma dirección: das por hecho que la dirección que te pasaron es el inicio de su bloque, y por lo general no lo es. 192.168.1.130 es una dirección de host que vive en el tercer /26 de ese /24.

Paso 3 — red, broadcast, primer y último host

El inicio del bloque es la dirección de red. El broadcast es el inicio del bloque más el tamaño de bloque menos uno. Todo lo que queda estrictamente entre ambos es asignable:

Network    192.168.1.128
Broadcast  192.168.1.191
Usable     192.168.1.129 - 192.168.1.190
Usable     62 (of 64 total)
Netmask    255.255.255.192
Wildcard   0.0.0.63

El broadcast es 128 + 64 − 1 = 191. El primer host es la red + 1, el último host es el broadcast − 1, y el conteo de utilizables es 64 − 2 = 62, que coincide con la fila /26 de la tabla.

Comprimido en una frase que te puedas repetir: el tamaño de bloque es 256 menos el octeto de la máscara; redondea la dirección hacia abajo al múltiplo más cercano; eso es tu red, y el inicio del siguiente bloque menos uno es tu broadcast.

El método no es específico del cuarto octeto. Para un /22 la máscara es 255.255.252.0, así que el octeto de frontera es el tercero y el tamaño de bloque ahí es 256 − 252 = 4. Los bloques entonces empiezan en 10.0.0.0, 10.0.4.0, 10.0.8.0, y el bloque 10.0.0.0/22 llega hasta el broadcast 10.0.3.255 con direcciones utilizables de 10.0.0.1 a 10.0.3.254: cuatro /24 consecutivos dentro de un mismo dominio de broadcast. Los mismos tres pasos, otro octeto.

Si el lado de binario a decimal es donde te frenas, la guía de conversión entre bases numéricas cubre la conversión en sí con más profundidad de la que le corresponde a un artículo sobre subredes.

Si prefieres revisar tu trabajo en un script y no de cabeza, la biblioteca estándar de Python ya sabe todo esto:

import ipaddress

net = ipaddress.ip_network("192.168.1.130/26", strict=False)

print(net)                     # 192.168.1.128/26
print(net.network_address)     # 192.168.1.128
print(net.broadcast_address)   # 192.168.1.191
print(net.netmask)             # 255.255.255.192
print(net.hostmask)            # 0.0.0.63
print(net.num_addresses)       # 64
print(len(list(net.hosts())))  # 62

strict=False es lo que te deja pasar una dirección de host en vez de una dirección de red; con el strict=True por defecto, la misma llamada lanza ValueError.

Dónde deja de ser cierta la regla de menos dos

La resta tiene una razón detrás. En una subred común, el patrón de host de todos ceros nombra la red misma y el patrón de todos unos es la dirección de broadcast dirigido. Ninguno se puede configurar en una interfaz, así que un bloque de 2ⁿ direcciones le ofrece 2ⁿ − 2 a los hosts. Por eso un /24 da 254 y un /26 da 62.

Esa misma razón marca el límite. Cuando un bloque es demasiado chico para contener esas dos direcciones reservadas, restarlas deja de tener sentido.

Un /31 tiene dos direcciones y dos hosts utilizables. El RFC 3021 define el /31 para enlaces punto a punto. Un enlace así tiene exactamente dos extremos y ningún segmento compartido, así que no hay nada que una dirección de broadcast tenga que hacer ni nada que una dirección de red tenga que identificar. Las dos direcciones se van a los dos extremos. Aplicar 2ⁿ − 2 aquí devuelve 0, porque la fórmula responde una pregunta sobre una topología a la que no se aplica. El requisito que viene con eso es estricto: el /31 solo es válido en interfaces genuinamente punto a punto. Un segmento LAN de acceso múltiple sigue necesitando /30 o más corto, y Windows no acepta un /31 en una NIC.

Un /32 tiene una dirección y un host utilizable. Es una ruta de host único: interfaces de loopback, rutas estáticas, direcciones anycast, reglas de firewall de una sola dirección. No hay dirección de broadcast, así que el − 2 de la fórmula devolvería −1.

Python coincide en ambos casos:

import ipaddress

p2p = ipaddress.ip_network("203.0.113.4/31")
print([str(h) for h in p2p.hosts()])  # ['203.0.113.4', '203.0.113.5']

host = ipaddress.ip_network("10.0.0.1/32")
print([str(h) for h in host.hosts()])  # ['10.0.0.1']

La versión que conviene recordar es la condición: la resta quita dos direcciones concretas, así que comprueba que existan antes de quitarlas. Un /31 y un /32 no tienen dirección de broadcast, y ahí no hay nada que quitar.

Totales, utilizables y cantidad de subredes son tres números distintos

Estos tres se confunden todo el tiempo, con razón: los tres son potencias de dos derivadas del mismo prefijo.

  • Direcciones totales en un /p es 2^(32 − p). Un /26: 64.
  • Hosts utilizables es eso menos 2, salvo en /31 y /32. Un /26: 62.
  • Cantidad de subredes que obtienes al partir un /p padre en hijos /q es 2^(q − p). Partir un /24 en /26 toma dos bits prestados, así que son 2² = 4 subredes.

Los tres responden preguntas distintas, así que una frase como “un /26 te da 4” solo es cierta si la pregunta era sobre partir un /24. Partir también te cuesta direcciones, porque cada subred hija reserva su propio par de red y broadcast. Cuatro /26 tallados de un /24 contienen 4 × 62 = 248 direcciones utilizables frente a las 254 del padre: seis direcciones gastadas en la partición misma.

Máscara comodín frente a máscara de subred: qué comando quiere cuál

Una máscara comodín es el inverso bit a bit de la máscara de subred. Donde la máscara de subred tiene 1, la comodín tiene 0. Toma la fila /26 de la tabla: máscara 255.255.255.192, comodín 0.0.0.63. Invierte cada bit de una y tienes la otra, y por eso nunca aparecen separadas.

Las dos se usan en sentidos opuestos, y esa es la parte que hay que interiorizar. Una máscara de subred se aplica con un AND bit a bit, así que un bit en 1 significa “este bit es parte de la red”. Una comodín es un filtro de coincidencia, así que un bit en 0 significa “este bit tiene que coincidir” y un bit en 1 significa “no importa”. La misma operación de fondo, polaridad opuesta. Si la mecánica a nivel de bits te queda difusa, la guía de operaciones bit a bit cubre AND, OR y NOT en términos más generales.

Cuál de las dos quiere un equipo no es cuestión de preferencia. Para el bloque 192.168.1.128/26:

! wants the subnet mask
ip address 192.168.1.129 255.255.255.192

! wants the wildcard mask
access-list 10 permit 192.168.1.128 0.0.0.63
network 192.168.1.128 0.0.0.63 area 0
! Cisco ASA — wants the subnet mask, unlike IOS ACLs
access-list OUT permit ip 192.168.1.128 255.255.255.192 any
# Linux iproute2 — takes the prefix directly
ip addr add 192.168.1.129/26 dev eth0

Las ACL de Cisco IOS y las sentencias network de OSPF toman la máscara comodín; el ASA, en cambio, toma la máscara de subred. Es un mismo fabricante con dos convenciones dentro de la misma familia de productos, y por eso este es el fallo de copiar y pegar más común del área. Otras plataformas tienen sus propias convenciones, así que antes de pegar un valor en un campo que no conoces, confirma cuál de las dos espera ese campo.

El modo de fallo es lo que lo vuelve peligroso. Pega 255.255.255.192 en una ACL de IOS y el router lo lee como comodín: tres octetos de puros 1 significan “no importa”, así que los primeros tres octetos dejan de compararse por completo y la regla alcanza mucho más allá del bloque que tenías en mente. No hay error de sintaxis ni línea de log: queda una sentencia permit con el alcance equivocado. El error inverso al menos tiene alguna posibilidad de saltar a la vista, porque 0.0.0.63 no es una máscara de subred válida: no tiene una serie inicial de 1. Que una plataforma concreta lo rechace o lo acepte en silencio no es algo que convenga descubrir en producción.

Por qué las comodines de ACL pueden tener huecos y las máscaras de subred no

Una máscara de subred debe ser una serie contigua de 1 seguida de 0. Esa contigüidad es lo que permite que la operación AND parta una dirección en exactamente dos partes; no es un capricho de estilo. Un valor como 255.0.255.0 tiene un hueco, no describe ninguna frontera coherente, y los equipos lo rechazan. Python también:

import ipaddress
ipaddress.ip_network("10.0.0.0/255.0.255.0")
# ValueError: '10.0.0.0/255.0.255.0' does not appear to be an IPv4 or IPv6 network

Solo 33 máscaras son válidas, de /0 a /32. Cualquier otra cosa es un error de tipeo.

Las comodines de ACL no tienen esa restricción, porque no parten una dirección en una parte de red y una de host. Son un filtro de coincidencia bit por bit, así que los huecos son legales y a veces útiles: una sola comodín con un hueco puede coincidir, por ejemplo, con todas las direcciones impares de un rango. Por esa diferencia expresiva los dos valores no se pueden intercambiar: no son el mismo tipo de objeto, solo se parecen escritos en decimal punteado.

Rangos privados, CGNAT y otros reservados

Un prefijo te dice qué tan grande es un bloque. Qué bloque es te dice si puedes usarlo.

BloqueRangoReservado por
10.0.0.0/810.0.0.0 – 10.255.255.255RFC 1918 privado
172.16.0.0/12172.16.0.0 – 172.31.255.255RFC 1918 privado
192.168.0.0/16192.168.0.0 – 192.168.255.255RFC 1918 privado
100.64.0.0/10100.64.0.0 – 100.127.255.255RFC 6598 NAT de operador
169.254.0.0/16169.254.0.0 – 169.254.255.255RFC 3927 link-local
255.255.255.255/32dirección únicabroadcast limitado

Los rangos del RFC 1918 nunca se enrutan en la internet pública, y eso es lo que los vuelve seguros para asignar desde ahí. Los otros tres aparecen por razones distintas.

100.64.0.0/10 es espacio de NAT de operador (carrier-grade NAT). Si tu ISP te entrega una dirección de ahí, estás detrás de su NAT y ninguna conexión entrante te va a alcanzar sin un túnel. No es espacio privado en el sentido del RFC 1918, y tampoco puedes tomarlo para un plan interno, porque tu proveedor puede estar usándolo ya del otro lado de tu router.

169.254.0.0/16 es link-local. Un host se asigna una de estas cuando falla DHCP, así que ver una dirección 169.254 en una interfaz es un diagnóstico y no una configuración: nada respondió al pedido DHCP. El tráfico hacia ella nunca cruza un router.

Para ejemplos en documentación y runbooks, el RFC 5737 reserva 192.0.2.0/24, 198.51.100.0/24 y 203.0.113.0/24 justamente para que un ejemplo copiado y pegado no pueda apuntar a un host real.

172.16.0.0/12 son dieciséis /16, no uno

Este es el rango reservado con el que la gente se equivoca, y la culpa la tiene el prefijo. Un /12 toma prestados cuatro bits del segundo octeto, así que el bloque abarca de 172.16.0.0 a 172.31.255.255: dieciséis /16 consecutivos, no solo 172.16.x.x.

Las consecuencias corren en las dos direcciones. Una dirección como 172.20.5.1 es privada, cómodamente dentro del rango, aunque no empiece con 172.16. En cambio, 172.15.x.x y 172.32.x.x son direcciones públicas que le pertenecen a alguien más, así que una regla de firewall o un chequeo del tipo “confía en el rango interno” escrito contra 172.0.0.0/8 termina confiando en silencio en una buena rebanada de internet.

Si necesitas confirmar una frontera así, la tabla te da la aritmética: un /12 tiene 2^(32−12) direcciones, el segundo octeto avanza de a 256 − 240 = 16, y 16 + 16 = 32, así que el bloque termina justo antes de 172.32.0.0.

VLSM: partir un bloque en subredes desiguales

Las subredes del mismo tamaño son fáciles y casi siempre equivocadas. A una sucursal a la que le dieron un solo 192.168.1.0/24 le pueden hacer falta cuatro segmentos sin nada en común: cien estaciones de trabajo, cincuenta teléfonos, una docena de servidores y un puñado de interfaces de administración. Parte el /24 en cuatro /26 iguales y el segmento de estaciones de trabajo se desborda a los 62 hosts, mientras el de administración se queda con 62 direcciones para atender diez dispositivos.

Variable Length Subnet Masking (máscaras de subred de longitud variable) significa darle a cada segmento el prefijo que de verdad necesita. El mismo /24 queda así, tallado en un /25, un /26 y dos /28.

Asigna de mayor a menor. Cada bloque tiene que empezar en un múltiplo de su propio tamaño, así que el bloque más grande elige primero:

SegmentoHosts necesariosPrefijoRedRango utilizableBroadcastMáscara de subred
Estaciones de trabajo100/25192.168.1.0192.168.1.1 – 192.168.1.126192.168.1.127255.255.255.128
Voz50/26192.168.1.128192.168.1.129 – 192.168.1.190192.168.1.191255.255.255.192
Servidores12/28192.168.1.192192.168.1.193 – 192.168.1.206192.168.1.207255.255.255.240
Administración10/28192.168.1.208192.168.1.209 – 192.168.1.222192.168.1.223255.255.255.240
sin asignar/27192.168.1.224192.168.1.225 – 192.168.1.254192.168.1.255255.255.255.224

El mismo plan, bloque por bloque, con el método de tres pasos:

  1. El /25 tiene tamaño de bloque 256 − 128 = 128, así que empieza en 0 y su broadcast es 0 + 128 − 1 = 127. Utilizables de 1 a 126, o sea 126 direcciones: alcanzan para 100 estaciones de trabajo y todavía sobra lugar. La fila /25 de la tabla coincide: 128 totales, 126 utilizables.
  2. La siguiente dirección libre es 128. El /26 tiene tamaño de bloque 64, y 128 es múltiplo de 64, así que entra: red 192.168.1.128, broadcast 128 + 64 − 1 = 191, utilizables de 129 a 190. Eso da 62 utilizables para 50 teléfonos. Fila /26 de la tabla: 64 totales, 62 utilizables.
  3. La siguiente libre es 192. El /28 tiene tamaño de bloque 16, y 192 = 16 × 12, así que entra: red 192.168.1.192, broadcast 207, utilizables de 193 a 206, o sea 14 direcciones para 12 servidores. Fila /28 de la tabla: 16 totales, 14 utilizables.
  4. La siguiente libre es 208, y 208 = 16 × 13, así que el segundo /28 cae en 192.168.1.208 con broadcast 223 y utilizables de 209 a 222.

Eso da cuenta de 128 + 64 + 16 + 16 = 224 de las 256 direcciones, y deja de 192.168.1.224 a 192.168.1.255. Esas 32 direcciones resultan ser exactamente un /27 alineado, que es de donde saldrían más tarde los enlaces punto a punto: dieciséis /31 entran ahí, uno por enlace entre routers.

Por qué de mayor a menor, y qué cuesta no hacerlo. Supón que colocas los dos /28 al principio: 192.168.1.0/28 y 192.168.1.16/28. La siguiente dirección libre es 192.168.1.32, y un /25 tiene que empezar en un múltiplo de 128, así que no puede empezar ahí. Tiene que saltar hasta 192.168.1.128. Las direcciones de 32 a 127 no se pierden, pero solo quedan usables como piezas alineadas más chicas (un /27 en 192.168.1.32 y un /26 en 192.168.1.64), así que el espacio sobrante termina disperso en vez de quedar en un solo bloque contiguo arriba. Agrega un segmento más al pedido y la misma maniobra deja de entrar.

Ordenar por tamaño evita eso. Después de colocar un bloque, la siguiente dirección libre es un múltiplo del tamaño de ese bloque, y un múltiplo de una potencia de dos mayor es automáticamente múltiplo de todas las menores, así que cada bloque siguiente, más chico, queda alineado justo donde terminó el anterior. Nunca tienes que saltar. Antes de llevar un plan así a un switch, pasarlo por la tabla de división de la calculadora de subredes es más rápido que comprobar a mano la alineación de cada segmento.

Cinco errores que sobreviven hasta producción

1. Tratar la dirección que escribiste como la dirección de red

Síntoma: una regla de firewall no coincide con nada, o una ruta cubre la mitad equivocada de un segmento. Causa: leer 192.168.1.130/26 como red 192.168.1.0 y broadcast 192.168.1.255, o sea la frontera del /24, porque es la que se ve en decimal. Solución: aplica el paso 2. Tamaño de bloque 64, 130 ÷ 64 redondea hacia abajo a 2, así que la red es 2 × 64 = 128. El bloque va de 192.168.1.128 a 192.168.1.191, y 192.168.1.0 es una subred completamente distinta. Cada vez que un prefijo sea más largo que /24, asume que la dirección que te pasaron es una dirección de host hasta que la hayas enmascarado.

2. Aplicar 2ⁿ − 2 a un /31

Síntoma: una herramienta de IPAM o una planilla reporta 0 hosts utilizables para un enlace punto a punto que está arriba y pasando tráfico. Causa: la regla de menos dos asume que existen una dirección de red y una de broadcast para restar. En un /31 no existen. Solución: trata /31 y /32 como las condiciones de frontera de la fórmula y no como anomalías. El RFC 3021 hace asignables las dos direcciones de un /31, y un /32 es una ruta de host único con una sola dirección. Cualquier cosa que reporte 0 o −1 aplicó la fórmula fuera de su dominio. Comprueba primero el soporte de /31 en la interfaz específica, ya que la excepción solo se sostiene en enlaces genuinamente punto a punto.

3. Tratar 172.16.0.0/12 como si fuera solo 172.16.x.x

Síntoma: un servicio interno queda inalcanzable desde una oficina, o una regla de “bloquear todos los rangos privados” tiene fugas. Causa: leer el /12 como si fuera un /16. Solución: el rango va de 172.16.0.0 a 172.31.255.255. Escribe las ACL y las listas de permitidos contra el prefijo 172.16.0.0/12 y no contra un patrón de octetos, y recuerda que 172.15.x.x y 172.32.x.x quedan afuera, en la internet pública. Si estás comparando a mano, el segundo octeto es el octeto de frontera y avanza de a 16.

4. Pegar una comodín en un campo que quiere una máscara de subred

Síntoma: una ACL permite mucho más, o mucho menos, de lo que se buscaba, y nada en la configuración se ve mal. Causa: las ACL de IOS y las sentencias network de OSPF toman la comodín mientras el ASA toma la máscara de subred, y 0.0.0.63 y 255.255.255.192 son visualmente intercambiables a primera vista. Solución: revisa el campo antes de pegar, no después. Una señal útil: para cualquier prefijo de /8 o más largo, una máscara de subred empieza con 255 y una comodín empieza con 0. Si un valor que está en una ACL o en una sentencia network de OSPF empieza con 255, es una máscara de subred metida en un campo de comodín.

5. Escribir una máscara no contigua, o generar una por accidente

Síntoma: un equipo rechaza una línea de configuración, o un script casero produce máscaras que se ven plausibles y están mal. Causa: un valor como 255.0.255.0 no es una máscara de subred válida: tiene un hueco. La versión con script es más sutil: en JavaScript, los operadores de desplazamiento toman su operando derecho módulo 32, así que un prefijo fuera de rango produce en silencio una máscara equivocada de aspecto plausible (33 se vuelve /1, −1 se vuelve /31) en lugar de lanzar un error. Solución: valida el rango del prefijo antes de desplazar, y rechaza cualquier máscara que no sea una serie sólida de 1 seguida de 0. Aquí vale más una biblioteca que lance una excepción con entrada inválida que una que adivine, porque los dos modos de fallo son silenciosos.

Preguntas frecuentes

¿Cuál es la diferencia entre una subred y una VLAN?

Una VLAN es un dominio de broadcast de capa 2 configurado en switches; una subred es un rango de direcciones de capa 3. Normalmente se mapean uno a uno, pero nada lo obliga: puedes poner dos subredes en una VLAN, o llevar una VLAN por un trunk entre sitios. Renumera la subred y el ID de VLAN no cambia.

¿Cuántas subredes obtengo si parto un /24 en /26?

Cuatro. La cantidad es 2 elevado a la cantidad de bits prestados, y /26 es dos bits más largo que /24, así que son 2² = 4 subredes de 64 direcciones cada una. Cada hija reserva su propia dirección de red y de broadcast, así que los cuatro /26 contienen 248 direcciones utilizables frente a las 254 del /24 padre.

¿La notación CIDR funciona igual en IPv6?

La barra sigue contando bits de red iniciales, así que /64 significa 64 bits de red de los 128. Lo que no se traslada es la regla de menos dos: IPv6 no tiene dirección de broadcast, así que no se resta nada del total. La tabla de arriba y la calculadora que hay detrás son solo para IPv4.

¿Qué significa 0.0.0.0/0?

Cero bits de red, así que coincide con todas las direcciones IPv4. En una tabla de enrutamiento es la ruta por defecto, la que se usa cuando ningún prefijo más específico coincide. Como dirección de escucha significa “todas las interfaces”, y por eso un servicio escuchando en 0.0.0.0 es alcanzable desde todas las redes a las que está conectada la máquina.

¿Qué pasa si dos subredes de la misma red se superponen?

Los routers eligen la ruta más específica, porque el reenvío siempre prefiere el prefijo coincidente más largo, mientras que los hosts dentro de la superposición no se ponen de acuerdo sobre qué destinos son locales. El síntoma es parcial: algunos destinos funcionan y otros no, y cuáles cambia según desde dónde pruebes.

¿Por qué CIDR reemplazó a las direcciones de clase A, B y C?

Porque las clases solo ofrecían tres tamaños: /8, /16 y /24. Una organización que necesitaba 300 direcciones tenía que tomar una clase B y desperdiciar casi toda, o mantener dos rutas de clase C. CIDR permitió que un prefijo tuviera cualquier longitud, lo que frenó el agotamiento de direcciones y dejó que los proveedores resumieran muchos bloques de clientes en una sola ruta.

¿Puedo dividir un rango privado como 192.168.0.0/16 como se me ocurra?

Sí. El espacio del RFC 1918 es tuyo: divídelo con la longitud de prefijo que quieras, que nadie fuera de tu red lo ve. La restricción es interna: superponerte con la red de un socio o con una VPC en la nube con la que después hagas peering sale caro de deshacer, y por eso los planes suelen evitar los bloques que ya usa cualquier router hogareño.

Qué llevarte. El prefijo cuenta bits de red, y el tamaño de bloque es 256 − el octeto de frontera de la máscara. Redondea la dirección hacia abajo al múltiplo del tamaño de bloque para obtener la red, y suma el tamaño de bloque menos uno para el broadcast. Resta dos por el par reservado, pero solo cuando un /31 o un /32 no haya eliminado ya el motivo de restar. Distingue la comodín de la máscara de subred por su forma. Asigna los bloques grandes antes que los chicos.

Nada de esto necesita una herramienta una vez que lo tienes en la cabeza, que es justamente el punto de hacerlo a mano. Para revisar un plan antes de que llegue a un router, o para leer de un vistazo la frontera binaria de un bloque, la calculadora de subredes hace la aritmética localmente en tu navegador.

Etiquetas: networking subnetting cidr ip-address cheat-sheet

Artículos relacionados

Ver todos los artículos