Home [AWS]인터넷 연결
Post
Cancel

[AWS]인터넷 연결

본 학습은 따라하며 배우는 AWS 네트워크 입문 서적을 통해 진행했습니다.

소개

AWS VPC 내부에서 외부 인터넷으로 연결을 위한 방법(AWS 내부 -> 외부)

AWS에서 인터넷 연결 정의

인터넷 연결을 위한 4가지 조건

인터넷 게이트웨이

외부 인터넷과 연결해주는 장ㅇ비

네트워크 라우팅 테이블 정보

일종의 목적지를 가기 위한 지도 정보

  • 모든 네트워크 대역(0.0.0.0/0) 통신은 인터넷 게이트웨이로 저달하기 위해 경로를 지정

공인 IP

일종의 집 주소와 같이 전 세계에서 유일한 주소의 개념

  • AWS 공인 IP는 퍼블릭 IP나 탄력적 IP가 존재
  • 현재 IPv4 주소 개수가 부족하기 때문에 프라이빗 IP를 가진 대상이 인터넷을 사용하기 위해서 공인 IP로 변환(NAT) 요구

보안 그룹과 네트워크 ACL

보안 그룹과 네트워크 ACL에 의해서 외부 네트워크와 통신

NAT 동작

보통 가정집의 경우, 내부의 단말(PC, 스마트폰 등)은 프라이빗 IP를 보유하므로, 외부 인터넷 사용 시 IP 공유기의 NAT를 통해서 인터넷 연결

  • 프라이빗 디바이스에서 외부 IP로 통신 과정
    1. 출발지 IP는 자신의 프라이빗 IP로 지정되어 IP 공유기로 전송
    2. IP 공유기는 출발지 IP(프라이빗 IP)를 인터넷이 가능하도록 IP 공유기 자신에게 할당된 퍼블릭 IP를 출발지 IP로 변환
    3. 웹 서버로 전송
  • NAT: IP를 변환하는 것
  • PAT: IP와 포트를 동시에 변경
특징인터넷 게이트웨이NAT 디바이스Proxy 인스턴스
동작Layer 3Layer 4Layer 7
주소 변환프라이빗 IP를 퍼블릭IP 혹은 탄력적 IP로 1:1 주소변환IP주소와 포트 번호 변환IP주소와 포트 번호 변환(TCP 신규 연결)
특징1개의 프라이빗 IP마다 1개의 공인 IP 매칭여러개의 프라이빗 IP가 1개의 공인 IP 사용어플리케이션 수준 제어 가능

인터넷 게이트웨이

확장성과 가용성이 있는 VPC 구성 요소로 VPC와 인터넷 간에 통신을 지원

  • 퍼블릭 IPv4 주소가 할당된 인스턴스에 대해 1:1 IPv4 주소 변환을 수행
  • IPv4 및 IPv6 트래픽 지원

인터넷 게이트웨이를 통한 외부 접속

퍼블릭 IP 혹은 탄력적 IP에 대해서 1:1 IP NAT를 수행

  1. 내부 인스턴스(10.0.0.10)에서 외부 웹 서버(60.1.1.1)로 HTTP 접속을 시도
    • 출발지 IP = 10.0.0.10
  2. 인터넷 게이트웨이는 출발지 IP를 확인하고 자신이 가지고 있는 NAT 정보에 의해서 출발지 iP를 50.1.1.1로 변경하는 NAT 동작 수행
  3. 외부 웹 서버(60.1.1.1)에서 요청을 처리하고 응답 트래픽 전송
    • 되돌아 오는 트래픽이므로 출발지 IP와 목적지 IP에 대해 서로 Swap
  4. 인터넷 게이트웨이는 다시 한 번 NAT 정보에 의해서 목적지 IP를 50.1.1.1에서 10.0.0.10으로 변경
  5. 최종적으로 VPC 내부로 전달하여 내부 인스턴스(10.0.0.10)에 도달

제약 사항

  • 하나의 VPC에는 한 개의 인터넷 게이트웨이만 사용 가능
  • VPC와 인터넷 게이트웨이의 최대 할당량은 동일하게 적용
  • 리전 당 VPC(인터넷 게이트웨이도 동일)의 기본 할당량은 5개이며, 그 이상 필요 시 AWS 케이스 오픈을 통해 요청하여 리전당 최대 100개까지 증가 가능

NAT 디바이스(NAT 인스턴스 & NAT 게이트웨이)

프라이빗 서브넷에 배치된 인스턴스에 대해 인터넷 또는 기타 AWS 퍼블릭 서비스에 연결을 지원

  • NAT 인스턴스와 NAT 게이트웨이를 통칭
  • 인터넷 게이트웨이와는 다르게 외부 인터넷에서 내부 AWS 구간으로 직접 통신은 불가능

