Diseño de red VPC

Fundamentos de VPC, subredes publicas/privadas, la diferencia critica entre Security Groups y NACLs, NAT Gateway y VPC Endpoints explicados con analogias.

VPC (Virtual Private Cloud) es tu propia red virtual privada dentro de AWS. Puede sonar complejo al principio, pero piensalo como disenar un complejo de apartamentos. Todo el complejo es tu VPC, cada edificio dentro es una subred, y la puerta principal es el Internet Gateway. Todo es tuyo para disenar y controlar.

 

Que es una VPC y por que la necesitas?

Cuando colocas un servidor en internet, no puedes simplemente lanzarlo sin planificacion. Necesitas decidir que direcciones IP usara, quien puede conectarse a el y como se comunicaran tus servidores entre si. VPC te da un espacio de red privado donde controlas todas estas decisiones.

Aqui hay un ejemplo concreto. Imagina que gestionas una plataforma de comercio electronico. Tus servidores web necesitan ser accesibles para los clientes en internet. Pero tu base de datos de pedidos nunca debe ser alcanzable directamente desde internet. Con una VPC, puedes disenar exactamente esta arquitectura, colocando servidores web en una subred publica y bases de datos en una subred privada.

 

Bloque CIDR — Definiendo tu rango de direcciones

Cuando creas una VPC, debes especificar el rango de direcciones IP que usara. Esto se llama bloque CIDR.

Piensalo como asignar un rango de numeros de unidades de apartamento a tu complejo. Podrias decir que los numeros de apartamento del 101 al 9999 pertenecen a este complejo.

Usar 10.0.0.0/16 te da 65,536 direcciones IP para trabajar. Usar 10.0.0.0/24 te da 256 direcciones. Cuanto mayor sea el numero despues de la barra, menos direcciones tienes disponibles.

 

Subredes — Los edificios dentro de tu complejo

Una subred divide tu VPC en redes mas pequenas, al igual que edificios separados dentro de un complejo de apartamentos, cada uno con un proposito diferente.

Una regla critica: cada subred debe existir en exactamente una Zona de Disponibilidad. Para alta disponibilidad, debes colocar subredes en multiples AZs para que tu aplicacion sobreviva si un centro de datos tiene una interrupcion.

La subred publica puede comunicarse directamente con internet. Colocas servidores web, balanceadores de carga y todo lo que los usuarios externos necesiten alcanzar en una subred publica. Piensalo como las tiendas en la planta baja de tu complejo de apartamentos, abiertas y accesibles para todos.

La subred privada no puede ser alcanzada directamente desde internet. Colocas bases de datos, servidores de aplicaciones internas y todo lo sensible en una subred privada. Piensalo como los pisos residenciales donde los extraños no pueden simplemente entrar.

 

Tablas de enrutamiento — Senales de trafico

Una tabla de enrutamiento es un conjunto de reglas que le dice a tu subred a donde enviar su trafico. Piensalo como senales de transito en cada interseccion.

Una tabla de enrutamiento de subred publica se ve asi. El trafico destinado a 10.0.0.0/16 permanece local dentro de la VPC. El trafico destinado a 0.0.0.0/0 (todo en internet) va al Internet Gateway. Es esta ruta de Internet Gateway la que hace publica a una subred.

Una tabla de enrutamiento de subred privada se ve diferente. El trafico destinado a 10.0.0.0/16 permanece local. El trafico destinado a 0.0.0.0/0 va al NAT Gateway en lugar del Internet Gateway. Debido a que no hay ruta directa al Internet Gateway, nada de internet puede llegar directamente a esta subred.

 

Internet Gateway — La entrada principal

El Internet Gateway es la puerta entre tu VPC e internet. Todo el trafico de internet pasa por este unico punto de entrada y salida. Solo puedes adjuntar un Internet Gateway por VPC.

Para que una subred publica se comunique realmente con internet, dos cosas deben ser ciertas. La VPC debe tener un Internet Gateway adjunto. La tabla de enrutamiento de la subred debe tener una regla que envie el trafico 0.0.0.0/0 a ese Internet Gateway.

 

Security Group vs Network ACL — La comparacion mas importante del examen

| Caracteristica | Security Group | Network ACL | |----------------|---------------|-------------| | Aplicado en | Nivel de instancia (ENI) | Nivel de subred | | Estado | Stateful (recuerda conexiones) | Stateless (trata cada paquete independientemente) | | Tipos de reglas | Solo reglas de permiso | Reglas de permiso y denegacion | | Trafico de retorno | Permitido automaticamente | Debe ser permitido explicitamente | | Predeterminado | Todo inbound denegado, todo outbound permitido | Todo el trafico permitido |

El concepto mas confuso es Stateful vs Stateless. Aqui esta la forma mas clara de entenderlo.

Security Group actua como un guardia de seguridad inteligente con memoria perfecta. Cuando un huesped entra al edificio, el guardia verifica su identidad. Cuando ese mismo huesped sale, el guardia piensa "oh, esa es la persona que deje entrar antes" y le deja pasar automaticamente. No necesitas configurar separadamente la salida. En terminos de redes, si una solicitud entrante esta permitida, la respuesta sale automaticamente sin necesitar una regla de salida explicita.

