CS/aws 네트워크

[AWS 네트워크 인터넷 연결] AWS의 인터넷 연결, 인터넷 게이트웨이, NAT 디바이스, Proxy 인스턴스

JWonK 2023. 8. 10. 18:06
728x90
반응형

01. AWS의 인터넷 연결


 

1.1 AWS의 인터넷 연결 소개

AWS VPC 내부에서 외부 인터넷으로 연결을 위한 방법을 소개한다. (통신방향 : AWS 내부 → 외부)

 

AWS에서 인터넷 연결 정의

 

 

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

 

1) 인터넷 게이트웨이

: 외부 인터넷과 연결을 해주는 장비로 뒤에서 설명하는 3가지 방안(인터넷 게이트웨이, NAT 디바이스, Proxy 인스턴스)이 최종적으로 인터넷 게이트웨이를 통하여 통신한다.

 

2) 네트워크 라우팅 테이블 정보 (외부와 네트워크 통신을 위한)

: 일종의 목적지를 가기 위한 지도 정보로, 모든 네트워크 대역(0.0.0.0/0) 통신은 인터넷 게이트웨이로 전달하기 위해 경로를 지정한다.

 

3) 공인 IP

: 일종의 집 주소와 같이 전 세계에서 유일한 주소의 개념이다. AWS에 사용 가능한 공인 IP는 퍼블릭 IP나 탄력적 IP(Elastic IP)가 있다. 현재 IPv4 주소 개수가 부족하기 때문에 프라이빗 IP를 가진 대상이 인터넷 사용을 위해서 공인 IP로 변환(NAT : Network Address Translation)이 필요하다.

 

4) 보안 그룹과 네트워크 ACL

: 보안 그룹과 네트워크 ACL에 의해서 외부 네트워크와 통신이 허용되어야 한다.

 

 

 

 

 

 

1.1.2 NAT 동작

보통 가정집의 경우에 내부의 단말(PC, 스마트폰 등)은 프라이빗 IP를 가지고 있다. 내부의 단말들이 외부 인터넷 사용 시 IP 공유기의 NAT를 통하여 인터넷을 연결하는 과정이다.

 

NAT 동작 도식화

 

  1. PC 1[192.168.1.1)과 PC 2[192.168.1.2]는 프라이빗 IP를 가지고 있다. 외부 웹서버[60.1.1.1]를 연결 시 출발지 IP는 자신의 프라이빗 IP로 지정되어 IP 공유기로 향한다.
  2. IP 공유지는 출발지 IP(프라이빗 IP)를 인터넷이 가능하도록 IP 공유기 자신에게 할당된 퍼블릭 IP를 출발지 IP로 변환하여 웹서버로 연결을 한다.

 

이처럼 IP를 변환하는 것을 NAT라고 부르며, IP와 포트 번호를 동시에 변화하는 것을 PAT[Port Address Translation]라고 부른다.

 

 

 

 

 

 

 

1.1.3 인터넷 연결을 위한 3가지 방안 비교

 

특정 인터넷 게이트웨이 NAT 디바이스 Proxy 인스턴스
동작 Layer3 계층 동작 Layer4 계층 동작 Layer7 계층 동작
주소 변환 프라이빗 IP를 퍼블릭 IP 혹은 탄력적 IP로 1:1 주소 변환 IP 주소와 포트 번호 변환 IP 주소와 포트 번호 변환 (TCP 신규 연결)
특징 1개의 프라이빗 IP 마다 1개의 공인
IP 매칭
여러 개의 프라이빗 IP가
1개의 공인 IP 사용 가능
어플리케이션 수준 제어(통제) 가능

 

인터넷 연결 방안 구성

 

 

 

 

1.2 인터넷 게이트웨이


1.2.1 인터넷 게이트웨이 [Internet Gateway] 소개

  • 인터넷 게이트웨이는 확장성과 가용성이 있는 VPC 구성 요소로 VPC와 인터넷 간에 통신할 수 있게 해준다.
  • 인터넷 게이트웨이는 퍼블릭 IPv4 주소가 할당된 인스턴스에 대해 1:1 IPv4 주소 변환을 수행한다.

 

 

 

 

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

  • 인터넷 게이트웨이는 퍼블릭 IP 혹은 탄력적 IP에 대해서 1:1 IP NAT를 수행한다.
  • 예를 들면 내부 인스턴스에 퍼블릭 IP 혹은 탄력적 IP가 연결되어 있으면, 외부 접속 시 프라이빗 IP를 퍼블릭 IP 혹은 탄력적 IP로 변환을 하게 된다.
  • 요청 이후 되돌아오는 트래픽에서도 목적지 IP를 퍼블릭 IP 혹은 탄력적 IP에서 프라이빗 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는 뒤바뀌게 된다.
  4. 인터넷 게이트웨이는 다시 한 번 NAT 정보에 의해서 목적지 IP를 50.1.1.1에서 10.0.0.10으로 변경하고, VPC 내부로 전달하여 최종적으로 내부 인스턴스(10.0.0.10)로 도달하게 된다.

 

 

 

 

1.2.3 인터넷 게이트웨이 제약 사항

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

 

 

 

 

 

 

 

 

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


 

1.3.1 NAT 디바이스 소개

  • NAT 인스턴스 & NAT 게이트웨이를 통칭하여 NAT 디바이스라고 말한다.
  • 프라이빗 서비넷의 배치된 인스턴스는 공인 IP(퍼블릭 혹은 탄력적 IP)를 연결할 수 없어서 직접 인터넷 연결이 불가능하며, 이때 NAT 디바이스를 사용하여 프라이빗 서브넷에 배치된 인스턴스가 인터넷 또는 기타 AWS 퍼블릭 서비스(S3 etc)에 연결할 수 있다.
  • 기본적으로는 내부에서 외부 인터넷으로 통신만 가능하며, 인터넷 게이트웨이와는 다르게 외부 인터넷에서 내부 AWS 구간으로 직접 통신은 불가능하다.

 

