Anatomia y funcionamientio de la VPC
Clase 22 de 76 • Curso de AWS Certified Solutions Architect Associate
Anatomía y Funcionamiento de la VPC: El Fundamento de la Red en AWS
En 2018, Nexiabank sufrió una brecha de seguridad que expuso datos de millones de clientes. La investigación posterior reveló que el incidente ocurrió porque sus bases de datos estaban desplegadas en subredes públicas directamente accesibles desde Internet. Tras rediseñar su arquitectura de VPC con subredes privadas, NAT Gateways y controles de acceso estrictos, no solo mejoraron su postura de seguridad, sino que también optimizaron sus costos de transferencia de datos en un 40% y redujeron la latencia de sus aplicaciones. Este caso ilustra por qué entender la anatomía y el funcionamiento de la VPC es fundamental para cualquier arquitecto de soluciones en AWS.
Subnets Públicas vs. Privadas, Route Tables y CIDR Blocks
La Virtual Private Cloud (VPC) es el bloque fundamental de redes en AWS, proporcionando un segmento de red aislado y personalizable.
CIDR Blocks
Cada VPC se define mediante un bloque CIDR (Classless Inter-Domain Routing):
- Define el rango de direcciones IP disponibles
- Utiliza notación
x.x.x.x/y
donde/y
es la máscara de red - Tamaño mínimo:
/28
(16 direcciones IP) - Tamaño máximo:
/16
(65,536 direcciones IP)
# Ejemplos de bloques CIDR 10.0.0.0/16 # 65,536 direcciones (10.0.0.0 - 10.0.255.255) 172.16.0.0/20 # 4,096 direcciones (172.16.0.0 - 172.16.15.255) 192.168.0.0/24 # 256 direcciones (192.168.0.0 - 192.168.0.255)
Nota importante: De cada bloque CIDR, AWS reserva 5 direcciones IP para uso interno (primera, última y tres adicionales), por lo que el número real de direcciones utilizables es ligeramente menor.
Subnets
Las subnets son subdivisiones de una VPC:
- Cada subnet existe dentro de una única Availability Zone
- Tiene su propio bloque CIDR que es un subconjunto del CIDR de la VPC
- No pueden solaparse entre sí
Subnets Públicas
Las subnets públicas:
- Tienen una ruta directa a Internet a través de un Internet Gateway
- Recursos con IPs públicas son accesibles directamente desde Internet
- Típicamente alojan balanceadores de carga, bastiones y aplicaciones web
Subnets Privadas
Las subnets privadas:
- No tienen ruta directa a Internet
- Los recursos solo son accesibles desde dentro de la VPC o a través de conexiones privadas
- Típicamente alojan bases de datos, servidores de aplicaciones y sistemas de backend
Route Tables
Las tablas de rutas controlan el tráfico de red:
- Cada subnet debe estar asociada a una tabla de rutas
- Contienen reglas (rutas) que determinan dónde se dirige el tráfico
- La ruta local (dentro de la VPC) siempre está presente y no se puede eliminar
Ejemplo de tabla de rutas para subnet pública
Ejemplo de tabla de rutas para subnet privada
Internet Gateway, NAT Gateway/Instance, y VPC Peering
Internet Gateway (IGW)
El Internet Gateway es un componente horizontal, redundante y escalable:
- Permite la comunicación bidireccional entre recursos en la VPC e Internet
- Se adjunta a nivel de VPC, no de subnet
- Es necesario para que las subnets sean públicas
- No tiene costo adicional
# Crear un Internet Gateway y adjuntarlo a una VPC aws ec2 create-internet-gateway --output text # Salida: igw-1234567890abcdef0 aws ec2 attach-internet-gateway --internet-gateway-id igw-1234567890abcdef0 --vpc-id vpc-0987654321fedcba0
NAT Gateway / NAT Instance
Los dispositivos NAT (Network Address Translation) permiten que instancias en subnets privadas accedan a Internet:
NAT Gateway
- Servicio gestionado por AWS
- Alta disponibilidad dentro de una AZ
- Escalado automático hasta 45 Gbps
- Requiere una dirección IP elástica
- Tiene costo por hora y por GB de datos procesados
# Crear un NAT Gateway en una subnet pública aws ec2 create-nat-gateway --subnet-id subnet-public-12345 --allocation-id eipalloc-12345
NAT Instance
- Instancia EC2 configurada como NAT
- Requiere gestión manual (parches, escalado, etc.)
- Menor costo pero menor disponibilidad
- Puede servir también como bastion host
Concepto de AZ (Availability Zone) y Región en la VPC
Relación con VPC
- Una VPC abarca todas las AZs de una región
- Las subnets existen en una única AZ
- Para alta disponibilidad, se deben distribuir recursos en múltiples AZs
# Estructura típica de una VPC con alta disponibilidad VPC: 10.0.0.0/16 (Región us-east-1) | |-- Subnet pública: 10.0.1.0/24 (AZ us-east-1a) |-- Subnet privada: 10.0.2.0/24 (AZ us-east-1a) | |-- Subnet pública: 10.0.3.0/24 (AZ us-east-1b) |-- Subnet privada: 10.0.4.0/24 (AZ us-east-1b) | |-- Subnet pública: 10.0.5.0/24 (AZ us-east-1c) |-- Subnet privada: 10.0.6.0/24 (AZ us-east-1c)
Consideraciones de Diseño Multi-AZ
- Balanceadores de carga: Distribuyen tráfico entre múltiples AZs
- Auto Scaling Groups: Pueden distribuir instancias entre AZs
- Bases de datos RDS: Pueden tener réplicas en diferentes AZs
- Costos: No hay cargo por transferencia de datos entre AZs dentro de la misma VPC, pero sí hay costos por transferencia entre AZs para ciertos servicios como RDS
Default VPC vs. VPC Custom y Buenas Prácticas
Default VPC
Cada cuenta de AWS viene con una VPC predeterminada en cada región:
- CIDR: 172.31.0.0/16
- Subnets públicas en cada AZ
- Internet Gateway adjunto
- Tabla de rutas con ruta a Internet
- Grupo de seguridad default
- DHCP options configuradas
Limitaciones de la Default VPC:
- No se puede cambiar el CIDR
- Todas las subnets son públicas
- Estructura predefinida que puede no ser óptima
- Menos control sobre la segmentación
Custom VPC
Las VPCs personalizadas ofrecen control total:
- Elección del rango CIDR
- Diseño personalizado de subnets
- Control granular sobre tablas de rutas
- Implementación de múltiples capas de seguridad
- Integración con servicios on-premise
Buenas Prácticas de Configuración
- Planificación del CIDR:
- Usar rangos privados (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16)
- Evitar solapamientos con otras redes corporativas
- Reservar espacio para crecimiento futuro
- Diseño de Subnets:
- Crear subnets en múltiples AZs para alta disponibilidad
- Separar subnets por función (web, aplicación, datos)
- Asignar CIDRs de tamaño adecuado para cada subnet
- Seguridad por Capas:
- Usar Network ACLs para control de acceso a nivel de subnet
- Implementar grupos de seguridad para control a nivel de instancia
- Colocar recursos sensibles en subnets privadas
- Conectividad:
- Usar NAT Gateways redundantes (uno por AZ)
- Implementar VPC Endpoints para servicios AWS
- Considerar Transit Gateway para topologías complejas
- Monitoreo y Logging:
- Habilitar VPC Flow Logs
- Configurar alertas para tráfico inusual
- Revisar periódicamente reglas de seguridad
# Estructura recomendada para una VPC personalizada VPC: 10.0.0.0/16 | |-- Tier público (DMZ) | |-- 10.0.1.0/24 (AZ-a) - ALB, bastiones | |-- 10.0.2.0/24 (AZ-b) - ALB, bastiones | |-- 10.0.3.0/24 (AZ-c) - ALB, bastiones | |-- Tier de aplicación | |-- 10.0.11.0/24 (AZ-a) - Servidores web, aplicaciones | |-- 10.0.12.0/24 (AZ-b) - Servidores web, aplicaciones | |-- 10.0.13.0/24 (AZ-c) - Servidores web, aplicaciones | |-- Tier de datos |-- 10.0.21.0/24 (AZ-a) - Bases de datos, caches |-- 10.0.22.0/24 (AZ-b) - Bases de datos, caches |-- 10.0.23.0/24 (AZ-c) - Bases de datos, caches
Métodos de Expansión (CIDR IPv4, IPv6)
A medida que las aplicaciones crecen, puede ser necesario expandir la capacidad de direccionamiento de la VPC.
Expansión de CIDR IPv4
Desde 2017, AWS permite añadir bloques CIDR secundarios a una VPC existente:
- Se pueden añadir hasta 5 bloques CIDR adicionales (total 6)
- Los bloques adicionales no pueden solaparse con los existentes
- No es posible reducir o eliminar un CIDR una vez añadido
- Los bloques deben estar dentro de los rangos privados
# Añadir un bloque CIDR secundario a una VPC aws ec2 associate-vpc-cidr-block --vpc-id vpc-12345 --cidr-block 172.16.0.0/16
Limitaciones:
- Los bloques adicionales no se reflejan automáticamente en las subnets existentes
- Se deben crear nuevas subnets para utilizar los rangos adicionales
- Algunos servicios AWS pueden tener limitaciones con CIDRs secundarios
Soporte IPv6
AWS ofrece soporte nativo para IPv6:
- Se puede asignar un bloque IPv6 /56 a una VPC
- AWS asigna el rango (no se puede elegir)
- Se pueden crear subnets con direccionamiento IPv6 (/64 por subnet)
- Funcionamiento en modo "dual-stack" (IPv4 e IPv6 simultáneamente)
# Asignar un bloque IPv6 a una VPC aws ec2 associate-vpc-cidr-block --vpc-id vpc-12345 --amazon-provided-ipv6-cidr-block
Consideraciones para IPv6:
- Requiere un Internet Gateway para conectividad IPv6 a Internet
- Para subnets privadas, se necesita un Egress-Only Internet Gateway (equivalente a NAT para IPv6)
- No todas las instancias o servicios AWS soportan IPv6
- Las direcciones IPv6 son siempre públicas (no hay concepto de rango privado)
Estrategias de Migración y Expansión
- Expansión dentro de la misma VPC:
- Añadir CIDRs secundarios
- Crear nuevas subnets con los rangos adicionales
- Migrar gradualmente recursos a las nuevas subnets
- Creación de VPCs adicionales:
- Crear nuevas VPCs para nuevas cargas de trabajo
- Conectar mediante VPC Peering o Transit Gateway
- Segregar entornos o aplicaciones en VPCs separadas
- Migración a IPv6:
- Implementar configuración dual-stack
- Actualizar grupos de seguridad y NACLs para IPv6
- Probar compatibilidad de aplicaciones con IPv6
Casos de Uso Avanzados
Arquitectura Multi-Tier
Internet | v Internet Gateway | v Public Subnet (10.0.1.0/24) --- ALB | v Private Subnet (10.0.11.0/24) --- EC2 Instances (App Tier) | v Private Subnet (10.0.21.0/24) --- RDS Instances (Data Tier)
Conectividad Híbrida
On-Premises Data Center | v VPN Connection / Direct Connect | v VPC (10.0.0.0/16) | |-- Private Subnet (10.0.1.0/24) --- EC2 Instances |-- Private Subnet (10.0.2.0/24) --- RDS Instances
Arquitectura Multi-VPC
Management VPC (10.0.0.0/16) | |-- Transit Gateway | |-- Production VPC (172.16.0.0/16) |-- Development VPC (172.17.0.0/16) |-- Shared Services VPC (172.18.0.0/16)
Resumen
La Virtual Private Cloud (VPC) es el componente fundamental de la infraestructura de red en AWS. Entender su anatomía y funcionamiento es esencial para diseñar arquitecturas seguras, escalables y eficientes.
Las subnets públicas y privadas, junto con las tablas de rutas, permiten segmentar la red y controlar el flujo de tráfico. Los componentes como Internet Gateways, NAT Gateways y VPC Peering facilitan la conectividad tanto interna como externa.
El concepto de regiones y zonas de disponibilidad es crucial para diseñar aplicaciones con alta disponibilidad, distribuyendo recursos en múltiples ubicaciones físicas para resistir fallos.
Aunque la VPC predeterminada puede ser útil para comenzar rápidamente, las VPCs personalizadas ofrecen el control y la flexibilidad necesarios para entornos de producción. Siguiendo las buenas prácticas de diseño, podemos crear infraestructuras que satisfagan requisitos de seguridad, rendimiento y escalabilidad.
Finalmente, los métodos de expansión como CIDRs secundarios e IPv6 nos permiten adaptar nuestras redes a medida que crecen las necesidades, asegurando que nuestra infraestructura pueda evolucionar junto con nuestras aplicaciones.
La VPC no es solo un componente técnico, sino un elemento estratégico que influye directamente en la seguridad, el rendimiento y la escalabilidad de nuestras aplicaciones en AWS.