Skip to content

VPC 작동 방식


Amazon Virtual Private Cloud(Amazon VPC)를 이용하면 사용자가 정의한 가상 네트워크로 AWS 리소스를 시작할 수 있다. 이 가상 네트워크는 AWS의 확장 가능한 인프라를 사용한다는 이점과 함께 고객의 자체 데이터 센터에서 운영하는 기존 네트워크와 매우 유사하다.


1. VPC 및 서브넷

Virtual Private Cloud(VPC)는 사용자의 AWS 계정 전용 가상 네트워크이다. VPC는 AWS 클라우드에서 다른 가상 네트워크와 논리적으로 분리되어 있다. VPC의 IP 주소 범위를 지정하고 서브넷과 게이트웨이를 추가하고 보안 그룹을 연결한다.

서브넷은 VPC의 IP 주소 범위이다. Amazon EC2 인스턴스와 같은 AWS 리소스를 서브넷으로 실행할 수 있다. 서브넷을 인터넷, 다른 VPC 및 자체 데이터 센터에 연결하고 라우팅 테이블을 사용하여 서브넷으로/서브넷에서 트래픽을 라우팅할 수 있다.


2. 기본 VPC와 기본이 아닌 VPC

계정이 2013년 12월 4일 이후에 생성된 경우 각 리전에 기본 VPC가 함께 제공된다. 기본 VPC가 구성되어 사용할 준비가 되었다. 예를 들어, 리전의 각 가용 영역에 기본 서브넷, 연결된 인터넷 게이트웨이, 모든 트래픽을 인터넷 게이트웨이로 보내는 기본 라우팅 테이블의 경로, 퍼블릭 IP 주소가 있는 인스턴스에 퍼블릭 DNS 호스트 이름을 자동으로 할당하고 Amazon 제공 DNS 서버를 통해 DNS 확인을 활성화하는 DNS 설정이 있다(VPC의 DNS 속성 섹션 참조). 따라서 기본 서브넷에서 시작된 EC2 인스턴스는 자동으로 인터넷에 액세스할 수 있다. 리전에 기본 VPC가 있고 해당 리전에서 EC2 인스턴스를 시작할 때 서브넷을 지정하지 않으면 기본 서브넷 중 하나가 선택되고 해당 서브넷에서 인스턴스가 시작된다

자체 VPC를 생성하고 필요에 따라 구성할 수도 있다. 이를 기본이 아닌 VPC라고 한다. 기본이 아닌 VPC에 만든 서브넷과 기본 VPC에 만든 추가 서브넷은 기본이 아닌 서브넷이라고 한다.


3. IP 주소 지정

IP 주소가 있으면 VPC 내의 리소스가 서로 통신하고, 인터넷을 통해 다른 리소스와 통신할 수 있다.

CIDR(Classless Inter-Domain Routing) 표기법은 IP 주소 및 네트워크 마스크를 나타내는 방법이다. 이러한 주소의 형식은 다음과 같다.

  • 개별 IPv4 주소는 32비트로, 최대 3개의 십진수로 구성된 그룹 4개를 포함한다. 예를 들어 10.0.1.0이다.

  • IPv4 CIDR 블록에는 마침표로 구분된 0~255의 십진수가 최대 3개인 4개 그룹이 있으며, 그 뒤에 슬래시와 0~32의 숫자가 표시된다. 예: 10.0.0.0/16.

  • 개별 IPv6 주소는 128비트로, 4개의 16진수로 구성된 그룹 8개를 포함한다. 예: 2001:0db8:85a3:0000:0000:8a2e:0370:7334.

  • IPv6 CIDR 블록에는 콜론으로 구분된 최대 4개의 16진수로 구성된 4개 그룹이 있으며, 그 뒤에 이중 콜론, 슬래시, 1~128의 숫자가 차례로 따라온다. 예: 2001:db8:1234:1a00::/56.

자세한 내용은 Wikipedia의 Classless Inter-Domain Routing을 참조한다.

