
VPC 구축은 정말 어렵지 않다! 네트워크 개념을 어느 정도 알고 있다면 금방 구축 가능하다. 주로 설정해야 할 사항은 다음과 같다.
필수적으로 반드시 알아야 하는 지식을 아주 간단하게 정리했다.
x.x.x.x/x와 같이 / 뒤의 숫자로 네트워크 주소의 비트 수를 표현한다.[AWS] VPC의 개념 이 글에서 VPC의 개념 및 구성요소에 대해 자세히 설명되어 있으니 참고하자!
VPC는 기본적으로 무료이다. 서브넷, 라우팅 테이블, 보안그룹, NACL, IGW, gateway endpoint도 무료로 제공된다. 그러나 이 이외의 요소는 비용이 발생한다. 특히 아래 세 가지 요소를 유의하자. 세 요소는 자주 사용되는데, 비용을 생각하지 않고 생성 후 방치한다면 비용 폭탄을 맞을 것이다...
aws에서 사용 가능한 IPv4 대역은 아래와 같다.
10.0.0.0/8172.16.0.0/12192.168.0.0/16CIDR는 /16 ~ /28까지 사용 가능하다. 자신의 프로젝트에 맞게 적절한 IPv4 대역을 선택해 생성하면 된다.
VPC 생성 시 생성할 리소스에서 VPC 등을 선택하면, 서브넷, 라우팅 테이블, NAT Gateway, IGW가 자동 생성되어 매우 편리하다.

둘의 차이는 AWS 공식 문서에서 자세히 설명되어있다.
나는 아래와 같이 설정해 VPC를 생성했다.
![]() | ![]() |
|---|
NAT Gateway는 너무 비싸기 때문에 NAT Instance를 사용한다. 인스턴스에 아래의 설정이 필요하다.
퍼블릭 서브넷에 인스턴스 배치하기
NAT 전용 ami 사용하기: amzn-ami-vpc-nat를 검색해서 나오는 가장 상단의 ami를 선택한다.
보안그룹 설정하기
소스-대상 확인 변경 끄기: 작업 > 네트워킹 > 소스/대상 확인 변경에서 소스/대상 확인을 중지한다.
탄력적 IP 주소 할당하기: EC2 > 탄력적 IP 주소로 이동해 탄력적 IP 주소를 할당하고, 할당받은 IP를 아까 만든 인스턴스에 연결한다. 이제부터 비용이 발생하니 유의하자.

NAT Instance를 사용한다면 NAT 겸 Bastion host로 사용가능하다. 설정 방법도 매우 쉽다. bastion host에 하는 설정을 NAT Instance에도 똑같이 하면 된다.
bastion host와 대안 글을 참고해 NAT 겸 Bastion host로 설정하자.
라우팅 테이블은 퍼블릭, 프라이빗 서브넷에 각각 할당할 2개를 생성한다. 위에서 VPC 외의 리소스도 한 번에 생성했다면, 퍼블릭, 프라이빗 서브넷을 제외한 나머지 서브넷은 모두 삭제하자.
퍼블릭 라우팅 테이블에는 퍼블릭 서브넷 2개를 연결하고, 라우팅에 인터넷 게이트웨이 설정을 추가한다. 위에서 VPC 외의 리소스도 한 번에 생성했다면 자동으로 연결되어 있을 것이다.
프라이빗 라우팅 테이블에는 프라이빗 서브넷 4개를 연결하고, NAT 설정을 추가한다.
대상 0.0.0.0/0 , 대상 NAT 인스턴스로 선택해 설정한다.
bastion host를 통해 프라이빗 서브넷의 인스턴스로 접속해 ping 테스트를 진행해서 인터넷 연결 여부를 확인하는게 가장 쉽고 빠르다. ping 8.8.8.8 명령어를 사용하자.
$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=104 time=34.6 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=104 time=34.2 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=104 time=34.8 ms
위와 같이 패킷이 잘 도착하면 인터넷 연결이 잘 된 것이다. 그러나 timeout이 뜬다면 연결이 제대로 안된 것이니 NAT 인스턴스, 보안그룹, 라우팅 테이블 설정을 점검하자.