Ir al contenido

Direcciones IP, máscaras y subredes

Si hay un tema de redes que tienes que dominar sí o sí, es este. Las IP y las máscaras salen en todo: al configurar un servidor, al crear una red en Docker, al montar una VPN o al pelearte con un firewall. Y te lo digo por experiencia: una máscara mal puesta te puede tener una tarde entera dando vueltas.

Una dirección IP es el identificador de un equipo dentro de una red, como la dirección postal de una casa. En IPv4, que es la que vamos a ver aquí, son 32 bits que escribimos como cuatro números del 0 al 255 separados por puntos:

192.168.1.20

Por dentro, cada número es un octeto (8 bits):

192 .168 .1 .20
11000000 .10101000 .00000001 .00010100

Toda IP tiene dos partes:

  1. Parte de red → en qué red está el equipo (la calle).
  2. Parte de host → qué equipo es dentro de esa red (el número de la casa).

¿Y quién dice dónde acaba una parte y empieza la otra? La máscara.

La máscara marca qué bits de la IP son de red (los pone a 1) y cuáles son de host (los pone a 0). Siempre son unos seguidos de ceros:

IP 192.168.1.20 11000000.10101000.00000001.00010100
Máscara 255.255.255.0 11111111.11111111.11111111.00000000
└─────────── red ───────────┘└ host ┘
Red 192.168.1.0

Para sacar la red, el equipo hace un AND bit a bit entre la IP y la máscara. Los bits de host se quedan a cero y lo que queda es la dirección de la red.

Escribir 255.255.255.0 cada vez es un rollo, así que se usa la notación CIDR: una barra y cuántos bits de red tiene la máscara.

  • 255.255.255.0 → 24 unos → /24
  • 255.255.0.0 → 16 unos → /16

Así que 192.168.1.20/24 quiere decir: “la IP 192.168.1.20, en una red cuyos primeros 24 bits son la parte de red”.

En cada red hay dos direcciones reservadas:

  1. La primera → la dirección de red. Identifica a la red entera y no se asigna a ningún equipo.
  2. La última → la dirección de broadcast. Lo que se envía ahí llega a todos los equipos de la red.

Todo lo que queda en medio son hosts usables. La fórmula es:

hosts usables = 2^(bits de host) − 2

Ejemplo con 192.168.1.0/24 → 8 bits de host → 2⁸ − 2 = 254 equipos, del .1 al .254. El .0 es la red y el .255 el broadcast.

CIDR Máscara Hosts usables Uso típico
/8 255.0.0.0 16.777.214 Redes enormes (el rango 10.0.0.0/8)
/16 255.255.0.0 65.534 Empresas grandes, rangos para repartir
/24 255.255.255.0 254 La de casi siempre: casa, oficina, una VLAN
/25 255.255.255.128 126 Media /24
/26 255.255.255.192 62 Redes pequeñas (cámaras, servidores)
/27 255.255.255.224 30
/28 255.255.255.240 14 Rangos pequeños para contenedores, DMZ
/29 255.255.255.248 6 Bloques de IPs públicas que da un operador
/30 255.255.255.252 2 Enlaces punto a punto entre dos routers
/32 255.255.255.255 1 equipo Una IP concreta (reglas de firewall, rutas)

Cada bit que añades a la máscara divide la red en dos: una /24 son dos /25, cuatro /26, ocho /27…

No todas las IP sirven para lo mismo. Hay rangos reservados (RFC 1918) para redes privadas, que se pueden usar libremente en cualquier LAN porque no existen en internet:

Rango privado CIDR Dónde lo verás
10.0.0.0 – 10.255.255.255 10.0.0.0/8 Empresas, VPN, homelabs con muchas redes
172.16.0.0 – 172.31.255.255 172.16.0.0/12 Empresas, redes internas de Docker (172.17.0.0/16)
192.168.0.0 – 192.168.255.255 192.168.0.0/16 El router de casa (192.168.1.0/24, 192.168.0.0/24)

Todo lo demás son, en general, IPs públicas: únicas en internet y asignadas por los operadores.

Y hay algunos rangos especiales que conviene reconocer:

  1. 127.0.0.0/8 → loopback. 127.0.0.1 es “yo mismo”, el propio equipo.
  2. 169.254.0.0/16 → APIPA. Si un equipo se pone una IP de aquí, es que no ha conseguido IP por DHCP. Si la ves, ya sabes por dónde tirar.
  3. 100.64.0.0/10 → CGNAT. Lo usan algunos operadores cuando no te dan IP pública propia, y también herramientas como Tailscale.
  4. 192.0.2.0/24, 198.51.100.0/24 y 203.0.113.0/24 → reservadas para documentación. Son las que usamos en esta web para los ejemplos.

