서브넷
서브넷은 VPC의 IP 주소 범위이다. VPC로 AWS 리소스를 시작할 수 있다.
주제
1. 서브넷 기본 사항
서브넷은 VPC의 IP 주소 범위이다. EC2 인스턴스와 같은 AWS 리소스를 특정 서브넷으로 시작할 수 있다. 서브넷을 만들 때 해당 서브넷에 대한 IPv4 CIDR 블록을 지정한다. 이는 VPC CIDR 블록의 서브넷이다. 각 서브넷은 단일 가용 영역 내에서만 존재해야 하며, 여러 영역으로 확장할 수 없다. 별도의 가용 영역에서 인스턴스를 시작함으로써 단일 영역에서 장애가 발생할 경우 애플리케이션을 보호할 수 있다.
필요에 따라 컴퓨팅, 스토리지, 데이터베이스 및 기타 선택 서비스를 최종 사용자에게 더 가깝게 배치하는 AWS 인프라 배포인 로컬 영역에 서브넷을 추가할 수 있다. 로컬 영역을 사용하면 최종 사용자가 한 자릿수 밀리초 지연 시간이 필요한 애플리케이션을 실행할 수 있다. 자세한 정보는 Linux 인스턴스용 Amazon EC2 사용 설명서에서 Local Zones를 참조한다.
1) 서브넷 유형
서브넷의 라우팅 구성 방법에 따라 서브넷은 퍼블릭, 프라이빗 또는 VPN 전용으로 간주된다.
-
퍼블릭 서브넷: 서브넷에는 인터넷 게이트웨이에 직접 연결되는 경로가 있다. 퍼블릭 서브넷의 리소스는 퍼블릭 인터넷에 액세스할 수 있다.
-
프라이빗 서브넷: 서브넷에는 인터넷 게이트웨이에 직접 연결되는 경로가 없다. 프라이빗 서브넷의 리소스에는 퍼블릭 인터넷에 액세스하기 위해 NAT 디바이스가 필요하다.
-
VPN 전용 서브넷: 서브넷은 가상 프라이빗 게이트웨이를 통해 사이트 간 VPN 연결로 라우팅된다. 서브넷에는 인터넷 게이트웨이에 대한 경로가 없다.
서브넷을 만들 때 VPC 구성에 따라 다음과 같이 IP 주소를 지정한다.
-
IPv4 전용: 서브넷에 IPv4 CIDR 블록은 있지만 IPv6 CIDR 블록은 없다. IPv4 전용 서브넷의 리소스는 IPv4를 통해 통신해야 한다.
-
듀얼 스택: 서브넷에 IPv4 CIDR 블록 및 IPv6 CIDR 블록이 둘 다 있다. VPC에는 IPv4 CIDR 블록 및 IPv6 CIDR 블록이 둘 다 있어야 한다. 듀얼 스택 서브넷의 리소스는 IPv4 및 IPv6를 통해 통신할 수 있다.
-
IPv6 전용: 서브넷에 IPv6 CIDR 블록은 있지만 IPv4 CIDR 블록은 없다. VPC에 IPv6 CIDR 블록이 있어야 한다. IPv6 전용 서브넷의 리소스는 IPv6를 통해 통신해야 한다.
서브넷의 유형과 관계없이 서브넷의 내부 IPv4 주소 범위는 항상 프라이빗이다. 즉 인터넷에 주소 블록을 알리지 않는다. VPC의 프라이빗 IP 주소 지정에 대한 자세한 내용은 IP 주소 지정 단원을 참조한다.
2) 서브넷 설정
모든 서브넷은 해당 서브넷에서 생성된 네트워크 인터페이스에 퍼블릭 IPv4 주소(해당되는 경우, IPv6 주소)가 할당될 것인지 결정하는 수정 가능한 속성을 가진다. 여기에는 해당 서브넷에서 인스턴스를 시작할 때 인스턴스에 대해 생성된 주 네트워크 인터페이스(eth0)가 포함된다. 서브넷 속성에 상관없이 특정 인스턴스를 시작하는 중에 해당 인스턴스에 대한 이 설정을 재정의할 수 있다.
서브넷을 생성한 후 서브넷에 대한 다음 설정을 수정할 수 있다.
-
IP 설정 자동 할당: 이 서브넷의 새 네트워크 인터페이스에 대한 퍼블릭 IPv4 또는 IPv6 주소를 자동으로 요청하도록 자동 할당 IP 설정을 구성할 수 있다.
-
리소스 기반 이름(RBN) 설정: 이 서브넷에서 EC2 인스턴스에 대한 호스트 이름 유형을 지정하고 DNS A 및 AAAA 레코드 쿼리가 처리되는 방법을 구성할 수 있다. 이러한 설정에 대한 자세한 내용은 Linux 인스턴스용 Amazon EC2 사용 설명서의 Amazon EC2 인스턴스 호스트 이름 유형을 참조한다.
3) 서브넷 다이어그램
다음 다이어그램에서는 한 리전에 있는 2개의 VPC를 보여준다. 각 VPC에는 퍼블릭 및 프라이빗 서브넷과 인터넷 게이트웨이가 있다. VPC는 로컬 영역도 확장한다.
2. 서브넷 크기
서브넷의 CIDR 블록은 VPC에 대한 CIDR 블록(VPC의 단일 서브넷용) 또는 VPC에 대한 CIDR 블록의 하위 세트(VPC에 여러 서브넷 생성용)와 동일할 수 있다. 허용된 블록 크기는 /28
넷마스크~/16
넷마스크이다. VPC에 두 개 이상의 서브넷을 만들 경우, 서브넷의 CIDR 블록이 겹치지 않아야 한다.
예를 들어 CIDR 블록이 10.0.0.0/24
인 VPC를 만들 경우 256개의 IP 주소를 지원한다. 이 CIDR 블록을 각각 128개의 IP 주소를 지원하는 2개의 서브넷으로 나눌 수 있다. 한 서브넷은 10.0.0.0/25
CIDR 블록(10.0.0.0
~10.0.0.127
사이의 주소)을, 다른 서브넷은 10.0.0.128/25
CIDR 블록(10.0.0.128
~10.0.0.255
사이의 주소)을 사용한다.
인터넷에서 IPv4 서브넷 CIDR 블록을 계산하고 생성하는 데 도움이 되는 도구가 있다. '서브넷 계산기' 또는 'CIDR 계산기'와 같은 용어를 검색하여 필요에 맞는 도구를 찾을 수 있다. 또한 네트워크 엔지니어링 그룹의 도움을 받아 서브넷에 지정할 CIDR 블록을 정할 수도 있다.
각 서브넷 CIDR 블록에서 첫 4개의 IP 주소와 마지막 IP 주소는 사용자가 사용할 수 없으므로 EC2 인스턴스 등의 리소스에 할당할 수 없다. 예를 들어 10.0.0.0/24
CIDR 블록의 서브넷에서는 다음 5개 IP 주소가 예약되어 있다.
-
10.0.0.0: 네트워크 주소.
-
10.0.0.1: AWS에서 VPC 라우터용으로 예약한 주소.
-
10.0.0.2: AWS에서 예약한 주소. DNS 서버의 IP 주소는 기본 VPC 네트워크 범위에 2를 더한 주소이다. CIDR 블록이 여러 개인 VPC의 경우, DNS 서버의 IP 주소가 기본 CIDR에 위치한다. 또한 각 서브넷 범위의 기본에 2를 더한 주소를 VPC의 모든 CIDR 블록에 대해 예약한다. 자세한 내용은 Amazon DNS 서버 섹션을 참조한다.
-
10.0.0.3: AWS에서 앞으로 사용하려고 예약한 주소.
-
10.0.0.255: 네트워크 브로드캐스트 주소. VPC에서는 브로드캐스트를 지원하지 않으므로, 이 주소를 예약한다.
명령줄 도구 또는 Amazon EC2 API를 사용하여 서브넷을 추가하면 CIDR 블록이 표준 형식으로 자동 수정된다. 예를 들어 CIDR 블록에 100.68.0.18/18을 지정하면 100.68.0.0/18의 CIDR 블록이 생성된다.
1) IPv6에 대한 서브넷 크기 조정
IPv6 CIDR 블록을 VPC와 연결한 경우, IPv6 CIDR 블록을 VPC의 기존 서브넷 또는 새로 생성한 서브넷과 연결할 수 있다. 서브넷의 IPv6 CIDR 블록은 /64
의 고정 접두사 길이이다.
인터넷에서 IPv6 서브넷 CIDR 블록을 계산하고 생성하는 데 도움이 되는 도구를 사용할 수 있다(예: IPv6 주소 플래너). 'IPv6 서브넷 계산기' 또는 'IPv6 CIDR 계산기'와 같은 용어를 검색하여 필요에 맞는 다른 도구를 찾을 수 있다. 또한 네트워크 엔지니어링 그룹의 도움을 받아 서브넷에 지정할 IPv6 CIDR 블록을 정할 수도 있다.
각 서브넷 CIDR 블록에서 첫 4개의 IPv6 주소와 마지막 IPv6 주소는 사용자가 사용할 수 없으므로 EC2 인스턴스에 할당할 수 없다. 예를 들어 2001:db8:1234:1a00/64
CIDR 블록의 서브넷에서는 다음 5개 IP 주소가 예약되어 있다.
-
2001:db8:1234:1a00::
-
2001:db8:1234:1a00::1
: AWS에서 VPC 라우터용으로 예약한 주소. -
2001:db8:1234:1a00::2
-
2001:db8:1234:1a00::3
-
2001:db8:1234:1a00:ffff:ffff:ffff:ffff
위 예제에서 VPC 라우터용으로 AWS에서 예약한 IP 주소 외에도 다음 IPv6 주소가 기본 VPC 라우터용으로 예약되어 있다.
-
EUI-64를 사용하여 생성된 FE80::/10 범위의 링크-로컬 IPv6 주소이다. 링크-로컬 주소에 대한 자세한 내용은 링크-로컬 주소를 참조한다.
-
링크-로컬 IPv6 주소
FE80:ec2::1
이다.
IPv6를 통해 VPC 라우터와 통신해야 하는 경우 필요에 가장 적합한 주소와 통신하도록 애플리케이션을 구성할 수 있다.
3. 서브넷 라우팅
각 서브넷은 서브넷 외부로 나가는 아웃바운드 트래픽에 대해 허용된 경로를 지정하는 라우팅 테이블이 연결되어 있어야 한다. 생성된 각 서브넷은 자동으로 VPC의 기본 라우팅 테이블에 연결된다. 테이블 연결 및 기본 라우팅 테이블의 내용을 변경할 수 있다. 자세한 내용은 라우팅 테이블 구성 섹션을 참조한다.
4. 서브넷 보안
AWS 리소스를 보호하려면 프라이빗 서브넷을 사용하는 것이 좋다. Bastion 호스트 또는 NAT 디바이스를 사용하여 프라이빗 서브넷에 있는 EC2 인스턴스와 같은 리소스에 대한 인터넷 액세스를 제공한다.
AWS은(는) VPC에서 리소스에 대한 보안을 강화하기 위해 사용할 수 있는 기능을 제공한다. 보안 그룹은 EC2 인스턴스와 같은 관련 리소스에 대한 인바운드 및 아웃바운드 트래픽을 허용한다. 네트워크 ACL은 사용하여 서브넷 수준에서 인바운드 및 아웃바운드 트래픽을 허용하거나 제어한다. 대부분의 경우 보안 그룹은 사용자의 요구 사항을 충족할 수 있다. 단, 추가 보안 계층을 원하는 경우 네트워크 ACL을 사용할 수 있다. 자세한 내용은 보안 그룹 및 네트워크 ACL 비교 섹션을 참조한다.
각 서브넷에는 네트워크 ACL이 연결되어야 한다. 생성하는 모든 서브넷은 VPC의 기본 네트워크 ACL과 자동으로 연결된다. 기본 네트워크 ACL은 인바운드와 아웃바운드 트래픽을 모두 허용한다. 기본 네트워크 ACL을 업데이트하거나, 사용자 지정 네트워크 ACL을 생성하여 서브넷에 연결할 수 있다. 자세한 내용은 네트워크 ACL을 사용하여 서브넷에 대한 트래픽 제어 섹션을 참조한다.
VPC 또는 서브넷에 흐름 로그를 만들어 VPC 또는 서브넷의 네트워크 인터페이스로 들어오고 나가는 모든 트래픽을 캡처할 수 있다. 또한 개별 네트워크 인터페이스에 흐름 로그를 만들 수도 있다. 자세한 내용은 VPC 흐름 로그를 사용하여 IP 트래픽 로깅 섹션을 참조한다.