VPC 란
- 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 - 네트워크 브로드캐스트 주소
- e.g. 10.0.0.0/24 의 경우:
- Subnet 은 기본적으로 Private Subnet 이고 동일 VPC 내에 있는 Subnet 끼리는 local Route 를 통해 서로 통신이 가능하다. 때문에 동일 VPC 에 생성되는 리소스, 정확히는 ENI 는 어느 서브넷에 있든 리소스끼리 서로 문제없이 접근할 수 있다. 다만 VPC 는 모든 AZ 를 포함하기 때문에 서로 다른 AZ 에 위치한 Subnet 에 생성된 리소스 간의 통신에는 데이터센터 간 통신이 추가적으로 발생하기 때문에 지연, 비용 등 통신 비효율이 발생할 수 있다.
Route Table
- VPC 내부에 속하고 Subnet 을 연결할 수 있다.
- 기본적으로 VPC 의 CIDR 는 local 로 보낸다.
- 예를 들어, Destination 이 VPC CIDR 인 10.0.0.0/16 이면 Target 인 local 로 보내고, Destination 이 0.0.0.0/0 이면 IGW 를 Target 으로 보낸다.
- 08. Routing 의 정적라우팅이 여기에 해당한다.
Internet Gateway
- VPC 의 리소스가 인터넷에 연결할 수 있도록 한다.
- 수평 확장 고가용성을 지원한다.
- 하나의 VPC 는 하나의 IGW 에만 연결 가능하다. 즉, 1:1 관계
- IGW 자체만 생성해선 인터넷에 연결되지 않는다.
- 라우트 테이블에서 Destination=0.0.0.0/0, Target=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 로 전송 가능
- AWS 관리형 인터페이스의 네트워크 정보도 캡처: ELB, RDS, ElastiCache, Redshift, WorkSpaces, NATGW, Transit GW, …
AWS Site-to-Site VPN
- 온프레미스 네트워크와 AWS 클라우드 네트워크 간에
암호화된 네트워크 경로생성 - 이
연결은 인터넷을 사용하므로 일관성을 기대할 수 없음 - 트래픽이 암호화되어 있어도 인터넷은 공유 리소스이므로 연결이
프라이빗하지 않음
Virtual Private Gateway (VGW)
- VPN 연결의 AWS 측 VPN 집중 장치
- VGW를 생성하고 VPC에 연결
- ASN(Autonomous System Number)을 사용자 지정할 수 있음
- 서브넷과 연결된 라우트 테이블에서 VPG에 대한
Route Propagation을 활성화
Customer Gateway (CGW)
- VPN 연결의 고객 측에 있는 소프트웨어 앱 또는 물리적 디바이스
- CGW 디바이스에 Public 인터넷 라우팅 가능 IP 주소 사용
- NAT 디바이스 뒤에 있는 경우 NAT 디바이스의 Public IP 주소 사용
Direct Connect
- AWS 글로벌 서비스로 원격 네트워크에서 VPC 로의 전용 프라이빗 연결 제공한다.
- DX 와 AWS Direct Connect Location 간에 전용 연결을 설정해야 한다.
- AWS Direct Connect Location 은 AWS 의 전용선 서비스다. 전용선을 직접 구축하지 않고 AWS 클라우드 인프라 앞단에 3rd party IDC 사업자와 계약을 통해 3rd party IDC 에 Direct Connect Location 장비를 위치하여 제공한다.
- Direct Connect Location 에 물리적으로 연결하게 되면 논리적으로 BGP Peering 을 통해 on-prem 과 AWS 간에 Private 한 전용선이 생긴다.
- 즉, Direct Connect Location 에서 AWS 의 라우터와 사용자의 라우터를 연결하는 것
- VPC 에 VPG 를 설정해야 함
- 동일한 연결에서 퍼블릭 리소스 및 프라이빗 리소스에 액세스
물리 구성
On-Premises DC DX Location (3rd party IDC)
┌──────────────────┐ ┌───────────────────────────────────┐
│ │ │ ┌───────────┐ ┌─────────────┐ │
│ Customer Router │ │ │ Customer │ │ AWS Cage │ │
│ (CGW) │──────┼─▶│ Cage │──▶│ DX Router │ │
│ │ │ │ Router │ │ │ │
└──────────────────┘ │ └───────────┘ └──────┬──────┘ │
│ Cross-Connect │ │
└─────────────────────────┼─────────┘
│
BGP Peering │
▼
┌─────────────────────┐
│ AWS Region │
└─────────────────────┘
- 고객은 DX Location 의 자기 Cage 또는 파트너 Cage 까지 회선을 끌어온다
- Cross-Connect = DX Location 건물 안에서 고객 라우터 포트와 AWS 라우터 포트를 광케이블로 물리 연결하는 작업
- 물리 연결 위에 BGP Peering 을 맺어야 비로소 논리적인 경로가 생긴다
- 연결 방식
- Dedicated Connection: 물리 포트를 단독으로 사용, 1/10/100 Gbps
- Hosted Connection: 파트너가 보유한 포트를 분할받아 사용, 50 Mbps ~ 10 Gbps
논리 구성, Virtual Interface (VIF)
하나의 물리 연결 위에 용도별 VIF 를 올려 퍼블릭 리소스와 프라이빗 리소스에 동시에 접근한다.
DX Connection (BGP Peering)
│
┌────────────────────────┼────────────────────────┐
│ │ │
Private VIF Transit VIF Public VIF
│ │ │
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌──────────────────┐
│ DXGW │ │ DXGW │ │ AWS Public │
└────┬────┘ └────┬────┘ │ Services │
│ │ │ (S3, DynamoDB, │
▼ ▼ │ Public IP) │
┌─────────┐ ┌─────────┐ └──────────────────┘
│ VGW │ │ TGW │
└────┬────┘ └────┬────┘
│ │
▼ ▼
┌─────────┐ ┌─────────┐
│ VPC │ │ VPC × N │
└─────────┘ └─────────┘
- Private VIF: 프라이빗 IP 로 VPC 에 접근한다. VGW 에 직접 연결하거나 DXGW 를 거친다
- Transit VIF: DXGW 를 거쳐 TGW 에 연결해 다수의 VPC 에 접근한다
- Public VIF: 퍼블릭 IP 를 사용하는 AWS 공용 서비스에 접근한다. DXGW 를 사용할 수 없다
Direct Connect Gateway
- 여러 다른 Region(동일 계정)의 하나 이상의 VPC 에 Direct Connect 를 설정하기 위해 사용한다.
- VPC -> TGW -> DXGW -> Direct Connect Location -> On-prem Router 로 연결된다.
Transit Gateway
- 기본적으로 VPC 는 서로 연결되어 있지 않다. 이런 VPC 들을 연결할 때 VPC Peering 을 사용할 수도 있지만 1:1 관계의 복잡성 때문에 3개 이상 VPC 를 연결하려한다면 Transit Gateway 를 고려할 수 있다. 전 세계 여러 AWS Region 의 여러 VPC 간 네트워크 연결을 중앙에서 연결하고 관리해준다.
- Regional Resource 으로 기본적으로 다른 Region 에 위치한 VPC 끼리는 연결되지 않는다. Region 간 Inter-Region Peering 을 통해 다른 Region 에 위치한 VPC 끼리 연결할 수도 있다.
- Resource Access Manager(RAM) 를 사용하여 계정 간 공유
- 라우트 테이블: 어떤 VPC 가 다른 VPC 와 통신할 수 있는지 제한
- Direct Connect GW, VPN 연결과 함께 작동
- IP Multicast 지원 (다른 AWS 서비스에서는 지원되지 않음)
Network Firewall
- L3 에서 L7 까지 전체 VPC 보호
- e.g. 직원들이 Amazon Workspaces 가상 데스크톱을 사용하여 악성으로 알려진 특정 웹사이트를 방문하는 것을 방지
AWS Client VPN
- 관리형 클라이언트 기반 VPN 서비스
- AWS 리소스 및 온프레미스 네트워크의 리소스에 안전하게 액세스
- OpenVPN 기반 VPN 클라이언트를 통해 어느 위치에서나 리소스에 액세스 가능
- 전체 데이터 센터가 아닌 개별 랩톱을 AWS에 연결