AWS/VPC(Virtual Private Cloud)

1. VPC 무엇인가?

반가운사람2 2024. 1. 12. 22:28
반응형

VPC는 AWS를 사용하려면 무조건 알아야하는 서비스 중 하나이다.

이유는 무엇일까?

VPC를 한 줄로 설명하면 격리된 네트워크 공간을 제공하는 클라우드 컴퓨팅 서비스이다.

https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/what-is-amazon-vpc.html

 

Amazon VPC 작동 방식

  • VPC 및 서브넷: 사용자의 AWS 계정 전용 가상 네트워크이다. VPC는 AWS 클라우드에서 다른 가상 네트워크와 논리적으로 분리되어 있다. VPC의 IP 주소 범위를 지정하고 서브넷과 게이트웨이를 추가하고 보안 그룹을 연결한다. 서브넷은 VPC IP 주소 범위의 하위 집합 이다. Amazon EC2 인스턴스와 같은 AWS 리소스를 서브넷으로 실행할 수 있다. 서브넷은 인터넷, 다른 VPC 및 자체 데이터 센터에 연결하고 라우팅 테이블을 사용하여 서브넷에서 → 서브넷으로 트래픽을 라우팅할 수 있다. 서브넷에는 2가지 유형이 존재한다.
    • Public Subnet: 해당 서브넷이 연결한 라우팅 테이블에 Internet Gateway가 존재 할 경우
    • Private Subnet: 해당 서브넷이 연결한 라우팅 테이블에 인터넷에 대한 직접 경로가 없을 경우
  • IP 주소 지정
    • 개별 IPv4 주소는 32비트로, 최대 3개의 십진수로 구성된 그룹 4개를 포함한다. 예를 들어 10.0.1.0이다.
    • IPv4 CIDR 블록에는 마침표로 구분된 십진수 0~255로 구성된 4개 그룹이 있으며, 그 뒤에 슬래시와 0~32의 숫자(10.0.0.0/0~32 ← Subnetmask)가 따라온다.
      생성 시 VPC의 CIDR 블록을 변경할 수는 없지만 필요한 경우 추가 CIDR 블록을 추가할 수 있다.
  • Private IP Address: 프라이빗 IPv4 주소는 인터넷을 통해 액세스할 수 없고, VPC의 인스턴스 간 통신에 사용할 수 있다. VPC에서 인스턴스를 시작할 경우, 서브넷의 IPv4 주소 범위에 속한 주 Private IP 주소는 인스턴스의 주 네트워크 인터페이스인 eth0에 할당된다. 인터넷 액세스를 설정하려면 InternetGateway, Vitual Private Gateway, AWS Site-to-Site VPN 연결 또는 AWS Direct Connect와 같은 게이트웨이를 통해 액세스 설정을 한다.

  • Public IPv4 Address: 모든 서브넷은 해당 서브넷에서 생성된 네트워크 인터페이스가 퍼블릭 IPv4주소를 받을 것인지 여부를 결정하는 속성을 갖는다. 따라서 이 속성이 활성화된 서브넷에서 인스턴스를 시작할 경우, 퍼블릭 IP 주소는 인스턴스에 대해 생성된 주 네트워크 인터페이스인 eth0에 할당된다. Public IP주소는 NAT를 통해 주 Private IP 주소로 매핑된다.

  • 라우팅 테이블: 라우팅 테이블에는 VPC의 네트워크 트래픽을 전달할 위치를 결정하는 데 사용되는 라우팅이라는 규칙 집합이 포함되어 있다. 라우팅 테이블의 각 라우팅은 트래픽을 전달할 IP 주소 범위(대상 주소)와 트래픽을 전송할 게이트웨이, 네트워크 인터페이스 또는 연결(대상)을 지정한다.
  • 인터넷 액세스: VPC의 인스턴스가 인터넷으로 아웃바운드 연결을 시작할 수 있도록 하지만 인터넷으로부터의 원치 않는 인바운드 연결은 차단하려면 네트워크 주소 변환(NAT) 디바이스를 사용하면 된다. NAT는 여러 개의 프라이빗 IPv4 주소를 하나의 퍼블릭 IPv4 주소에 매핑한다. 탄력적 IP 주소로 NAT 디바이스를 구성하고 인터넷 게이트웨이를 통해 인터넷에 연결할 수 있다. 프라이빗 서브넷의 인스턴스를 NAT 디바이스를 통해 인터넷에 연결할 수 있으며, 이렇게 하면 인스턴스의 트래픽이 인터넷 게이트웨이로 라우팅되고, 모든 응답은 인스턴스로 라우팅된다.

 

라우팅 테이블에 대해서 좀 더 자세히 알아보자.


라우팅 규칙

라우팅 테이블 규칙 추가 화면

Destination: 트래픽을 이동할 대상 IP 대역, IP 이다.

Target: 대상 트래픽을 전송할 때 사용할 게이트웨이, 네트워크 인터페이스 또는 연결이다.

 

위 그림을 기준으로 설명을 하자면 다음과 같다.10.0.0.0/16으로 향하는 트래픽은 모두 Local로 향하도록 한다는 의미다. 쉽게 설명하자면 내부에서 발생하는 트래픽은 내부에서만 공존한다는 의미이다.

 

그럼 아래 그림은 어떤 의미일까?

 

10.0.0.0/16으로 향하는 트래픽 외에 모든 트래픽은 Internet Gateway로 향하도록 구성한 것이다.

만약 IPv6로 향하도록 하고 싶다면 아래와 같이 설정을 해줘야한다. 이유는 위에 그림으로 설정한 경우 IPv6는 포함을 하지 않기 때문이다.

 

라우팅 규칙 우선순위도 알아두면 좋다.


라우팅 테이블에서 LPM(Longest Prefix Match)을 통해 트래픽과 일치하는, 좀 더 구체적인 라우팅 우선순위를 선정한다.

아래 라우팅 규칙이 존재한다고 가정해보자.

https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/VPC_Route_Tables.html#route-tables-priority

 

우선순위를 배열해보겠다.

1. 172.31.0.0/16

2. 0.0.0.0/0

3. 10.0.0.0/16

 

이유는 무엇일까? 총 3가지 관점에서 보면 된다.

1. 가장 구체적인 목적지(CIDR 블록) 우선 : 10.0.0.0/16 > 0.0.0.0/0

2. 특정 대상 우선: igw > local

3. 높은 라우팅 테이블 우선순위: 라우팅 테이블이 여러개 존재한다고 하였을 때, 라우팅 테이블 자체에 우선순위 지정

 

이렇게 라우팅 테이블에 대한 중요 개념은 정리가 됐다.

이후에는 라우팅 테이블 Target에 대해서 하나하나씩 직접 구축하면 좋을 거 같다.

반응형