VPC를 생성할 때 VPC에 IPv4 CIDR 블록(프라이빗 IPv4 주소 범위), IPv6 CIDR 블록 또는 IPv4 및 IPv6 CIDR 블록 둘 다(듀얼 스택)를 할당해야 한다.

프라이빗 IPv4 주소는 인터넷에 접속할 수 없다. IPv6 주소는 전역적으로 고유하며 프라이빗으로 유지되거나 인터넷으로 접속하도록 구성할 수 있다.

VPC는 이중 스택 모드에서 작동할 수 있다. 즉, 리소스가 IPv4, IPv6 또는 IPv4와 IPv6 모두를 통해 통신할 수 있다. IPv4 및 IPv6 주소는 서로 독립적이다. IPv4 및 IPv6에 대해 별도의 경로와 보안 그룹 규칙을 추가해야 한다.

1) 프라이빗 IPv4 주소

프라이빗 IPv4 주소(이 단원에서는 프라이빗 IP 주소로도 표시)는 인터넷을 통해 액세스할 수 없고, VPC의 인스턴스 간 통신에 사용할 수 있다. VPC에서 인스턴스를 시작할 경우, 서브넷의 IPv4 주소 범위에 속한 주 프라이빗 IP 주소는 인스턴스의 주 네트워크 인터페이스(eth0)에 할당된다. 또한 각 인스턴스에는 인스턴스의 프라이빗 IP 주소를 확인하는 프라이빗(내부) DNS 호스트 이름이 할당된다. 호스트 이름은 리소스 기반 또는 IP 기반의 두 가지 유형이 될 수 있다. 자세한 내용은 EC2 인스턴스 이름 지정을 참조한다. 주 프라이빗 IP 주소를 지정하지 않으면 서브넷 범위에서 사용 가능한 IP 주소가 선택된다. 네트워크 인터페이스에 대한 자세한 내용은 Linux 인스턴스용 Amazon EC2 사용 설명서의 탄력적 네트워크 인터페이스를 참조한다.

보조 프라이빗 IP 주소인 추가 프라이빗 IP 주소를 VPC에서 실행 중인 인스턴스에 할당할 수 있다. 주 프라이빗 IP 주소와 달리, 보조 프라이빗 IP 주소는 한 네트워크 인스턴스에서 다른 네트워크 인스턴스로 재할당할 수 있다. 인스턴스가 중지 및 재시작될 때 프라이빗 IP 주소는 네트워크 인터페이스와 계속해서 연동되고 인스턴스가 종료되면 연동이 해제된다. 주 IP 주소와 보조 IP 주소에 대한 자세한 내용은 Linux 인스턴스용 Amazon EC2 사용 설명서의 여러 IP 주소를 참조한다.

프라이빗 IP 주소란 VPC의 IPv4 CIDR 범위 내 IP 주소를 말한다. 대부분의 VPC IP 주소 범위는 RFC 1918에서 지정된 프라이빗(비공개적으로 라우팅 가능) IP 주소 범위 내에 들어가지만 VPC에 대해 공개적으로 라우팅이 가능한 CIDR 블록을 사용할 수 있다. VPC의 IP 주소 범위에 상관없이 공개적으로 라우팅 가능한 CIDR 블록을 포함해 VPC의 CIDR 블록에서 인터넷으로 직접 액세스하는 것은 지원하지 않는다. 인터넷 게이트웨이, 가상 프라이빗 게이트웨이, AWS Site-to-Site VPN 연결 또는 AWS Direct Connect와 같은 게이트웨이를 통한 인터넷 액세스를 설정해야 한다.

2) 퍼블릭 IPv4 주소

