Saltar al contenido principal

Subredes y Tablas de Enrutamiento

¿Qué es una Subred?​

Una subred (subred) es una subdivisión de su VPC. Cada subred existe en una sola Zona de Disponibilidad.

┌─────────────────────────────────────────────────────────────┐
│ SUBNETS │
├─────────────────────────────────────────────────────────────┤
│ │
│ VPC (10.0.0.0/16) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌──────────────────────────────────────────────┐ │ │
│ │ │ RÉGION us-east-1 │ │ │
│ │ │ │ │ │
│ │ │ ┌─────────────┐ ┌─────────────┐ │ │ │
│ │ │ │ AZ 1a │ │ AZ 1b │ │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ │ ┌─────────┐ │ │ ┌─────────┐ │ │ │ │
│ │ │ │ │Subnet A │ │ │ │Subnet B │ │ │ │ │
│ │ │ │ │10.0.1.0 │ │ │ │10.0.2.0 │ │ │ │ │
│ │ │ │ │ /24 │ │ │ │ /24 │ │ │ │ │
│ │ │ │ └─────────┘ │ │ └─────────┘ │ │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ └─────────────┘ └─────────────┘ │ │ │
│ │ │ │ │ │
│ │ └──────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Regla: 1 Subred = 1 AZ (no puede extenderse) │
│ Pero: 1 AZ puede tener varias Subredes │
│ │
└─────────────────────────────────────────────────────────────┘

Subred Pública vs Subred Privada​

┌─────────────────────────────────────────────────────────────┐
│ PUBLIC vs PRIVÉ │
├─────────────────────────────────────────────────────────────┤
│ │
│ INTERNET │
│ │ │
│ ▼ │
│ ┌──────────┐ │
│ │ IGW │ │
│ └────┬─────┘ │
│ │ │
│ ┌─────────────────────┼─────────────────────┐ │
│ │ VPC │ │ │
│ │ │ │ │
│ │ ┌─────────────────┴───────────────┐ │ │
│ │ │ SUBNET PUBLIC │ │ │
│ │ │ │ │ │
│ │ │ • Ruta hacia IGW (0.0.0.0/0) │ │ │
│ │ │ • IP pública auto-asignada │ │ │
│ │ │ • Accesible desde Internet │ │ │
│ │ │ │ │ │
│ │ │ Recursos: Load Balancer, │ │ │
│ │ │ Bastion, NAT Gateway │ │ │
│ │ │ │ │ │
│ │ └─────────────────┬───────────────┘ │ │
│ │ │ │ │
│ │ │ (NAT Gateway) │ │
│ │ │ │ │
│ │ ┌─────────────────┴───────────────┐ │ │
│ │ │ SUBNET PRIVÉ │ │ │
│ │ │ │ │ │
│ │ │ • NO ruta hacia IGW │ │ │
│ │ │ • Sin IP pública │ │ │
│ │ │ • NO accesible desde Internet │ │ │
│ │ │ • Puede salir vía NAT │ │ │
│ │ │ │ │ │
│ │ │ Recursos: Servidores App, │ │ │
│ │ │ Base de datos │ │ │
│ │ │ │ │ │
│ │ └──────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘

Diferencias Clave​

CaracterísticaSubred PúblicaSubred Privada
Ruta hacia IGW✅ Sí (0.0.0.0/0 → igw)❌ No
IP pública auto✅ Activable❌ No
Acceso desde Internet✅ Posible❌ Imposible
Acceso a Internet✅ Directo⚠️ Vía NAT Gateway
Casos de usoServidores web, LBBDD, Servidores App

Tablas de Enrutamiento​

¿Qué es una Route Table?​

Una Route Table contiene reglas (rutas) que determinan a dónde se dirige el tráfico de red.

┌─────────────────────────────────────────────────────────────┐
│ ROUTE TABLE │
├─────────────────────────────────────────────────────────────┤
│ │
│ Route Table = "Panel de dirección" de la red │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Destination │ Target │ Resultado │ │
│ │ ─────────────────┼──────────────────┼────────────│ │
│ │ 10.0.0.0/16 │ local │ Resto VPC │ │
│ │ 0.0.0.0/0 │ igw-xxx │ Internet │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ ¿Cómo funciona?: │
│ 1. Paquete llega con destino 8.8.8.8 │
│ 2. Verifica: ¿8.8.8.8 en 10.0.0.0/16? No │
│ 3. Verifica: ¿8.8.8.8 en 0.0.0.0/0? Sí │
│ 4. Envía a igw-xxx (Internet Gateway) │
│ │
│ Regla: La ruta más específica gana │
│ 10.0.0.0/16 es más específica que 0.0.0.0/0 │
│ │
└─────────────────────────────────────────────────────────────┘

Route Table Pública vs Privada​

┌─────────────────────────────────────────────────────────────┐
│ ROUTE TABLE PUBLIQUE vs PRIVÉE │
├─────────────────────────────────────────────────────────────┤
│ │
│ ROUTE TABLE PÚBLICA │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Destination │ Target │ Descripción │ │
│ │─────────────────┼─────────────────┼────────────────│ │
│ │ 10.0.0.0/16 │ local │ Tráfico interno│ │
│ │ 0.0.0.0/0 │ igw-xxxxxxxx │ → Internet │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ ROUTE TABLE PRIVADA │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Destination │ Target │ Descripción │ │
│ │─────────────────┼─────────────────┼────────────────│ │
│ │ 10.0.0.0/16 │ local │ Tráfico interno│ │
│ │ 0.0.0.0/0 │ nat-xxxxxxxx │ → NAT Gateway │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ ROUTE TABLE AISLADA (muy privada) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Destination │ Target │ Descripción │ │
│ │─────────────────┼─────────────────┼────────────────│ │
│ │ 10.0.0.0/16 │ local │ Tráfico interno│ │
│ │ (sin 0.0.0.0/0) │ Sin Internet │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘

