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 - 네트워크 브로드캐스트 주소
  • 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 S3DynamoDB 에 안정적인 연결을 제공
  • 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 를 설정해야 함
  • 동일한 연결에서 퍼블릭 리소스 및 프라이빗 리소스에 액세스

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에 연결

References