

Amazon Virtual Private Cloud(VPC)란, 사용자가 정의한 가상 네트워크 입니다. 이를 통해 AWS 리소스를 사용 할 수 있습니다.
IP 대역을 설정해서, 해당 IP 대역을 사용 하는 가상 네트워크를 만든 것이 VPC 입니다.
하나의 VPC는 논리적으로 분리 되어 있기 때문에,서로 다른 VPC는 VPC 피어링과 같은 서비스를 이용 하지 않으면 VPC간 통신은 어려울 수 있습니다. 
VPC내 에서 네트워크를 분리 시킨 것이 Subnet 입니다. 즉 실제적으로 VPC 로 잡은
즉, VPC에서 할당 받은 IP 대역들을 나눠 Subnet에 IP를 할당합니다. 이 Subnet에 있는 IP 대역을 이용하여 생성된 네트워크를 사용하는 AWS 리소스 (EC2, RDS 등) 에 IP를 제공 합니다.

그림에 있는 것들 중 몇가지에 대해서 설명 하도록 하겠습니다.
라우팅 테이블(route table)은 서브넷과 게이트웨이를 통해서 네트워크 트래픽을 어디로 통하게 할지 정하는 것을 칭합니다.
Private Subnet은 내부를 향하도록 하는 라우팅 테이블과 연결 되고 Public Sunbnet은 IGW를 통해 외부 인터넷과 트래픽 통신이 되도록 하는 라우팅 테이블과 연결이 됩니다.
먼저, VPC와 Subnet등 그림 과 같이 리소스 들 을 생성할 예정 입니다.

AWS 로그인 후, VPC를 검색 -> VPC 를 클릭 합니다.

VPC 대시보드에 가면 VPC 생성 버튼이 있습니다. 이 버튼을 클릭 합니다.

VPC 생성 화면에서 생성할 리소스 > VPC 등 을 클릭해, VPC 와 서브넷을 동시에 생성 해 줍니다.

앞서 작성한 것 처럼 Subnet에 대한 CIDR 블록의 값을 설정 해줍니다.
나머지 값들은 기본값 그대로 나두도록 하고 VPC를 생성합니다.
NAT 게이트웨이에 대해서는 Private Subnet에 EC2를 생성하며 생성 하도록 하겠습니다.

생성하기를 클릭하면 자동으로 VPC, Subnet 뿐 아니라 Internet Gateway 와 라우팅 테이블을 생성 해줍니다.



생성된 라우팅 테이블을 보면 4개가 생성 되었고, 기본적으로 10.0.0.0/16 인 경우 local(같은 내부 VPC) 과 통신 되도록 정책이 설정 되어 있습니다.
라우팅 테이블을 이용해서, 출발지 대상에 따라 목적지를 NAT, IGW, VGW, 피어링 연결등 트래픽을 제어할 수 있습니다.
이와같이 모든 자원등이 생성된 것을 확인 되었으면 이제 Public 서브넷과 Private 서브넷에 EC2를 생성 해서 각 서브넷과 통신, 인터넷으로의 통신을 해보도록 합시다 :)