모든 서브넷은 해당 서브넷에서 생성된 네트워크 인터페이스가 퍼블릭 IPv4 주소(이 단원에서는 퍼블릭 IP 주소로도 표시함)를 받을 것인지 여부를 결정하는 속성을 가진다. 따라서 이 속성이 활성화된 서브넷에서 인스턴스를 시작할 경우, 퍼블릭 IP 주소는 인스턴스에 대해 생성된 주 네트워크 인터페이스(eth0)에 할당된다. 퍼블릭 IP 주소는 NAT(Network Address Translation)를 통해 주 프라이빗 IP 주소로 매핑된다.

다음을 수행하여 인스턴스가 퍼블릭 IP 주소를 수신할지 여부를 제어할 수 있다.

  • 서브넷의 퍼블릭 IP 주소 지정 속성 수정. 자세한 내용은 서브넷의 퍼블릭 IPv4 주소 지정 속성 수정 단원을 참조한다.

  • 인스턴스를 시작하는 동안 퍼블릭 IP 주소 지정 기능을 활성화하거나 비활성화하면 서브넷의 퍼블릭 IP 주소 지정 속성을 재정의한다.

퍼블릭 IP 주소는 Amazon의 퍼블릭 IP 주소 풀로부터 할당되며 계정과는 관련이 없다. 인스턴스에서 퍼블릭 IP 주소의 연결이 해제되면 이 주소는 풀로 돌아가지만 더 이상 사용할 수 없다. 퍼블릭 IP 주소는 수동으로 연결하거나 해제할 수 없다. 어떤 경우에는 Amazon에서 귀하의 인스턴스로부터 퍼블릭 IP 주소를 해제하거나 새 인스턴스에 할당한다. 자세한 내용은 Linux 인스턴스용 Amazon EC2 사용 설명서의 퍼블릭 IP 주소를 참조한다.

필요에 따라 인스턴스에 할당하거나 인스턴스에서 제거가 가능한, 계정에 할당된 영구 퍼블릭 IP 주소가 필요한 경우, 그 대신에 탄력적 IP 주소를 사용한다. 자세한 내용은 탄력적 IP 주소를 VPC의 리소스와 연결 단원을 참조한다.

VPC에서 DNS 호스트 이름을 지원하는 경우, 퍼블릭 IP 주소 또는 탄력적 IP 주소를 받는 각 인스턴스에도 퍼블릭 DNS 호스트 이름이 할당된다. Amazon은 퍼블릭 DNS 호스트 이름을 인스턴스 네트워크 외부에서는 인스턴스의 퍼블릭 IP 주소로 변환하고 인스턴스 네트워크 내부에서는 인스턴스의 프라이빗 IP 주소로 변환한다. 자세한 내용은 VPC의 DNS 속성 단원을 참조한다.

3) IPv6 주소

IPv6 CIDR 블록을 VPC 및 서브넷에 연결할 수도 있다. 자세한 내용은 IPv6 CIDR 블록을 서브넷에 연결 섹션을 참조한다.

IPv6 CIDR 블록이 VPC와 서브넷에 연결되어 있고 다음 중 하나가 true이면 VPC의 인스턴스는 IPv6 주소를 받는다.

  • 서브넷은 인스턴스가 시작되는 과정에서 인스턴스의 주 네트워크 인터페이스에 IPv6 주소를 자동 할당하도록 구성되어 있다.

  • 시작하는 과정에서 인스턴스에 IPv6 주소를 수동으로 할당한다.

  • 시작을 완료한 후에 인스턴스에 IPv6 주소를 할당한다.

  • 동일 서브넷에서 네트워크 인터페이스에 IPv6 주소를 할당하고 시작을 완료한 후에 인스턴스에 네트워크 인터페이스를 연결한다.

시작하는 과정에서 인스턴스가 IPv6 주소를 받는 경우, 해당 주소는 인스턴스의 주 네트워크 인터페이스(eth0)와 연결된다. 주 네트워크 인터페이스에서 IPv6 주소 연결을 해제할 수 있다. 인스턴스에 대해서는 IPv6 DNS 호스트 이름을 지원하지 않는다.

