EC2 연결성 분석

Table of contents

  1. 1. EC2 운영 랩 2
    1. 1.1. 랩 목표
    2. 1.2. Step1: EC2 연결성 조회
    3. 1.3. Step2 : EC2 연결성 이슈 진단하기.
      1. 🔧 상황 만들기: EC2에 인터넷 연결 제거하기.
      2. ✅ ec2ops 프로파일에서 EC2 진단
    4. 1.4. Step2 : EC2 연결성 이슈 해결하기 .
      1. ✅ EC2 연결성 이슈를 해결

1. EC2 운영 랩 2

1.1. 랩 목표

이 랩을 통해 다음과 같은 내용을 학습할 수 있습니다:

  1. Kiro CLI를 사용하여 EC2 연결 문제를 진단하고 해결하는 방법
  2. AWS 네트워크 아키텍처를 분석하고 네트워크 다이어그램을 생성하는 방법
  3. EC2 인스턴스의 CPU 사용률을 모니터링하기 위한 CloudWatch 알람 구성 방법
  4. 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가 정상적으로 외부에 연결가능한지, 다양한 프롬프트를 입력해 봅니다.