NAT 디바이스

 

 

 

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

 

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

 

 

 

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

※ NAT 인스턴스와 NAT 게이트웨이의 외부 접속 동작은 유사하여 NAT 인스턴스를 기준으로 설명

 

  • 프라이빗 서브넷에 연결된 내부 인스턴스에서 외부 인터넷과 통신 시 퍼블릭 서브넷의 NAT 인스턴스로 트래픽 전송한다.
  • NAT 인스턴스는 IP masquerading기능을 통하여 내부 인스턴스의 IP와 포트를 NAT 인스턴스의 IP와 포트로 변환
  • 변환된 후 NAT 인스턴스는 인터넷 게이트웨이로 트래픽 전송
  • 인터넷 게이트웨이는 NAT 인스턴스의 프라이빗 IP를 미리 매핑 된 탄력적 IP로 1:1 NAT 하여 외부 인터넷으로 전송
  • 결과적으로 IP 변환이 두 번 이루어진다.

 

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

 

  1. 내부 인스턴스(10.40.2.101)에서 외부 웹서버(60.1.1.1)로 HTTP 접속 시도한다. '프라이빗 서브넷 라우팅 테이블'에 따라서 NAT 인스턴스로 트래픽을 보내게 된다.
  2. NAT 인스턴스는 IP masquerading 기능을 통해서 출발지 IP(10.40.2.101 -> 10.40.1.100)와 포트 번호를 변환하고 정보를 기록한다. 이후 '퍼블릭 서브넷 라우팅 테이블'에 따라서 인터넷 게이트웨이로 트래픽을 보내게 된다.
  3. 인터넷 게이트웨이는 프라이빗 IP와 탄력적 IP 간의 IP 변환(NAT)을 수행한다. 출발지 IP를 10.40.1.100에서 a.b.c.d로 변환하고 외부 인터넷으로 트래픽을 보낸다.
  4. 외부 웹서버(60.1.1.1)에서 요청을 처리하고 응답 트래픽을 보낸다.
  5. 인터넷 게이트웨이에 인입된 트래픽은 목적지 IP를 a.b.c.d에서 10.40.1.100으로 IP 변환(NAT)하여 VPC 내부로 보낸다.
  6. NAT 인스턴스는 '변환 정보'에 따라서 출발지 IP(10.40.1.100 -> 10.40.2.101)와 포트 번호를 변환하여 프라이빗 서브넷으로 보낸다
  7. 최종적으로 응답 트래픽이 내부 인스턴스(10.40.2.101)로 도달하게 된다.

 

 

 

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

 

  1. 2대의 내부 인스턴스에서 외부 웹서버(60.1.1.1)로 HTTP 접속 시 첫 번째 인스턴스 트래픽은 출발지 IP 10.40.2.101과 출발지 포트 40001로, 두 번째 인스턴스 트래픽은 출발지 IP 10.40.2.102와 출발지 포트 50001로 전달하는 상황이다.
  2. NAT 인스턴스는 두 트래픽의 출발지 IP를 공통으로 10.40.1.100으로 변환한다. 출발지 포트 번호는 서로 다르기 때문에 상호 간에 트래픽 구별이 가능하다.
  3. 인터넷 게이트웨이는 IP 변환에만 관여하고 포트 변환에는 관여하지 않는다. 즉, 출발지 IP 10.40.1.100을 탄력적 IP(a.b.c.d)로 변환하여 외부 인터넷으로 보내게 된다.

 

 

 

 

 

1.4 Proxy 인스턴스


1.4.1 Proxy 인스턴스 소개

  • Proxy는 일종의 대리자로 클라이언트와 서버 중간에 통신을 대신 처리해주는 역할을 한다. 
  • Proxy가 클라이언트의 통신을 대신 처리하기 때문에 서버의 입장에서는 마치 Proxy와 통신을 하는 것으로 보인다.
  • 클라이언트는 기존 애플리케이션 통신을 Proxy로 보내기 위한 설정이 필요하다. (HTTP 통신을 Proxy로 보내는 설정)

 

 

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

  • 프라이빗 서브넷 내부의 인스턴스는 HTTP 통신을 위해서 목적지 IP는 Proxy 인스턴스로 향하게 된다. 
  • 이후 Proxy 인스턴스는 대신 외부 구간과 통신을 하고 결과를 다시 내부 인스턴스로 보낸다.

 

 

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

 

  1. EC2 인스턴스에 HTTP(s) 경우 Proxy 인스턴스로 보낼 수 있게 아래와 같은 설정이 필요하다. EC2에서 외부 HTTP(s) 통신 시 목적지 IP는 Proxy 인스턴스로 보내게 된다.
  2. EC2 인스턴스에서 요청한 패킷을 Proxy 인스턴스가 대신하여 웹 서버와 연결을 만든다. 이때 출발지 IP는 Proxy 인스턴스의 IP이다. 프라이빗 IP 이지만 인터넷 게이트웨이에서 탄력적 IP로 변환된다. 그리고 목적지 IP는 해당 웹 서버의 DNS 질의 응답 값인 60.1.1.1로 보내게 된다.
  3. Proxy 인스턴스와 웹 서버 간은 새로운 TCP 연결을 만들기 때문에, 출발지 포트 번호는 임시 포트 중에 선택하고 목적지 포트는 웹서버이므로 80을 선택하게 된다.
  4. HTTP 헤더는 EC2 인스턴스가 요청한 내용을 포함하여 전달한다.
728x90
반응형