인스턴스를 중지하고 시작할 때에는 IPv6 주소가 지속되다가 인스턴스를 종료하면 해제된다. IPv6 주소는 다른 네트워크 인터페이스에 할당되는 동안에는 재할당할 수 없으므로 먼저 할당을 해제해야 한다.

인스턴스에 연결된 네트워크 인터페이스에 IPv6 주소를 할당함으로써 인스턴스에 추가 IPv6 주소를 할당할 수 있다. 네트워크 인터페이스에 할당할 수 있는 IPv6 주소의 개수, 그리고 인스턴스에 연결할 수 있는 네트워크 인터페이스의 개수는 인스턴스 유형에 따라 달라진다. 자세한 내용은 Amazon EC2 사용 설명서의 인스턴스 유형별/네트워크 인터페이스당 IP 주소를 참조한다.

IPv6 주소는 전역적으로 고유하며 프라이빗으로 유지되거나 인터넷으로 접속하도록 구성할 수 있다. 서브넷에 대한 라우팅을 제어하거나 보안 그룹 및 네트워크 ACL 규칙을 사용함으로써 인스턴스가 IPv6 주소를 통해 접속이 가능하도록 할지 여부를 제어할 수 있다. 자세한 내용은 Amazon VPC의 인터네트워크 트래픽 프라이버시 단원을 참조한다.

예약된 IPv6 주소 범위에 대한 자세한 정보는 IANA IPv6 Special-Purpose Address RegistryRFC4291을 참조한다.

4) 고유 IP 주소 사용

AWS 계정으로 고유 퍼블릭 IPv4 주소 범위 또는 IPv6 주소 범위의 일부 또는 전체를 가져올 수 있다. 주소 범위를 계속해서 소유할 수 있지만 AWS에서는 기본적으로 인터넷에 이러한 주소 범위를 알린다. 주소 범위를 AWS(으)로 가져오고 나면 이러한 주소가 계정에 주소 풀로 나타난다. IPv4 주소 풀에서 탄력적 IP 주소를 생성할 수 있으며, IPv6 주소 풀의 IPv6 CIDR 블록을 VPC와 연결할 수 있다.

자세한 내용은 Linux 인스턴스용 Amazon EC2 사용 설명서의 고유 IP 주소 가져오기(BYOIP)를 참조한다.


4. 라우팅 테이블

라우팅 테이블에는 VPC의 네트워크 트래픽을 전달할 위치를 결정하는 데 사용되는 라우팅이라는 규칙 집합이 포함되어 있다. 서브넷을 특정 라우팅 테이블과 명시적으로 연결할 수 있다. 그렇지 않으면 서브넷이 기본 라우팅 테이블과 암시적으로 연결된다.

라우팅 테이블의 각 라우팅은 트래픽을 전달할 IP 주소 범위(대상 주소)와 트래픽을 전송할 게이트웨이, 네트워크 인터페이스 또는 연결(대상)을 지정한다.


5. 인터넷 액세스

VPC에서 시작한 인스턴스가 VPC 외부의 리소스를 어떻게 액세스할지를 제어할 수 있다.

기본 VPC에는 인터넷 게이트웨이가 포함되며, 각각의 기본 서브넷은 퍼블릭 서브넷이다. 기본 서브넷에서 시작한 각 인스턴스에는 프라이빗 IPv4 주소와 퍼블릭 IPv4 주소가 있다. 이러한 인스턴스는 인터넷 게이트웨이를 통해 인터넷과 통신할 수 있다. 인터넷 게이트웨이를 통해 인스턴스는 Amazon EC2 네트워크 엣지를 통해 인터넷에 연결할 수 있다.

기본적으로 기본이 아닌 서브넷에서 시작한 각 인스턴스에는 프라이빗 IPv4 주소가 있으며, 시작 시 특별히 지정하거나 서브넷의 퍼블릭 IP 주소 속성을 수정하지 않는 한 퍼블릭 IPv4 주소는 없다. 이러한 인스턴스는 서로 통신할 수는 있지만 인터넷에 액세스할 수는 없다.

