시리즈: AWS로 웹 서버 + DB 직접 구축하기 (VPC 완전 정복) | 3편 / 15편
지금까지 VPC와 서브넷을 만들었어요. 그런데 퍼블릭 서브넷이라고 이름 붙였을 뿐, 아직 인터넷이 전혀 안 돼요.
이번 편에서는 실제로 인터넷에 연결하는 작업 을 할 거예요. 필요한 건 두 가지 — 인터넷 게이트웨이 와 라우팅 테이블 이에요.
인터넷 게이트웨이(IGW)란?
인터넷 게이트웨이(Internet Gateway, IGW)는 VPC와 인터넷을 연결하는 문 이에요.
아파트 비유로 계속 이야기하면:
VPC = 아파트 한 동 IGW = 그 동의 정문 (외부 도로와 연결된 출입구)
IGW가 없으면 아파트 안에서 외부로 나갈 방법이 없어요. 반대로 외부에서 안으로 들어올 수도 없고요.
IGW의 특징:
- VPC 하나에 IGW 하나만 연결 가능해요
- 생성 자체는 무료 예요 (데이터 전송량에 따른 비용만 발생)
- 트래픽이 아무리 많아도 IGW 자체는 성능 제한이 없어요
라우팅 테이블이란?
라우팅 테이블(Route Table)은 “이 목적지로 가는 트래픽은 어디로 보낼까?” 를 정의한 표예요.
내비게이션에 비유하면, “강남역으로 가려면 어떤 도로를 타야 하는지” 알려주는 것과 같아요.
라우팅 테이블의 예시를 보면 이해가 쉬워요.
목적지(Destination) 경로(Target)
10.0.0.0/16 local ← VPC 내부 IP끼리 통신할 때
0.0.0.0/0 igw-xxxxx ← 그 외 모든 곳(인터넷)으로 나갈 때
10.0.0.0/16 → local: 같은 VPC 안의 서버끼리 통신할 때는 내부에서 처리0.0.0.0/0 → IGW: 인터넷으로 나가는 모든 트래픽은 IGW를 통해서
여기서 0.0.0.0/0 이 핵심이에요. 이 표기는 “인터넷 전체” 를 의미해요.
💡 퍼블릭 서브넷과 프라이빗 서브넷의 차이 사실 서브넷 자체가 퍼블릭/프라이빗으로 나뉘는 게 아니에요. 서브넷에 연결된 라우팅 테이블에
0.0.0.0/0 → IGW경로가 있느냐 없느냐 가 차이예요.
- 있으면 → 퍼블릭 서브넷 (인터넷 연결됨)
- 없으면 → 프라이빗 서브넷 (인터넷 차단됨)
이번 편에서 할 것
1. IGW 생성
2. IGW를 my-vpc에 연결
3. 퍼블릭 라우팅 테이블 생성
4. 라우팅 테이블에 인터넷 경로 추가 (0.0.0.0/0 → IGW)
5. 퍼블릭 서브넷 2개를 이 라우팅 테이블에 연결
1단계 — 인터넷 게이트웨이 생성
왼쪽 사이드바에서 Internet Gateways 클릭.
기존에 있는 IGW가 하나 있을 수 있어요. 기본 VPC에 연결된 거니까 건드리지 마세요.
오른쪽 상단 Create internet gateway 클릭!
Name tag : my-igw
이름만 입력하면 돼요. 다른 설정은 없어요.
오른쪽 하단 Create internet gateway 클릭!
2단계 — VPC에 연결 (Attach)
IGW를 만들었지만 아직 VPC에 붙어있지 않아요. 생성 직후 화면 상단에 노란 배너가 나타나요.
⚠ You don't have any VPCs attached to this internet gateway.
[Attach to a VPC] ← 이 버튼 클릭!
버튼을 클릭하면 VPC 선택 화면이 나와요.
Available VPCs : my-vpc (vpc-xxxxxxxxxxxxxxxxx)
my-vpc 를 선택하고 Attach internet gateway 클릭!
성공하면 IGW 상태가 바뀌어요.
State : detached → attached ✅
VPC : vpc-xxxxxxxxxxxxxxxxx (my-vpc)
3단계 — 퍼블릭 라우팅 테이블 생성
왼쪽 사이드바에서 Route Tables 클릭.
이미 라우팅 테이블이 몇 개 있을 거예요. 기본 VPC와 my-vpc에 자동으로 생성된 기본 라우팅 테이블들이에요.
💡 기본 라우팅 테이블은 어떻게 구분하나요?
Main컬럼이Yes로 표시된 게 기본 라우팅 테이블이에요. VPC를 만들면 기본 라우팅 테이블이 자동 생성되는데, 이 테이블은 나중에 프라이빗 서브넷용으로 사용할 거예요. 건드리지 말고 새로 만들게요.
오른쪽 상단 Create route table 클릭!
Name : public-route-table
VPC : my-vpc
VPC는 반드시 my-vpc 를 선택하세요. 다른 VPC의 라우팅 테이블은 내 서브넷에 연결이 안 돼요.
Create route table 클릭!
4단계 — 인터넷 경로 추가
방금 만든 public-route-table 의 상세 화면이 자동으로 열려요.
하단 탭 중 Routes 탭을 클릭하면 현재 경로 목록이 보여요.
Destination Target Status
10.0.0.0/16 local Active
지금은 VPC 내부 통신 경로(local)만 있어요. 여기에 인터넷 경로를 추가할게요.
Edit routes 클릭!
Add route 클릭하면 새 행이 생겨요.
Destination : 0.0.0.0/0
Target : Internet Gateway 선택 → my-igw 선택
Target 드롭다운에서 Internet Gateway 를 선택하면 내 VPC에 연결된 IGW 목록이 나와요. my-igw 를 선택하세요.
Save changes 클릭!
경로 목록이 이렇게 바뀌면 성공이에요.
Destination Target Status
10.0.0.0/16 local Active
0.0.0.0/0 igw-xxxxxxxx Active ← 인터넷 연결!
5단계 — 퍼블릭 서브넷에 연결
라우팅 테이블을 만들었지만 아직 어떤 서브넷에도 연결되지 않았어요.
같은 public-route-table 화면에서 Subnet associations 탭 클릭.
Edit subnet associations 클릭!
서브넷 목록이 나와요. my-vpc의 서브넷들만 보일 거예요.
□ public-subnet-2a 10.0.1.0/24 ap-northeast-2a
□ public-subnet-2c 10.0.2.0/24 ap-northeast-2c
□ private-subnet-2a 10.0.3.0/24 ap-northeast-2a
□ private-subnet-2c 10.0.4.0/24 ap-northeast-2c
퍼블릭 서브넷 두 개만 체크하세요.
✅ public-subnet-2a
✅ public-subnet-2c
□ private-subnet-2a (체크 안 함)
□ private-subnet-2c (체크 안 함)
Save associations 클릭!
프라이빗 서브넷은 어떻게 되나요?
프라이빗 서브넷은 따로 설정하지 않아도 돼요.
VPC를 만들 때 자동으로 생성된 기본(main) 라우팅 테이블 에 기본적으로 연결돼 있어요. 이 기본 라우팅 테이블에는 local 경로만 있어서, VPC 내부 통신만 가능하고 인터넷은 차단돼요.
기본 라우팅 테이블 (Main: Yes)
Destination Target
10.0.0.0/16 local ← 내부 통신만 가능
이게 바로 프라이빗 서브넷이에요. 따로 설정하지 않아도 자동으로 프라이빗 상태예요.
💡 나중에 9편에서 프라이빗 서브넷에서 인터넷으로 나가는 트래픽 이 필요할 때 NAT 게이트웨이를 추가하게 돼요. 지금은 이대로 두세요.
현재 아키텍처 상태
인터넷 🌐
↕
IGW (my-igw) ← VPC에 연결됨 ✅
↕ (0.0.0.0/0)
public-route-table
├ public-subnet-2a ✅ 인터넷 연결됨
└ public-subnet-2c ✅ 인터넷 연결됨
기본 라우팅 테이블 (local만)
├ private-subnet-2a 🔒 인터넷 차단
└ private-subnet-2c 🔒 인터넷 차단
퍼블릭 서브넷은 이제 진짜 퍼블릭이 됐어요! 다음 편에서는 이 서브넷에 뭔가를 올리기 전에 방화벽(보안 그룹) 을 먼저 설계할 거예요.
이번 편 정리
| 개념 | 설명 |
|---|---|
| IGW | VPC와 인터넷을 연결하는 문, VPC당 1개 |
| 라우팅 테이블 | 트래픽을 어디로 보낼지 정의하는 표 |
| 0.0.0.0/0 | 인터넷 전체를 의미하는 목적지 |
| local | VPC 내부 통신을 의미하는 경로 |
이번 편에서 만든 것:
- ✅ my-igw (VPC에 연결 완료)
- ✅ public-route-table (0.0.0.0/0 → IGW 경로 추가)
- ✅ 퍼블릭 서브넷 2개에 라우팅 테이블 연결
다음 편 👉 4편. 보안 그룹 설계 — 웹 서버와 DB 방화벽 만들기
시리즈 전체 구성
| 편 | 주제 | 만드는 것 |
|---|---|---|
| 1편 | 전체 설계도 & VPC 만들기 | my-vpc |
| 2편 | 서브넷 설계 | 퍼블릭/프라이빗 서브넷 4개 |
| 3편 | 인터넷 게이트웨이 & 라우팅 테이블 ← 지금 여기 | IGW, 라우팅 테이블 |
| 4편 | 보안 그룹 설계 | web-sg, rds-sg |
| 5편 | EC2 웹 서버 배포 | web-server-1 |
| 6편 | Nginx로 웹 서버 구성 | 웹 페이지 |
| 7편 | RDS 생성 | my-database |
| 8편 | EC2 → RDS 연결 | DB 연결 확인 |
| 9편 | NAT 게이트웨이 | my-nat-gateway |
| 10편 | Bastion Host | bastion-host |
| 11편 | ALB 로드밸런서 | my-alb |
| 12편 | Auto Scaling | my-asg |
| 13편 | ACM + HTTPS | SSL 인증서 |
| 14편 | CloudWatch 모니터링 | 알람, 대시보드 |
| 15편 | 완성 아키텍처 & 비용 최적화 | 전체 정리 |