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ística | Subred Pública | Subred 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 uso | Servidores web, LB | BDD, 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
| Concepto | Descripción |
|---|---|
| Subnet | Subred en una AZ |
| Public Subnet | Ruta hacia IGW, acceso a Internet |
| Private Subnet | Sin ruta IGW, aislada |
| Route Table | Reglas de dirección del tráfico |
| local | Ruta automática para el VPC |
| 0.0.0.0/0 | Ruta por defecto (Internet) |
Quiz de Validación
- ¿Puede una subred extenderse por varias AZ?
- ¿Qué hace que una subred sea "pública"?
- ¿Qué ruta hace pública una subred?
- ¿Cuántas direcciones utilizables hay en un /24?
- ¿Qué es la Main Route Table?
Próxima sección: Internet Gateway