Con la IP y la máscara, un equipo sabe quién está en su misma red. Con esos puede hablar directamente. Para todo lo demás necesita a alguien que le saque fuera: la puerta de enlace (gateway), que normalmente es el router.

La lógica que sigue el equipo para cada paquete es muy simple:

  1. ¿El destino está en mi red, según mi máscara? → Se lo envío directamente.
  2. ¿No lo está? → Se lo envío a la puerta de enlace, que ya sabrá qué hacer.

Por eso la puerta de enlace tiene que estar dentro de tu propia red. Si no lo está, el equipo no tiene manera de llegar a ella.

Hacer subnetting es partir una red grande en varias más pequeñas, por ejemplo una para cada tipo de equipo. Así puedes separarlas en el firewall y que, si una cámara barata tiene un agujero, no tenga acceso directo a tus servidores.

Ejemplo: tienes la 192.168.10.0/24 y la quieres partir en 4 redes iguales. Para tener 4 redes hacen falta 2 bits más (2² = 4), así que pasas de /24 a /26:

Subred Red Hosts usables Broadcast Para…
1 192.168.10.0/26 .1 – .62 .63 Servidores
2 192.168.10.64/26 .65 – .126 .127 Equipos de trabajo
3 192.168.10.128/26 .129 – .190 .191 Cámaras e IoT
4 192.168.10.192/26 .193 – .254 .255 Invitados

El truco para calcularlo de cabeza: una /26 tiene 64 direcciones (2⁶), así que las redes empiezan cada 64: .0, .64, .128 y .192.

Este es el problema del que hablaba en la página de las capas. Tenía un servidor que tenía que quedar así:

IP 10.10.1.5
Máscara /16 (255.255.0.0) --> red 10.10.0.0 – 10.10.255.255
Puerta de enlace 10.10.0.1

Pero, por un fallo de configuración, el servidor arrancaba siempre con /24. ¿Qué pasaba entonces?

  1. Con /24, el servidor creía que su red era solo 10.10.1.0 – 10.10.1.255.
  2. La puerta de enlace, 10.10.0.1, quedaba fuera de su red → no podía usarla.
  3. Mi PC, en 10.10.0.11, también quedaba “fuera” → el servidor no sabía cómo devolverle las respuestas.
  4. En cambio, desde los equipos del mismo 10.10.1.x todo funcionaba perfectamente.

Resultado: el ping respondía desde unos sitios y desde otros no, y por SSH no había manera de entrar desde mi PC. Todo por un número detrás de la barra. Desde entonces, cuando algo falla “solo a medias”, lo primero que miro es la máscara.

IPv4 tiene unos 4.300 millones de direcciones, y hace años que se acabaron. IPv6 es la solución: direcciones de 128 bits, escritas en hexadecimal (2001:db8::1), con tantas direcciones que no se van a acabar. La lógica de red, host y prefijo es la misma. La tienes explicada a fondo en su propia página. Mientras tanto, casi todo lo que montes en casa seguirá funcionando con IPv4.

  • Poner la IP de red o de broadcast a un equipo → en una /24, ni el .0 ni el .255.
  • Dos equipos con la misma IP → conflicto, y los dos funcionan de forma intermitente. Pasa mucho al poner IPs fijas dentro del rango del DHCP. Reserva un rango para IPs fijas y otro para el DHCP.
  • Máscaras distintas en la misma red → unos equipos se ven y otros no, como en mi caso. Todos los equipos de una misma red deben tener la misma máscara.
  • Puerta de enlace fuera de la red → el equipo no puede salir. La puerta de enlace siempre debe estar dentro del rango de la IP y la máscara.
  • “Tengo IP 169.254.x.x” → no es una IP de tu red: es que no ha llegado respuesta del DHCP.
  • IPv4 → 32 bits en cuatro octetos, con una parte de red y una parte de host.
  • La máscara (o el /n en CIDR) dice dónde acaba la red y empieza el host.
  • En cada red, la primera dirección es la de red y la última la de broadcast. Hosts usables: 2^(bits de host) − 2.
  • Privadas → 10/8, 172.16/12 y 192.168/16. Si ves 169.254.x.x, falla el DHCP.
  • La puerta de enlace saca el tráfico de tu red y tiene que estar dentro de ella.
  • Subnetting → cada bit más de máscara divide la red en dos.

Siguiente: DHCP y DNS Relacionado: Modelos OSI y TCP-IP, Tipos de red, Índice de Redes