Lab: Escenarios de Resolución de Problemas EC2
Objetivos del Lab
Este laboratorio le enfrenta a escenarios de fallo realistas. Para cada escenario, deberá:
- Analizar los síntomas
- Formular hipótesis
- Proponer pruebas de diagnóstico
- Identificar la solución
Este laboratorio es un ejercicio de análisis. No necesita acceso a AWS: trabaje en papel o en un documento.
Duración Estimada
1h30 a 2h
Escenario 1: El Sitio Web No Es Accesible
Contexto
Situación:
- Instancia EC2 lanzada hace 1 hora
- AMI: Amazon Linux 2023
- Tipo: t3.micro
- Apache instalado y arrancado
- Puede conectarse por SSH
- Pero http://52.1.2.3 no responde (timeout)
Configuración actual:
- VPC: vpc-default
- Subnet: pública (con IGW)
- Security Group: sg-web
Información Disponible
Estado de la instancia: running
Status checks: 2/2 passed
Security Group sg-web:
Reglas de entrada:
- SSH (22): 0.0.0.0/0
- HTTP (80): 10.0.0.0/8
Reglas de salida:
- Todo el tráfico: 0.0.0.0/0
Preguntas
-
¿Cuál es el síntoma preciso?
-
Enumere 3 hipótesis por orden de probabilidad
-
¿Cuál es la causa más probable?
-
¿Qué comando/acción corrige el problema?
-
¿Cómo validar que está resuelto?
📋 Ver la solución
1. Síntoma: Timeout HTTP hacia 52.1.2.3 puerto 80, mientras que SSH funciona.
2. Hipótesis:
- El Security Group no permite HTTP desde Internet (ALTA)
- Apache no escucha en el puerto correcto (MEDIA)
- Firewall iptables en la instancia (BAJA)
3. Causa: El Security Group permite HTTP (puerto 80) solo desde 10.0.0.0/8 (red privada), no desde Internet (0.0.0.0/0).
4. Correctivo:
aws ec2 authorize-security-group-ingress \
--group-id sg-web \
--protocol tcp \
--port 80 \
--cidr 0.0.0.0/0
5. Validación:
curl http://52.1.2.3
# o
Abrir http://52.1.2.3 en un navegador
Escenario 2: SSH Imposible
Contexto
Situación:
- Nueva instancia lanzada
- Ha descargado la clave .pem
- Instancia: running, status checks OK
- IP pública: 52.2.3.4
Comando ejecutado:
$ ssh -i clave.pem ec2-user@52.2.3.4
ssh: connect to host 52.2.3.4 port 22: Connection timed out
Información Disponible
Detalles de la instancia:
- ID: i-0123456789
- Estado: running
- IP pública: 52.2.3.4
- Subnet: subnet-abc123 (10.0.2.0/24)
- Security Group: sg-default
Security Group sg-default:
Reglas de entrada:
- (ninguna regla)
Reglas de salida:
- Todo el tráfico: 0.0.0.0/0
Subnet subnet-abc123:
- Route Table: rtb-main
- Rutas:
- 10.0.0.0/16 → local
- (ninguna otra ruta)
Preguntas
-
Identifique TODOS los problemas en esta configuración
-
Ordénelos por prioridad de corrección
-
Proponga los comandos para corregir cada problema
📋 Ver la solución
1. Problemas identificados:
Problema A - Security Group: Ninguna regla de entrada = puerto 22 bloqueado
Problema B - Route Table: Sin ruta hacia Internet Gateway = sin acceso a Internet
2. Prioridad:
- Route Table (sin ruta, aunque el SG esté bien, no funcionará)
- Security Group
3. Correctivos:
# 1. Crear/adjuntar un Internet Gateway (si no está hecho)
aws ec2 create-internet-gateway
aws ec2 attach-internet-gateway --vpc-id vpc-xxx --internet-gateway-id igw-xxx
# 2. Añadir la ruta hacia IGW
aws ec2 create-route \
--route-table-id rtb-main \
--destination-cidr-block 0.0.0.0/0 \
--gateway-id igw-xxx
# 3. Añadir regla SSH al Security Group
aws ec2 authorize-security-group-ingress \
--group-id sg-default \
--protocol tcp \
--port 22 \
--cidr 0.0.0.0/0
Escenario 3: Instancia que Termina Inmediatamente
Contexto
Situación:
- Lanza una instancia
- Pasa de "pending" a "running" y luego "terminated"
- Todo en menos de 30 segundos
- Ha intentado 3 veces, mismo resultado
Configuración:
- AMI: ami-custom-xyz (AMI personalizada)
- Tipo: t3.large
- Región: us-east-1
Información Disponible
Consola EC2 → State transition reason:
"Client.VolumeLimitExceeded: Volume limit exceeded"
Sus volúmenes EBS actuales:
- 45 volúmenes de 100 GB cada uno
- Total: 4.5 TB
Su AMI ami-custom-xyz:
- Creada hace 6 meses
- Volumen raíz: 200 GB
- Usa el snapshot snap-olddata
Preguntas
-
¿Cuál es la causa de la terminación?
-
¿Cómo verificar los límites de su cuenta?
-
¿Cuáles son las soluciones posibles? (al menos 3)
📋 Ver la solución
1. Causa: El mensaje "Volume limit exceeded" indica que ha alcanzado la cuota de almacenamiento EBS para su cuenta.
2. Verificar los límites:
aws service-quotas get-service-quota \
--service-code ebs \
--quota-code L-D18FCD1D
# O vía la consola:
# Service Quotas → Amazon Elastic Block Store (EBS)
3. Soluciones:
Solución A - Eliminar volúmenes no utilizados:
# Listar los volúmenes no adjuntos
aws ec2 describe-volumes \
--filters "Name=status,Values=available"
# Eliminar
aws ec2 delete-volume --volume-id vol-xxx
Solución B - Solicitar un aumento de cuota:
aws service-quotas request-service-quota-increase \
--service-code ebs \
--quota-code L-D18FCD1D \
--desired-value 10000
Solución C - Usar otra región: Las cuotas son por región. Lanzar en eu-west-1 por ejemplo.
Solución D - Usar un tipo de instancia con instance store: Algunas instancias tienen almacenamiento local, no EBS.
Escenario 4: Base de Datos Inaccesible
Contexto
Arquitectura:
- Instancia Web (subnet pública): 10.0.1.10
- Instancia BDD (subnet privada): 10.0.2.20
- Ambas en el mismo VPC
Problema:
- Desde la instancia Web, imposible conectarse a MySQL
- telnet 10.0.2.20 3306 → timeout
La instancia BDD funciona:
- Status checks OK
- MySQL está arrancado (verificado vía Session Manager)
Información Disponible
Security Group sg-web (instancia web):
Entrada: HTTP 80, SSH 22
Salida: Todo el tráfico 0.0.0.0/0
Security Group sg-database (instancia BDD):
Entrada: MySQL (3306) desde 0.0.0.0/0
Salida: Todo el tráfico 0.0.0.0/0
NACL de la subnet privada (nacl-private):
Reglas de entrada:
Rule 100: DENY TCP 3306 from 0.0.0.0/0
Rule 200: ALLOW ALL from 0.0.0.0/0
Reglas de salida:
Rule 100: ALLOW ALL to 0.0.0.0/0
Preguntas
-
¿Por qué falla la conexión?
-
Explique por qué la regla del Security Group no es suficiente
-
¿Cómo corregir el problema?
📋 Ver la solución
1. Causa: La NACL bloquea el puerto 3306 con una regla DENY (rule 100) que se evalúa ANTES que la regla ALLOW (rule 200).
2. Explicación:
- Los Security Groups se evalúan en conjunto (todas las reglas)
- Las NACLs se evalúan en orden de número de regla
- Rule 100 (DENY 3306) se evalúa antes que Rule 200 (ALLOW ALL)
- Por lo tanto, el puerto 3306 está bloqueado a pesar del SG
3. Correctivo: Eliminar o modificar la regla 100 de la NACL:
# Opción A: Eliminar la regla DENY
aws ec2 delete-network-acl-entry \
--network-acl-id nacl-private \
--rule-number 100 \
--ingress
# Opción B: Modificar para permitir desde la subnet web
aws ec2 replace-network-acl-entry \
--network-acl-id nacl-private \
--rule-number 100 \
--protocol tcp \
--port-range From=3306,To=3306 \
--cidr-block 10.0.1.0/24 \
--rule-action allow \
--ingress
Escenario 5: Permission Denied (Desafío)
Contexto
Situación:
- Instancia Amazon Linux 2023 lanzada con clave "mi-clave"
- Archivo mi-clave.pem presente en su máquina
- Permiso del archivo: 400 (OK)
Comando:
$ ssh -i mi-clave.pem ec2-user@52.5.6.7
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
Pruebas realizadas:
- Security Group: puerto 22 abierto hacia 0.0.0.0/0
- Instancia: running, status OK
- Ping: funciona
Información Adicional
Tiene dos archivos de clave en su carpeta:
- mi-clave.pem (creado ayer)
- mi-clave.pem.bak (creado la semana pasada)
La instancia fue lanzada la semana pasada.
Preguntas
-
¿Cuál es probablemente la causa?
-
¿Cómo verificar su hipótesis?
-
¿Cuáles son las opciones para recuperar el acceso?
📋 Ver la solución
1. Causa probable: Está usando la clave equivocada. El archivo "mi-clave.pem" actual (creado ayer) no es la clave asociada a la instancia (lanzada la semana pasada).
2. Verificación:
# Ver qué clave está asociada a la instancia
aws ec2 describe-instances --instance-ids i-xxx \
--query 'Reservations[].Instances[].KeyName'
# Comparar la huella de su clave
ssh-keygen -l -f mi-clave.pem
ssh-keygen -l -f mi-clave.pem.bak
3. Opciones de recuperación:
Opción A - Usar la clave correcta:
ssh -i mi-clave.pem.bak ec2-user@52.5.6.7
Opción B - EC2 Instance Connect (si la AMI es compatible): Consola → Instancia → Connect → EC2 Instance Connect
Opción C - Systems Manager Session Manager: Si el agente SSM está instalado y el rol IAM configurado.
Opción D - Crear una AMI y relanzar:
- Crear AMI de la instancia
- Lanzar nueva instancia con nueva clave
- Montar el volumen de la instancia antigua
- Modificar ~/.ssh/authorized_keys
Entregables del Lab
Informe de Resolución de Problemas (para 2 escenarios a elección)
Para cada escenario elegido, documente:
# Escenario X: [Título]
## 1. Síntoma Identificado
[Descripción precisa]
## 2. Hipótesis Formuladas
1. [Hipótesis 1] - Probabilidad: Alta/Media/Baja
2. [Hipótesis 2]
3. [Hipótesis 3]
## 3. Pruebas de Diagnóstico
- Prueba 1: [Comando/Acción] → Resultado esperado
- Prueba 2: [Comando/Acción] → Resultado esperado
## 4. Causa Raíz
[Explicación de la verdadera causa]
## 5. Solución
[Comandos o acciones para corregir]
## 6. Validación
[Cómo verificar que está resuelto]
## 7. Prevención
[Cómo evitar este problema en el futuro]
Tabla de Evaluación
| Criterio | Puntos |
|---|---|
| Síntoma bien definido | 2 |
| Hipótesis pertinentes y ordenadas | 3 |
| Pruebas de diagnóstico correctas | 3 |
| Causa raíz identificada | 3 |
| Solución correcta | 3 |
| Validación propuesta | 2 |
| Claridad y estructura | 2 |
| Total por escenario | 18 |
¡Felicidades! Ha completado el laboratorio de resolución de problemas EC2.