Asociación Subred ↔ Route Table​

┌─────────────────────────────────────────────────────────────┐
│ ASSOCIATION SUBNET - ROUTE TABLE │
├─────────────────────────────────────────────────────────────┤
│ │
│ Cada subred está asociada a UNA Route Table │
│ │
│ ┌───────────────┐ │
│ │ Route Table │──────────┐ │
│ │ rtb-public │ │ │
│ └───────────────┘ │ │
│ │ │ │
│ │ ┌────▼────┐ │
│ ┌──────▼──────┐ │ Subnet │ │
│ │ Subnet │ │ 1b │ │
│ │ 1a │ │(public) │ │
│ │ (public) │ └─────────┘ │
│ └─────────────┘ │
│ │
│ ┌───────────────┐ │
│ │ Route Table │──────────┐ │
│ │ rtb-private │ │ │
│ └───────────────┘ │ │
│ │ │ │
│ │ ┌────▼────┐ │
│ ┌──────▼──────┐ │ Subnet │ │
│ │ Subnet │ │ 2b │ │
│ │ 2a │ │(privada)│ │
│ │ (privada) │ └─────────┘ │
│ └─────────────┘ │
│ │
│ Main Route Table: Route Table por defecto si no asociada │
│ │
└─────────────────────────────────────────────────────────────┘

Crear una Subred​

Vía Consola​

1. VPC → Subnets → Create subnet
2. VPC : Seleccione su VPC
3. Subnet name : public-1a
4. Availability Zone : us-east-1a
5. IPv4 CIDR block : 10.0.1.0/24
6. Create subnet

Vía AWS CLI​

# Crear una subred pública
aws ec2 create-subnet \
--vpc-id vpc-xxx \
--cidr-block 10.0.1.0/24 \
--availability-zone us-east-1a \
--tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=public-1a}]'

# Activar auto-asignación de IP pública (para subred pública)
aws ec2 modify-subnet-attribute \
--subnet-id subnet-xxx \
--map-public-ip-on-launch

Crear y Configurar una Route Table​

Vía AWS CLI​

# Crear una Route Table
aws ec2 create-route-table \
--vpc-id vpc-xxx \
--tag-specifications 'ResourceType=route-table,Tags=[{Key=Name,Value=rtb-public}]'

# Añadir una ruta hacia Internet Gateway
aws ec2 create-route \
--route-table-id rtb-xxx \
--destination-cidr-block 0.0.0.0/0 \
--gateway-id igw-xxx

# Asociar la subred a la Route Table
aws ec2 associate-route-table \
--route-table-id rtb-xxx \
--subnet-id subnet-xxx

Plan de Direccionamiento Recomendado​

┌─────────────────────────────────────────────────────────────┐
│ PLAN DE DIRECCIONAMIENTO RECOMENDADO │
├─────────────────────────────────────────────────────────────┤
│ │
│ VPC : 10.0.0.0/16 (65,536 direcciones) │
│ │
│ SUBREDES PÚBLICAS (Web Tier) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ public-1a : 10.0.1.0/24 (AZ a) - 251 IPs │ │
│ │ public-1b : 10.0.2.0/24 (AZ b) - 251 IPs │ │
│ │ public-1c : 10.0.3.0/24 (AZ c) - 251 IPs │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ SUBREDES PRIVADAS (Application Tier) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ private-1a : 10.0.11.0/24 (AZ a) - 251 IPs │ │
│ │ private-1b : 10.0.12.0/24 (AZ b) - 251 IPs │ │
│ │ private-1c : 10.0.13.0/24 (AZ c) - 251 IPs │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ SUBREDES BASE DE DATOS (Data Tier) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ database-1a: 10.0.21.0/24 (AZ a) - 251 IPs │ │
│ │ database-1b: 10.0.22.0/24 (AZ b) - 251 IPs │ │
│ │ database-1c: 10.0.23.0/24 (AZ c) - 251 IPs │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Convención de nombres: │
│ • 10.0.X.0/24 donde X = 1-9 para públicas │
│ • 10.0.X.0/24 donde X = 11-19 para privadas app │
│ • 10.0.X.0/24 donde X = 21-29 para database │
│ │
└─────────────────────────────────────────────────────────────┘

Buenas Prácticas​

1. Siempre Multi-AZ​

✅ BUENO: Subredes en al menos 2 AZ
❌ MALO: Todas las subredes en una sola AZ

Razón: Resiliencia en caso de fallo de una AZ

2. Separar Público y Privado​

✅ BUENO: 
- Subredes públicas para Load Balancers
- Subredes privadas para servidores de aplicación
- Subredes aisladas para bases de datos

❌ MALO: Todo en subredes públicas

3. Planificar el Direccionamiento​

✅ BUENO: Plan de direccionamiento documentado antes de crear
❌ MALO: CIDR al azar, posibles solapamientos

Consejo: Deje espacio para el crecimiento

Resumen​

ConceptoDescripción
SubnetSubred en una AZ
Public SubnetRuta hacia IGW, acceso a Internet
Private SubnetSin ruta IGW, aislada
Route TableReglas de dirección del tráfico
localRuta automática para el VPC
0.0.0.0/0Ruta por defecto (Internet)

Quiz de Validación​

  1. ¿Puede una subred extenderse por varias AZ?
  2. ¿Qué hace que una subred sea "pública"?
  3. ¿Qué ruta hace pública una subred?
  4. ¿Cuántas direcciones utilizables hay en un /24?
  5. ¿Qué es la Main Route Table?

Próxima sección: Internet Gateway