VPC (Virtual Private Cloud) = 논리적으로 격리된 사용자 정의 가상 네트워크
AWS Region 에 여러 VPC 생성 가능 (Region 당 최대 5개)
VPC 당 최대 CIDR 는 5개, 각 CIDR:
최소 크기 = /28 (16개 IP 주소)
최대 크기 = /16 (65536개 IP 주소)
VPC 는 프라이빗이므로 프라이빗 IPv4 범위만 허용:
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
VPC CIDR 는 다른 네트워크와 겹치지 않아야 함
VPC 에서 S3, DynamoDB 같은 서비스에 접근하려면 IGW 가 필요
Traffic Mirroring
VPC 에서 네트워크 트래픽을 캡처하고 검사 가능
트래픽을 보안 어플라이언스로 라우팅
트래픽 캡처:
ENI 에서
ENI 또는 NLB 로
모든 패킷 캡처 또는 관심 있는 패킷만 캡처
소스와 타겟은 동일한 VPC 또는 다른 VPC 에 있을 수 있음
Subnet
AWS 는 각 Subnet 에서 5개의 IP 주소 예약 (처음 4개 & 마지막 1개)
이 5개 주소는 사용 불가하며 EC2 인스턴스에 할당할 수 없음
e.g. 10.0.0.0/24 의 경우:
10.0.0.0 - 네트워크 주소
10.0.0.1 - VPC 라우터용으로 AWS 가 예약
10.0.0.2 - Amazon 제공 DNS 매핑용으로 AWS 가 예약
10.0.0.3 - 향후 사용을 위해 AWS 가 예약
10.0.0.255 - 네트워크 브로드캐스트 주소
Subnet 은 기본적으로 Private Subnet 이고 동일 VPC 내에 있는 Subnet 끼리는 local Route 를 통해 서로 통신이 가능하다. 때문에 동일 VPC 에 생성되는 리소스, 정확히는 ENI 는 어느 서브넷에 있든 리소스끼리 서로 문제없이 접근할 수 있다. 다만 VPC 는 모든 AZ 를 포함하기 때문에 서로 다른 AZ 에 위치한 Subnet 에 생성된 리소스 간의 통신에는 데이터센터 간 통신이 추가적으로 발생하기 때문에 지연, 비용 등 통신 비효율이 발생할 수 있다.
Internet Gateway
VPC 의 리소스가 인터넷에 연결할 수 있도록 함
수평 확장이 가능하고 고가용성이며 중복됨
하나의 VPC 는 하나의 IGW 에만 연결 가능하며 그 반대도 마찬가지, 즉, 1:1 관계
IGW 자체만으로는 인터넷 액세스를 허용하지 않음
라우트 테이블을 편집해야 함
Egress-only Internet Gateway
IPv6용 NATGW
라우트 테이블을 업데이트해야 함
Bastion Hosts
Bastion Host 를 사용하여 프라이빗 EC2 인스턴스에 SSH 접속 가능
Bastion 은 Public Subnet 에 있으며 다른 모든 프라이빗 Subnet 에 연결됨
Bastion Host SG 는 제한된 CIDR 에서 포트 22로의 인터넷 Inbound 를 허용해야 함
EC2 인스턴스의 SG 는 Bastion Host 의 SG 또는 Bastion 의 Private IP 를 허용해야 함
NAT Gateway
AWS 관리형 NAT, 높은 대역폭, 고가용성, 관리 불필요
사용 시간 및 대역폭에 따라 시간당 요금 지불
NATGW 는 특정 AZ 에 생성되며 EIP 를 사용
동일한 서브넷의 EC2 인스턴스에서는 사용할 수 없음 (다른 서브넷에서만 사용)
IGW 필요 (Private Subnet → NATGW → IGW)
5Gbps 의 대역폭으로 최대 45Gbps 까지 자동 확장
관리할 SG 없음/필요 없음
NACL & Security Groups
Network Access Control List
Subnet 에 대한 Inbound 및 Outbound 트래픽을 제어하는 Stateless 가상 방화벽
트래픽 허용 여부를 결정할 때 가장 낮은 번호의 규칙부터 순서대로 처리
기본 NACL은 모든 인바운드 및 아웃바운드 트래픽을 허용
Security Groups
EC2 에 대한 Inbound 및 Outbound 트래픽을 제어하는 Stateful 가상 방화벽
기본적으로 모든 Inbound 트래픽을 거부하고 모든 Outbound 트래픽을 허용
VPC Peering
AWS 네트워크를 사용하여 2개의 VPC를 프라이빗하게 연결
동일한 네트워크에 있는 것처럼 동작하게 함
CIDR 가 겹치지 않아야 함
VPC Peering 연결은 전이적이지 않음 (서로 통신해야 하는 각 VPC에 대해 설정해야 함, 때문에 2개 이상의 VPC 를 연결해야 할 경우 TGW 고려)
각 VPC 의 서브넷에서 라우트 테이블을 업데이트하여 EC2 인스턴스가 서로 통신할 수 있도록 해야 함
VPC Endpoints
Gateway VPC 엔드포인트는 VPC 에 인터넷 게이트웨이나 NAT 디바이스 없이 Amazon S3 및 DynamoDB 에 안정적인 연결을 제공
Interface Endpoints (powered by PrivateLink)
ENI(프라이빗 IP 주소)를 진입점으로 프로비저닝 (SG 연결 필수)
대부분의 AWS 서비스 지원
시간당 + 처리된 데이터 GB당 비용 청구
온프레미스(S2S VPN 또는 Direct Connect), 다른 VPC 또는 다른 Region 에서 필요한 경우 선호
Gateway Endpoints
게이트웨이를 프로비저닝하고 라우트 테이블에서 대상으로 사용해야 함 (SG 사용 안 함)
S3 및 DDB 모두 지원
무료
VPC Flow Logs
인터페이스로 들어가는 IP 트래픽에 대한 정보 캡처:
VPC Flow Logs
Subnet Flow Logs
ENI Flow Logs
연결 문제 모니터링 및 해결에 도움
Flow logs 데이터는 S3, CloudWatch Logs, Kinesis Data Firehose 로 전송 가능