기본이 아닌 서브넷에서 시작한 인스턴스에 대해 해당 VPC에 인터넷 게이트웨이를 추가하고(해당 VPC가 기본 VPC가 아닐 경우) 인스턴스에 탄력적 IP 주소를 연결하여 인터넷 액세스를 가능하게 할 수 있다.

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

IPv6 CIDR 블록을 VPC와 연결하고 인스턴스에 IPv6 주소를 할당하면 인스턴스가 IPv6으로 인터넷 게이트웨이를 통해 인터넷에 연결할 수 있다. 또는 인스턴스는 외부 전용 인터넷 게이트웨이를 사용하여 IPv6를 통해 인터넷에 대한 아웃바운드 연결을 시작할 수 있다. IPv6 트래픽은 IPv4 트래픽에서 분리되어 있으므로, 라우팅 테이블에는 IPv6 트래픽에 대한 별도의 경로가 포함되어야 한다.


6. 회사 또는 홈 네트워크에 액세스

원할 경우 IPsec AWS Site-to-Site VPN 연결을 사용하여 VPC를 회사의 데이터 센터에 연결함으로써 회사 데이터 센터를 AWS 클라우드로 확장할 수 있다.

Site-to-Site VPN 연결은 AWS 측의 가상 프라이빗 게이트웨이 또는 전송 게이트웨이와 데이터 센터의 고객 게이트웨이 디바이스 간 두 개의 VPN 터널로 구성된다. 고객 게이트웨이는 Site-to-Site VPN 연결에서 고객 측이 구성하는 물리적 디바이스 또는 소프트웨어 애플리케이션이다.


7. VPC 및 네트워크 연결

두 VPC 간에 VPC 피어링 연결을 생성하여 비공개적으로 두 VPC 간에 트래픽을 라우팅할 수 있다. 동일한 네트워크에 속하는 경우와 같이 VPC의 인스턴스가 서로 통신할 수 있다.

또한 전송 게이트웨이를 생성하고 사용해 VPC와 온프레미스 네트워크를 상호 연결할 수 있다. 전송 게이트웨이는 VPC, VPN 연결, AWS Direct Connect 게이트웨이, 전송 게이트웨이 피어링 연결 등 연결 간에 이동하는 트래픽에 대해 리전 가상 라우터 역할을 한다.


8. AWS 프라이빗 글로벌 네트워크 고려 사항

AWS는 고객의 네트워킹 요구 사항을 지원하는 안전한 클라우드 컴퓨팅 환경을 제공하기 위해 고성능, 낮은 대기 시간의 프라이빗 글로벌 네트워크를 운영한다.AWS 리전은 여러 인터넷 서비스 제공업체(ISP)와 연결되는 것은 물론 프라이빗 글로벌 네트워크 백본과도 연결되어 고객으로부터 전송되는 교차 리전 트래픽을 향상된 네트워크 성능으로 처리한다.

다음 사항을 고려한다.

  • 모든 리전에서 특정 가용 영역 내부 또는 가용 영역 간 트래픽은 AWS 프라이빗 글로벌 네트워크를 통해 라우팅된다.

  • 리전 간 트래픽은 중국 리전을 제외하면 항상 AWS 프라이빗 글로벌 네트워크를 통해 라우팅된다.

네트워크 패킷 손실은 네트워크 흐름 충돌, 낮은 수준(계층 2) 오류 및 기타 네트워크 오류를 비롯한 여러 요인으로 인해 발생할 수 있다. 패킷 손실이 최소화되도록 네트워크가 엔지니어링되고 운영된다. 또한 AWS 리전을 연결하는 글로벌 백본에서 PLR(패킷 손실률)을 측정한다. 백본 네트워크를 운영하여 0.0001% 미만의 시간당 PLR 중 p99를 목표로 한다.


References