Network ACL actua como un guardia de seguridad sin memoria en absoluto. Cuando un huesped entra, el guardia verifica su identidad. Cuando ese mismo huesped intenta salir, el guardia lo ha olvidado completamente y verifica su identidad de nuevo desde cero. En terminos de redes, debes configurar explicitamente tanto las reglas de entrada como de salida, incluyendo reglas para el trafico de respuesta.

Cuando configuras reglas de salida de NACL, debes permitir el rango de puertos efimeros (1024-65535). Cuando tu navegador se conecta a un servidor en el puerto 443, el servidor envia su respuesta de vuelta a un puerto alto aleatorio en tu computadora. El NACL debe permitir explicitamente el trafico a esos puertos altos.

!Security Group vs Network ACL

NAT Gateway — La ventana de internet de la zona privada

A veces las instancias en una subred privada necesitan llegar a internet. Por ejemplo, un servidor de aplicaciones podria necesitar descargar actualizaciones de software o llamar a una API externa. Pero no quieres que internet pueda llegar a esas instancias directamente.

NAT Gateway resuelve esto perfectamente. Permite que el trafico saliente de instancias privadas llegue a internet, pero bloquea cualquier conexion entrante desde internet a esas instancias.

Usando la analogia del apartamento: los residentes (instancias privadas) pueden pedir delivery (salida permitida). Pero los extrahos no pueden simplemente tocar la puerta del apartamento directamente (entrada bloqueada).

Reglas clave para NAT Gateway. Debe colocarse en una subred publica, no privada. Requiere una Elastic IP (una direccion IP publica estatica). Para alta disponibilidad, implementa un NAT Gateway por Zona de Disponibilidad.

 

VPC Endpoints — Acceder a servicios AWS sin internet

Supongamos que una instancia en una subred privada necesita guardar archivos en S3. Sin un VPC Endpoint, el trafico saldria a traves del NAT Gateway, cruzaria internet publico y luego llegaria a S3. Esto crea tanto un riesgo de seguridad como un costo innecesario.

Un VPC Endpoint permite que tus instancias se conecten a servicios AWS a traves de la red privada interna de AWS, sin tocar nunca el internet publico.

| Tipo | Servicios soportados | Como funciona | Costo | |------|---------------------|---------------|-------| | Gateway Endpoint | Solo S3 y DynamoDB | Agrega una ruta a tu tabla de enrutamiento | Gratis | | Interface Endpoint | La mayoria de los otros servicios AWS | Crea un ENI en tu subred | Por hora + cargos de datos |

Al acceder a S3 o DynamoDB desde dentro de una VPC, siempre prefiere el Gateway Endpoint gratuito.

 

VPC Flow Logs — Registrando todo el trafico de red

VPC Flow Logs captura informacion sobre el trafico IP que entra y sale de las interfaces de red en tu VPC. Puedes enviar estos registros a CloudWatch Logs o S3 para su analisis.

Cada entrada de registro te dice: IP y puerto de origen, IP y puerto de destino, protocolo utilizado (TCP o UDP), si el trafico fue aceptado (ACCEPT) o bloqueado (REJECT), y cuantos bytes se transfirieron.

Aqui hay un escenario real de solucion de problemas. Tu desarrollador dice "no puedo hacer SSH a mi instancia EC2." Revisas VPC Flow Logs y encuentras entradas REJECT para trafico en el puerto 22. Luego miras el Security Group y te das cuenta de que alguien elimino accidentalmente la regla de entrada del puerto 22. Agregas la regla de vuelta y la conexion funciona.

 

Acceder a instancias privadas

Como te conectas a una instancia EC2 en una subred privada sin acceso directo a internet?

El enfoque de Bastion Host es el metodo tradicional. Colocas una pequena instancia EC2 (el bastion) en una subred publica y primero haces SSH a ella. Desde alli haces SSH nuevamente para llegar a tu instancia privada. La desventaja es que debes gestionar claves SSH y mantener el bastion host seguro y actualizado.

El enfoque de Session Manager es el metodo moderno y mas seguro. Es una funcion de AWS Systems Manager que te permite abrir una sesion de terminal en cualquier instancia EC2 directamente desde la consola AWS o AWS CLI, sin claves SSH requeridas y sin necesidad de abrir el puerto 22 en absoluto. Cada sesion queda registrada en CloudTrail.

En el examen, cuando veas frases como "sin claves SSH" o "sin abrir el puerto 22," Session Manager es la respuesta.

 

Elastic IP — Una direccion publica fija

Una Elastic IP es una direccion IP publica estatica que permanece igual incluso cuando detienes y reinicias una instancia EC2. Normalmente, detener una instancia hace que su IP publica cambie cuando se reinicia.

Necesitas una Elastic IP cuando creas un NAT Gateway. Tambien la usas cuando los sistemas externos necesitan conectarse a una direccion IP especifica y permanente.

Nota importante: se te cobra por las Elastic IPs que estan asignadas pero no asociadas con una instancia en ejecucion. Libera cualquier Elastic IP que no estes usando activamente.

Volver a la lista del blog