AWS VPC 기본 개념
VPC (Virtual Private Cloud)
가상 네트워크
고객의 자체 데이터 센터에서 운영하는 기존의 네트워크가 개념적으로 매우 유사하다.
VPC 특징
- 계정 생성시 default로 VPC를 만들어 준다.
- VPC 위에서 EC2, RDS, S3 등의 서비스를 활용할 수 있다.
- 서브넷을 구성할 수 있다.
- 보안 설정을 할 수 있다. (IP block, inbound outbound 설정)
- VPC peering (VPC 간의 연결)을 할 수 있다.
- IP 대역을 지정할 수 있다.
- VPC는 하나의 Region에만 속할 수 있다. (다른 Region으로 확장이 불가능)
VPC 구성
- Availability Zone
- Subnet(CIDR)
- Internet Gateway
- Network Access Control List/security group
- Route Table
- NAT(Network Address Translation) instance/NAT gateway
- VPC endpoint
Availability Zone (AZ)
하나의 Region 안에는 여러 개의 AZ가 존재한다. 물리적으로 분리된 인프라가 모여있는 데이터 센터를 의미한다. 불상사의 사고에 대비하기 위함이다. 각 계정의 AZ는 다른 계정의 AZ와 다른 아이디를 부여받는다(나의 AZ a가 다른 사람의 AZ a와 같지 않다).
Subnet
- VPC의 하위 단위
- 하나의 AZ에서만 생성 가능
- 하나의 AZ에는 여러 개의 Subnet 생성 가능
Private subnet
- 인터넷에 접근 불가능한 Subnet
- VPC 내부에서만 네트워킹 가능
Public subnet
- 인터넷에 접근 가능한 Subnet
CIDR
- CIDR 블록을 통해 Subnet을 구분한다.
- 하나의 VPC 내에 있는 여러 IP 주소를 각각의 Subnet으로 분리 / 분배하는 방법
* 여기까지 간단히 정리하면, Region ⊃ VPC ⊃ AZ ⊃ Subnet
Internet gateway (IGW)
인터넷으로 나가는 통로이다. Private subnet은 IGW로 연결되어 있지 않다.
Route table
트래픽이 어디로 가야할지 알려주는 테이블이다. VPC 생성시 자동으로 만들어진다.
- 10.0.0.0/16 (10.0.0.0 ~ 10.0.255.255) 는 local(VPC 내부)로 간다.
- 나머지는 IGW(인터넷)
NACL (Network Access Control List) / Security Group
- 보안 검문소
- NACL는 Stateless, SG는 Stateful
- Access Block은 NACL에서만 가능하다.
Security Group은 VPC Subnet의 설정값이라고 생각하면 된다.
NAT (Network Address Translation) instance / gateway
Private subnet에는 주로 데이터베이스와 같은 중요한 자원이 존재한다. 따라서 Private subnet에서의 트래픽은 Internet Gateway로 전달되지 않는다.
그러나 Private subnet에서도 소프트웨어 업데이트 같이 인터넷 연결이 필요한 경우가 있다. 이 때는 Private subnet에서 Public subnet의 NAT instance, NAT gateway를 거쳐 외부 인터넷과 우회적으로 연결을 한다.
* 흐름: Private subnet 내의 EC2 → NACL → Route Table → Router → Public subnet 내의 NAT gateway → NACL → Route Table → Router → Internat gateway → Internet
- NAT Instance는 단일 Instance (EC2)
- NAT Gateway는 AWS에서 제공하는 서비스 (서비스)
Bastion host
관리자가 Private subnet에 접근해야 하는 경우가 있다. 이 때는 Bastion Host를 통해 Private subnet에 접근한다. Bastion host는 Public subnet 내의 EC2이다.
VPC Endpoint
- AWS의 서비스들과 VPC를 연결시켜주는 중간 매개체
- AWS에서 VPC 바깥으로 트래픽이 나가지 않고 AWS의 여러 서비스를 사용하게 만들어준다.
- Private subnet 같은 경우는 격리되어 있음으로 AWS의 여러 서비스들을 연결할 수 있도록 만들어준다.
- VPC 엔드포인트를 통해 AWS 서비스에 비공개를 연결할 수 있다.
- VPC 인스턴스는 퍼블릭 IP 주소를 필요로 하지 않는다.
- Interface Endpoint: Private IP를 만들어 서비스로 연결해준다. (SQS, SNS, Kinesis, Sagemaker 등 지원)
- Gateway Endpoint: 라우팅 테이블에서 경로의 대상으로 지정하여 사용한다. (S3, Dynamodb 지원)