NAT라는 용어를 일반적인 IT 용례에 따라 사용하지만, ㅇ실제로 NAT 디바이스는 IP 주소와 포트 번호 변환 모두 수행

NAT 게이트웨이와 NAT 인스턴스

NAT 게이트웨이와 인스턴스 비교

NAT 게이트웨이

  • AWS에서 관리하며, 유지 관리 작업을 수행할 필요가 없음
  • 가용 영역에 각기 NAT 게이트웨이를 만들어 고가용성을 제공
  • 최대 45Gbps까지 확장 가능
  • 사용하는 NAT 게이트웨이 수, 사용 기간, NAT 게이트웨이를 통해 보내는 데이터의 양에 따라 요금이 청구
  • 균일하게 제공되므로 유형 또는 크기를 결정할 필요가 없음
  • 생성할 때 NAT 게이트웨이와 연결할 탄력적 IP 주소를 선택하며, 할당된 탄력적 IP주소는 변경 불가
  • 게이트웨이를 만들 때 서브넷의 IP 주소 범위에서 자동으로 선택
  • 프라이빗 IP주소는 게이트웨이를 만들 때 서브넷의 IP 주소 범위에서 자동으로 선택
  • 보안 그룹: 보안그룹을 NAT 게이트웨이와 연결 할 수 없음
  • 플로우 로그를 통해 트래픽 캡처
  • NAT 게이트웨이로 접속(SSH 등)을 지원하지 않음 NAT 인스턴스
  • 사용자가 직접 유지 관리(인스턴스에 소프트웨어 업데이트 또는 운영 체제 패치 설치 등)
  • 직접 별도의 스크립트를 사용하여 인스턴스 간의 장애 조치를 관리
  • 인스턴스 유형에 따른 대역폭 차이
  • 사용하는 NAT 인스턴스 수, 사용 기간, 인스턴스 유형과 크기에 따라 요금이 청구
  • 예상 워크로드에 따라 적합한 인스턴스 유형과 크기를 선택
  • 탄력적 IP 주소 또는 퍼블릭 IP 주소를 NAT 인스턴스와 함께 사용하며, 새 탄력적 IP 주소를 인스턴스와 연결하여 언제든지 퍼블릭 IP 주소로 변경 가능
  • 인스턴스를 시작할 때 서브넷의 IP 주소 범위에서 특정 프라이빗 IP 주소를 할당
  • 보안 그룹을 NAT 인스턴스와 연결하여 인바운드 및 아웃바운드 트래픽을 제어
  • 플로우 로그를 사용하여 트래픽 캡처
  • NAT 인스턴스로 접속(SSH 등)하여 SSH 접속 서버로 사용 가능

NAT 인스턴스를 통한 외부 접속

프라이빗 서브넷에 연결된 내부 인스턴스에서 외부 인터넷과 통신 시

  1. 퍼블릭 서브넷의 NAT 인스턴스로 트래픽 전송
  2. NAT 인스턴스는 IP masquerading 기능을 통하여 내부 인스턴스의 IP와 포트를 NAT 인스턴스의 IP와 포트로 변환
  3. NAT 인스턴스는 인터넷 게이트웨이로 트래픽 전송
  4. 인터넷 게이트웨이는 NAT 인스턴스의 프라이빗 IP를 미리 맵핑 된 탄력적 IP로 1:1 IP NAT 하여 외부 인터넷으로 전송

NAT 인스턴스를 통한 외부 접속 시 트래픽 흐름에 따른 동작

다수의 내부 인스턴스가 외부 접속 시

제약사항

  • NAT 게이트웨이는 5Gbps의 대역폭을 지원하며, 최대 45Gbps까지 자동 확장
  • NAT 게이트웨이는 단일 대상(외부 웹 서버 1대의 IP 등)에 대해 분당 최대 55,000개의 동시 연결을 지원
  • NAT 게이트웨이 가용 영역당 기본 할당량은 5개이며, 그 이상 필요할 경우 AWS 케이스 오픈을 통해 증가 요청 가능

Proxy 인스턴스

Proxy 인스턴스를 통한 외부 접속

  1. 프라이빗 서브넷 내부의 인스턴스는 HTTP 통신을 위해서 목적지 IP는 Proxy 인스턴스로 이동
  2. 외부 구간과 통신을 하고 결과를 다시 내부 인스턴스로 전송

Proxy 인스턴스를 통한 외부 통신

This post is licensed under CC BY 4.0 by the author.