AWS VPC Foundations

Mango
5 min readApr 8, 2023

--

클라우드 환경에서 사용하는 논리적으로 분리된 네트워크 환경 입니다. 이번 장에서는 VPC의 기초라고 할 수 있는 네트워크에 사용 가능한 IP를 할당하고 외부 공용 인터넷과 연결하는 동작에 대해 알아보겠습니다.

VPC는 IPv4, IPv6 두가지 모두 지원하지만 범용적으로 많이 사용하는 IPv4 기준으로만 설명하도록 하겠습니다.

  • CIDR
  • Subnets
  • Internet Gateway
  • NAT Gateway

CIDR

VPC의 IP 영역을 지정하는 설정입니다. 최소 1개 이상의 IP/CIDR 규칙을 설정해야 합니다.

IP뒤에 서브넷 마스크를 ‘/‘ 뒤에 정수 형태로 표현하는 형태입니다. 예시를 들면 10.0.0.0/16 이며 10.0.0.0이 IP 뒤의 16이 CIDR 입니다. 1~32까지 표현 할 수 있으며 32부터 1까지 순서대로 2진수의 제곱 만큼 네트워크 사용 범위가 늘어납니다.

텍스트 만으로는 이해가 어려울 수 있어 아래 몇가지 IP/CIDR 예시로 예를들어 보겠습니다.

IP/CIDR 별 사용가능 IP 범위 예시

  • 10.0.0.0/32
    -> 10.0.0.0
  • 10.0.0.0/31
    -> 10.0.0.0 ~ 10.0.0.1
  • 172.16.0.0/24
    -> 172.16.0.0 ~ 172.16.0.255
  • 172.16.0.0/16
    -> 172.16.0.0 ~ 172.16.255.255

AWS 공식문서 에서는 RFC 1918 규격에 따라 아래 Private IPv4 주소 범위로 지정하는것을 권장 합니다

  • 10.0.0.0/16
  • 172.16.0.0/16 (VPC Default CIDR Block)
  • 192.168.0.0/20 (home network 로 주로 사용되는 CIDR Block)

CIDR 설정 시 범위가 헷갈릴수도 있으니 IP/CIDR 설정 시 해당 네트워크 범위를 바로 계산하여 볼 수 있는 유용한 사이트가 있으니 이해한게 맞는지 직접 계산해 보면서 확인하길 바랍니다!

Subnets

VPC 내부에서 IP 주소 범위를 설정하는 단위이며 EC2와 같은 AWS 여러 리소스들은 서브넷 내부에 설정되어 Private IP를 부여받게 됩니다.

예약 IP

서브넷을 생성하면 지정한 CIDR Block 영역에서 앞에서 부터 4개 뒤에서 부터 1개 까지의 IP는 예약된 IP로 사용 됩니다. 10.0.0.0/16 을 예로 들면 아래와 같은 IP들이 예약 됩니다.

  • 10.0.0.0
  • 10.0.0.1
  • 10.0.0.2
  • 10.0.0.3
  • 10.0.255.255

Public / Private Subnets

Subnet은 Public / Private 으로 나뉘며 연결된 라우트 테이블이 외부 인터넷망과 연결되어 있으면 Public 아니면 Private 입니다.

  • 외부 인터넷 연결을 위하여 Internet Gateway 생성 후 VPC에 연결 합니다. (IGW는 VPC 단위로 연결)
  • 서브넷의 Route Table이 IGW와 라우팅 되어 있으면 Public Subnet, 아니면 Private Subnet 으로 구분됩니다.
  • Private Subnet에 속한 리소스들은 Public Subnet에 NAT Gateway를 세팅 후 Private Subnet의 Route Table에 NAT Gateway와 라우팅 설정을 하여 외부 인터넷망을 사용 할 수 있으며 NAT Gateway에 EIP를 설정하기 때문에 아웃바운드로 요청하는 IP 또한 고정 시킬 수 있습니다.

NAT

Private Subnet 에 구성되어 외부와의 인터넷 환경과 격리되어 있는 리소스들이 인터넷 환경을 필요로하는 외부 서비스에 요청 할 수 있도록 기본으로 Public Subnet에 구성되어 주소변환 후 외부와의 통신을 대신 해줍니다. 응답값을 전송할 때 원래 소스 IP 주소로 다시 변환합니다.

NAT Instance

  • 요즘은 잘 사용하지 않으며 EC2 인스턴스를 NAT Instance용 AMI를 선택하여 직접 생성합니다.
  • 아래 두가지 규칙대로 Security Group을 적용해야 합니다.
    -> HTTPS / HTTP(80, 443) 에서 VPC CIDR block 네트워크 대역 트래픽을 허용 합니다.
    -> ICMP > 모든 대역(All) 에서 VPC CIDR block 네트워크 대역 트래픽을 허용 합니다.
  • 생성 후 아래와 같은 작업을 해줘야 합니다.
    -> Network Settings > source / destination check 해제.
    -> Private Subnet > route table 설정에서 0.0.0.0/0 으로 가는 요청들은 NAT Instance로 보내도록 설정 합니다.

NAT Gateway

  • AWS 에서 제공하는 완전관리형 서비스 입니다. 위에서 설명한 NAT Instance에 비하여 간단한 설정 방식과 높은 고가용성을 제공 한다는 장점이 있습니다.
  • 가용영역별 Public Subnet에 NAT Gateway를 생성하여 가용성을 높일 수 있다.

Conclusions

AWS를 사용할 때 대부분 가장 처음 접하는게 VPC와 Subnet이 아닌가 싶다. 어렴풋이 환경을 나누는 단위라고 알고 있는 경우가 많을텐데 해당 포스팅을 통하여 VPC 에서 사용하는 IP 범위를 설정하는 방법과 VPC 내부에 서브넷으로 IP 사용 범위를 한번 더 나누고 기본적으로 Public Subnet에 설정 되어야 할 리소스들과 Private Subnet에 있는 리소스들이 필요 시 공용 인터넷을 사용하려면 어떤 설정이 필요한지 알게 되었으면 좋겠습니다.

다음에는 VPC / Subnet으로 들어오는 인 / 아웃바운드 요청에 대한 접근제어 방법과 각 VPC끼리 혹은 외부 데이터센터와 네트워크 연결을 하는 방법에 대해 알아보겠습니다.

--

--