EC2 연결성 분석
Table of contents
1. EC2 운영 랩 2
1.1. 랩 목표
이 랩을 통해 다음과 같은 내용을 학습할 수 있습니다:
- Kiro CLI를 사용하여 EC2 연결 문제를 진단하고 해결하는 방법
- AWS 네트워크 아키텍처를 분석하고 네트워크 다이어그램을 생성하는 방법
- EC2 인스턴스의 CPU 사용률을 모니터링하기 위한 CloudWatch 알람 구성 방법
- CPU 부하 테스트를 실행하고 알람 알림을 확인하는 방법
1.2. Step1: EC2 연결성 조회
✅ EC2 의 외부 연결성 확인
EC2 인스턴스의 외부 연결성을 확인해 봅니다.
💬 프롬프트 예시:
VPC02-Private-A-10.2.20.101 인스턴스가 인터넷이 되는 지 확인해 주세요.
결과를 "~/tmp" 에 마크다운으로 저장해 주세요.
아래와 같은 결과를 확인 할 수 있습니다.
# VPC02-Private-A-10.2.20.101 인터넷 연결성 검증 리포트
**검증 일시**: 2025-07-20 12:30:00 KST
**대상 인스턴스**: VPC02-Private-A-10.2.20.101
**검증자**: EC2 운영 전문가 (Kiro EC2OPS Agent)
**리전**: ap-northeast-2 (Seoul)
---
## 📊 인스턴스 기본 정보
| 항목 | 값 | 상태 |
|------|-----|------|
| **인스턴스 ID** | i-05b14f32da5ccae04 | ✅ 정상 |
| **인스턴스 타입** | t3.small | ✅ 정상 |
| **인스턴스 상태** | running | ✅ 정상 |
| **Private IP** | 10.2.20.101 | ✅ 정상 |
| **Public IP** | **15.164.227.213** | ✅ **할당됨** |
| **VPC ID** | vpc-0227c94cd579b12bf | ✅ 정상 |
| **서브넷 ID** | subnet-06e9abb904186e0b3 | ✅ 정상 |
| **이름 태그** | VPC02-Private-A-10.2.20.101 | ✅ 정상 |
---
## 🌐 네트워크 구성 분석
### 1. VPC 및 서브넷 구성
- **VPC**: vpc-0227c94cd579b12bf (VPC02)
- **서브넷**: subnet-06e9abb904186e0b3 (VPC02-PrivateSubnetA)
- **서브넷 CIDR**: 10.2.20.0/22
- **가용 영역**: ap-northeast-2a
- **MapPublicIpOnLaunch**: ✅ **활성화됨**
### 2. 라우팅 테이블 분석
| 목적지 | 대상 | 상태 | 분석 |
|--------|------|------|------|
| **10.2.0.0/16** | local | active | ✅ VPC 내부 통신 |
| **0.0.0.0/0** | **tgw-097da5e047d25f43c** | active | 🔄 **Transit Gateway 라우팅** |
**라우팅 테이블 ID**: rtb-0a7a3d659a1bab832
**라우팅 테이블명**: VPC02-Private-Subnet-A-RT
### 3. 보안 그룹 규칙 분석
**보안 그룹**: sg-09bf0d465bfa8ca9b (VPC02-PrivateSG)
#### 📥 **인바운드 규칙**
| 프로토콜 | 포트 | 소스 | 목적 | 상태 |
|----------|------|------|------|------|
| TCP | 22 | 0.0.0.0/0 | SSH 접속 | ✅ 허용 |
| TCP | 80 | 0.0.0.0/0 | HTTP 트래픽 | ✅ 허용 |
| TCP | 443 | 0.0.0.0/0 | HTTPS 트래픽 | ✅ 허용 |
| ICMP | All | 0.0.0.0/0 | Ping 테스트 | ✅ 허용 |
#### 📤 **아웃바운드 규칙**
| 프로토콜 | 포트 | 대상 | 목적 | 상태 |
|----------|------|------|------|------|
| **All** | **All** | **0.0.0.0/0** | **모든 아웃바운드** | ✅ **전체 허용** |
---
## 📈 네트워크 트래픽 분석 (최근 30분)
### NetworkOut 메트릭 (아웃바운드 트래픽)
| 시간 | 트래픽량 (bytes) | 분석 |
|------|------------------|------|
| 12:00 | 7,870 | 정상 수준 |
| 12:05 | 12,693 | 약간 증가 |
| 12:10 | 7,648 | 정상 수준 |
| 12:15 | 12,759 | 약간 증가 |
| 12:20 | 7,672 | 정상 수준 |
| 12:25 | 18,469 | 활발한 통신 |
**평균 아웃바운드 트래픽**: ~11,185 bytes/5분
**트래픽 패턴**: ✅ **정상적인 아웃바운드 활동 확인**
---
## 🔍 인터넷 연결성 평가
### ✅ **연결 가능 요소들**
#### 1. **Public IP 할당**
- **상태**: ✅ **할당됨** (15.164.227.213)
- **의미**: 인터넷에서 직접 접근 가능
- **평가**: **연결 가능**
#### 2. **라우팅 구성**
- **로컬 라우팅**: 10.2.0.0/16 → local ✅
- **인터넷 라우팅**: 0.0.0.0/0 → Transit Gateway ✅
- **평가**: **연결 가능** (TGW를 통한 라우팅)
#### 3. **보안 그룹 설정**
- **아웃바운드**: 모든 트래픽 허용 ✅
- **인바운드**: SSH, HTTP, HTTPS, ICMP 허용 ✅
- **평가**: **연결 가능**
#### 4. **실제 트래픽 확인**
- **아웃바운드 트래픽**: 지속적으로 발생 ✅
- **트래픽 패턴**: 정상적인 인터넷 통신 패턴 ✅
- **평가**: **실제 연결 중**
### 🔄 **특이사항: Transit Gateway 라우팅**
#### **일반적 구성 vs 현재 구성**
- **일반적**: 인터넷 게이트웨이 직접 연결
- **현재**: Transit Gateway를 통한 중앙 집중식 라우팅
- **장점**:
- 중앙 집중식 네트워크 관리
- 여러 VPC 간 통합 라우팅
- 네트워크 정책 일관성
#### **연결성 영향**
- **결과**: ✅ **연결성에 문제 없음**
- **이유**: Transit Gateway가 인터넷 라우팅 제공
---
## 🧪 연결성 테스트 방법
### **방법 1: AWS Systems Manager Session Manager (권장)**
```bash
# Session Manager를 통한 접속
aws ssm start-session --target i-05b14f32da5ccae04 --region ap-northeast-2
# 접속 후 인터넷 연결 테스트
ping -c 4 8.8.8.8
curl -I https://www.google.com
nslookup google.com
wget -q --spider http://www.amazon.com && echo "SUCCESS" || echo "FAILED"
```
### **방법 2: SSH 직접 접속**
```bash
# Public IP로 SSH 접속
ssh -i your-key.pem ec2-user@15.164.227.213
# 인터넷 연결 테스트
ping -c 4 1.1.1.1
curl -s http://checkip.amazonaws.com
dig @8.8.8.8 google.com
```
### **방법 3: 네트워크 진단 명령어**
```bash
# 라우팅 테이블 확인
ip route show
# DNS 설정 확인
cat /etc/resolv.conf
# 네트워크 인터페이스 확인
ip addr show
# 활성 연결 확인
netstat -rn
```
---
## 📊 종합 평가 결과
### 🎯 **인터넷 연결성: ✅ 가능**
| 평가 항목 | 상태 | 점수 | 비고 |
|-----------|------|------|------|
| **Public IP 할당** | ✅ 정상 | 100% | 15.164.227.213 할당 |
| **라우팅 설정** | ✅ 정상 | 100% | Transit Gateway 라우팅 |
| **보안 그룹** | ✅ 정상 | 100% | 아웃바운드 전체 허용 |
| **실제 트래픽** | ✅ 정상 | 100% | 지속적 아웃바운드 확인 |
| **네트워크 구성** | ✅ 정상 | 100% | 적절한 서브넷 설정 |
**종합 점수**: **100%** ✅
**최종 결론**: **인터넷 연결 가능**
---
## 🔧 권장 테스트 시나리오
### **시나리오 1: 기본 연결성 테스트**
```bash
# DNS 해상도 테스트
nslookup google.com
nslookup amazon.com
# 기본 ping 테스트
ping -c 4 8.8.8.8
ping -c 4 1.1.1.1
# HTTP/HTTPS 테스트
curl -I http://www.google.com
curl -I https://www.amazon.com
```
### **시나리오 2: 패키지 관리자 테스트**
```bash
# Amazon Linux 패키지 업데이트
sudo yum update -y
# 외부 패키지 설치 테스트
sudo yum install -y htop
# Python pip 테스트
pip3 install requests
```
### **시나리오 3: 애플리케이션 레벨 테스트**
```bash
# 웹 서버 설치 및 테스트
sudo yum install -y httpd
sudo systemctl start httpd
# 외부 API 호출 테스트
curl -s https://api.github.com/users/octocat
curl -s https://httpbin.org/ip
```
---
## 🚨 잠재적 제약사항 및 해결방안
### **1. Transit Gateway 라우팅 이슈**
**증상**: 인터넷 연결 실패
**원인**: TGW 라우팅 테이블 설정 오류
**해결**: TGW 라우팅 테이블 확인 및 수정
### **2. DNS 해상도 문제**
**증상**: 도메인 이름 해석 실패
**원인**: DNS 서버 설정 오류
**해결**: /etc/resolv.conf 확인 및 수정
### **3. 인스턴스 내부 방화벽**
**증상**: 특정 포트 연결 실패
**원인**: iptables 또는 firewalld 설정
**해결**: 방화벽 규칙 확인 및 조정
---
## 📈 모니터링 권장사항
### **실시간 모니터링**
```bash
# 네트워크 트래픽 모니터링
watch -n 5 'cat /proc/net/dev'
# 연결 상태 모니터링
watch -n 10 'netstat -i'
# DNS 응답 시간 모니터링
watch -n 30 'dig @8.8.8.8 google.com | grep "Query time"'
```
### **CloudWatch 메트릭 활용**
- **NetworkIn/NetworkOut**: 네트워크 트래픽 모니터링
- **NetworkPacketsIn/NetworkPacketsOut**: 패킷 수준 모니터링
- **StatusCheckFailed**: 인스턴스 상태 모니터링
---
## 🎯 최종 권장사항
### **즉시 실행 (5분 이내)**
1. ✅ **Session Manager 접속**: 인스턴스에 직접 접속
2. ✅ **기본 연결 테스트**: ping, curl, nslookup 실행
3. ✅ **DNS 설정 확인**: /etc/resolv.conf 검토
### **상세 검증 (30분 이내)**
1. **패키지 업데이트**: sudo yum update -y 실행
2. **외부 API 테스트**: 다양한 외부 서비스 접속 테스트
3. **애플리케이션 설치**: 실제 소프트웨어 설치 테스트
### **장기 모니터링 (지속적)**
1. **CloudWatch 알람**: 네트워크 메트릭 기반 알람 설정
2. **정기 테스트**: 주기적인 연결성 테스트 자동화
3. **로그 분석**: 네트워크 관련 로그 모니터링
---
## 🏆 결론
### ✅ **최종 결론: 인터넷 연결 가능**
**VPC02-Private-A-10.2.20.101 (i-05b14f32da5ccae04)** 인스턴스는 다음과 같은 이유로 **인터넷 연결이 완전히 가능**합니다:
1. ✅ **Public IP 할당**: 15.164.227.213 (외부 접근 가능)
2. ✅ **적절한 라우팅**: Transit Gateway를 통한 0.0.0.0/0 라우팅
3. ✅ **보안 그룹 허용**: 모든 아웃바운드 트래픽 허용
4. ✅ **실제 트래픽 확인**: 지속적인 아웃바운드 네트워크 활동
5. ✅ **서브넷 설정**: Public IP 자동 할당 활성화
### 📋 **다음 단계**
**AWS Systems Manager Session Manager**를 통한 실제 접속 테스트를 통해 연결성을 최종 확인하시기 바랍니다.
### 🔒 **보안 고려사항**
이전 대화에서 언급된 **보안 및 컴플라이언스** 관점에서, 이 인스턴스는 Public IP를 가지고 있어 외부에서 접근 가능하므로 적절한 보안 그룹 설정과 정기적인 보안 업데이트가 필요합니다.
---
**리포트 생성 완료**: 2025-07-20 12:30:00 KST
**검증자**: EC2 운영 전문가 (Amazon Q)
**파일 위치**: `/home/ec2-user/tmp/vpc02_internet_connectivity_report.md`
1.3. Step2 : EC2 연결성 이슈 진단하기.
🔧 상황 만들기: EC2에 인터넷 연결 제거하기.
새로운 Kiro CLI 채팅창 (default 프로파일) 에서 자연어를 입력합니다.
💬 프롬프트 예시:
VPC02의 Private Subnet에서 인터넷 접근을 차단하기 위해 0.0.0.0/0이 Transit Gateway(TGW)로 향하는 라우팅을 제거
✅ ec2ops 프로파일에서 EC2 진단
EC2 들의 연결성을 ec2ops 프로파일에서 아래와 같이 진단해 봅니다.
💬 프롬프트 예시:
VPC02-Private-A-10.2.20.101 인스턴스가 인터넷이 되는 지 확인해 주세요.
결과를 "~/tmp" 에 마크다운으로 저장해 주세요.
아래와 같은 결과를 확인 할 수 있습니다.
⚠️ **중요 발견**: **인터넷 라우팅 경로 없음**
- **0.0.0.0/0** 경로가 라우팅 테이블에 존재하지 않음
- **인터넷 게이트웨이** 또는 **NAT 게이트웨이** 연결 없음
중략....
## 🔍 인터넷 연결성 평가
### ❌ **연결 불가능 요소들**
#### 1. **라우팅 구성 문제**
- **상태**: ❌ **인터넷 라우팅 경로 없음**
- **문제**: 0.0.0.0/0 경로가 라우팅 테이블에 존재하지 않음
- **영향**: 인터넷으로의 아웃바운드 트래픽 불가능
#### 2. **게이트웨이 연결 부재**
- **인터넷 게이트웨이**: 연결되지 않음
- **NAT 게이트웨이**: 연결되지 않음
- **Transit Gateway**: 연결되지 않음
중략...
## 📊 종합 평가 결과
### 🎯 **인터넷 연결성: ❌ 불가능**
| 평가 항목 | 상태 | 점수 | 비고 |
|-----------|------|------|------|
| **Public IP 할당** | ✅ 정상 | 100% | 15.164.227.213 할당 |
| **라우팅 설정** | ❌ 문제 | 0% | 인터넷 라우팅 경로 없음 |
| **보안 그룹** | ✅ 정상 | 100% | 아웃바운드 전체 허용 |
| **게이트웨이 연결** | ❌ 문제 | 0% | IGW/NAT/TGW 연결 없음 |
| **네트워크 구성** | ⚠️ 부분 | 50% | VPC 내부 통신만 가능 |
**종합 점수**: **50%** ❌
**최종 결론**: **인터넷 연결 불가능**
1.4. Step2 : EC2 연결성 이슈 해결하기 .
✅ EC2 연결성 이슈를 해결
EC2 들의 연결성을 ec2ops 프로파일에서 해결하기 위해 아래와 같이 입력해 봅니다.
💬 프롬프트 예시:
VPC02 Private Routing에 TGW로 갈수 있는 default routing을 삽입해줘.
아래와 같은 결과를 확인 할 수 있습니다.
중략...
## ✅ 작업 완료 확인
성공적으로 완료된 작업:
### 🎯 VPC02 Private 서브넷 라우팅 테이블 업데이트
• **VPC02-Private-Subnet-A-RT** (rtb-0a7a3d659a1bab832)
• ✅ Default Route 0.0.0.0/0 → tgw-097da5e047d25f43c 추가
• ✅ 상태: active
• **VPC02-Private-Subnet-B-RT** (rtb-00e9a07707856c475)
• ✅ Default Route 0.0.0.0/0 → tgw-097da5e047d25f43c 추가
• ✅ 상태: active
### 📊 현재 라우팅 구성
VPC02 Private 서브넷 라우팅:
├── 10.2.0.0/16 → local (VPC 내부 통신)
└── 0.0.0.0/0 → tgw-097da5e047d25f43c (인터넷 및 외부 통신)
이하 생략...
실제 EC2가 정상적으로 외부에 연결가능한지, 다양한 프롬프트를 입력해 봅니다.