25.10 - VPC Peering

한국 리전에 있는 RDS(Aurora MySQL) 에
글로벌 리전들의 ECS(애플리케이션 서버) 가 접근해야 하는 상황이 생겼다.
VPC 구성을 바닥부터 만들어본 경험이 있으니 이정도야~
라는 가벼운 마음으로 시작해 결과적으로
VPC Peering → Route Table → Security Group → NACL
전부 수정한 삽질 박제
1️⃣ 목표
는 매우 단순하다. 미국, 인도네시아, 베트남 VPC 내 ECS → 한국 VPC 내 RDS 접속!
설명은 US <-> KR 을 기준으로, 차를 타고 친구 아파트에 찾아가는 상황으로 비유를 해보자
2️⃣ 시도와 삽질 과정
(1) VPC Peering 생성
- US VPC ↔ KR VPC 피어링 생성
- 상태: Active
- 결과: 접속 불가
💡 Tip: Peering만으로는 통신되지 않는다. Route Table 수정이 필요하다.
🛣️ 비유: 도로만 깔았을 뿐이다. 아직 목적지 주소를 모른다.
(2) Route Table 수정 (미국 → 한국)
- 미국 VPC의 모든 Private Subnet Route Table 6개에
- Destination: 12.34.0.0/16, Target: Peering Connection 추가
- 결과: 여전히 접속 불가
💡 Tip: Peering은 양방향 라우팅이 필요하다.
📍 비유: 도로를 연결했으니(피어링), 그 도로를 타고 어디로 가야 할지 주소를 등록(Routing table)해야 한다.
(3) Route Table 수정 (한국 → 미국)
- 한국 DB VPC 라우팅 테이블에
- Destination: 12.34.0.0/16, Target: Peering Connection 추가
- 결과: 트래픽은 통과하나 여전히 접속 불가
💡 Tip: 라우팅이 되어도 SG/NACL 이 트래픽을 막을 수 있다.
🚧 비유: 이제 길이 뚫리고 목적지를 알았지만, 아파트 단지 차단기가 외부 차량을 막고 있다. 누가 방문하는지 등록해야만 차단기가 열린다.
(4) Security Group 수정
- 한국 RDS 인스턴스 SG 인바운드 규칙에
- Source: 12.34.0.0/16, Port: 3306 추가
- 결과: 여전히 접속 불가
💡 Tip: SG만으론 부족하다. NACL 이 마지막 보루다.
👮 비유: 방문자 명단엔 올렸지만, 경비실에서 신원 확인이 끝나지 않았다. 출입증을 보여줘야 안으로 들어올 수 있다.
(5) Network ACL 확인
- 미국 ECS 서브넷 NACL → 0.0.0.0/0 Allow, 문제 없음
- 한국 RDS 서브넷 NACL → 미국 CIDR 누락
- 인바운드/아웃바운드에 12.34.0.0/16 Allow 추가
- 결과: ✅ 접속 성공
💡 Tip: NACL(Network ACL)은 서브넷 단위 방화벽이다. 트래픽이 네트워크 안에 들어오기도 전에 차단하거나 허용한다.
🏠 비유: 아예 단지 입구의 정문 보안 게이트 같은 존재다. 아무리 집 주소를 알고 있어도, 정문이 막혀 있으면 들어올 수 없다.
✅ 3️⃣ 최종 해결 요약
항목작업 내용위치
| 1 | VPC Peering 생성 | US ↔ KR |
| 2 | Route Table 수정 | 양쪽 VPC 모두 |
| 3 | Security Group 인바운드 허용 | 한국 RDS |
| 4 | NACL 인바운드/아웃바운드 허용 | 한국 DB Subnet |
[ECS 10.44.0.0/16] ⇄ (VPC Peering) ⇄ [RDS 10.41.0.0/16]
✅ 결과: 미국 ECS → 한국 RDS 사설망 접속 성공
4️⃣ 배운 점
- VPC Peering은 단방향이 없다.
- 양쪽 Route Table 수정 없이는 트래픽이 흐르지 않는다.
- SG와 NACL은 별개다.
- NACL은 Subnet 단위로 적용되며, SG보다 먼저 트래픽을 필터링한다.
- CIDR 정확성 중요.
- /16, /20 등 범위가 어긋나면 일부 트래픽이 누락될 수 있다.
- 최소 권한 보안 모델은 옳다.
- 삽질이 길었지만, 덕분에 서비스가 안전하게 설계되어 있었다.
🧭 결론
AWS 네트워킹은 “한쪽만 열면 되겠지?” 라는 착각을 무너뜨린다.
Route Table + Security Group + NACL
이 세 가지가 완벽히 일치해야만 통신이 열린다.
운영 중에는 Peering의 라우트·NACL 수정이
배포 없이 즉시 반영된다는 점도 기억하자.
'Today I Lived > Humanscape - 2025' 카테고리의 다른 글
| 25.09 - TypeScript 가 변덕스러운줄 알았는데, 결국 문제는 또 코드였다. (0) | 2025.09.07 |
|---|---|
| 24.07 - 답답하면 ? 내가 한다 : 불평만 한다 (2) | 2025.07.31 |
| 25.07 - PACS (Picture Archiving and Communication System) (0) | 2025.07.23 |
| 25.07 - 제목을 Zombie Transaction 이라고 해야 하나? 사고 쳤다 라고 해야 하나? (4) | 2025.07.06 |
| 25.05 - 문서를 잘 써두면, 설명 할 일이 없다 (1) | 2025.05.03 |
댓글