따라하며 배우는 AWS 네트워크 입문

[따라하며 배우는 AWS 네트워크 입문] 04 인터넷 연결

bbangduck 2022. 2. 5. 09:07

1.1 AWS의 인터넷 연결 소개

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

1)인터넷 게이트웨이

외부 인터넷과 연결을 해주는 장비로 1.1.3항에서 소개하는 3가지 방안이 최종적으로 인터넷 게이트웨이를 통하여 통신하게 됩니다.

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

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

3) 공인 IP

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

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

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

 

1.1.2 NAT 동작

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

 

//그림 

1. PC1과 PC2는 프라이빗 IP를 가지고 있습니다. 외부 웹서버를 연결 시 출발지 IP는 자신의 프라이빗 IP로 지정되어 IP공유기로 향합니다.

2. IP 공유기는 출발지 IP를 인터넷이 가능하도록 IP공유기 자신에게 할당된 퍼블릭 IP를 출발지 IP로 변환하여 웹서버로 연결을 합니다. 

 

이처럼 IP를 변환하는 것을 NAT라고 부르며, IP와 포트 번호를 동시에 변화하는 것을 PAT라고 부릅니다.

 

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 인터넷 게이트웨이 소개

인터넷 게이트웨이는 확장성과 가용성이 있는 VPC 구성 요소로 VPC와 인터넷 간에 통신할 수 있게 해줍니다. 인터넷 게이트웨이는 퍼블릭 IPv4 주소가 할당된 인스턴스에 대해 1:1 IPv4 주소 변환을 수행합니다. 참고로 인터넷 게이트웨이는 IPv4 및 IPv6 트래픽을 지원합니다.

 

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

인터넷 게이트웨이는 퍼블릭 IP 혹은 탄력적 IP에 대해서 1:1 IP NAT를 수행합니다. 예를 들면 내부 인스턴스에 퍼블릭 IP 혹은 탄력적 IP가 연결되어 있으면, 외부 접속 시 프라이빗 IP를 퍼블릭 IP 혹은 탄력적 IP로 변환을 하게 됩니다. 요청 이후 되돌아오는 트래픽에서도 목적지 IP를 퍼블릭 IP 혹은 탄력적 IP에서 프라이빗 IP로 NAT를 수행합니다.

 

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

- 하나의 VPC에는 한 개의 인터넷 게이트웨이만 사용할 수 있습니다. VPC와 인터넷 게이트웨이의 최대 할당량은 동일하게 적용됩니다.

- 리전당 VPC(인터넷 게이트웨이도 동일)의 기본 할당량은 5개이며, 그 이상 필요 시 AWS 케이스 오픈을 통해 요청하며 리전 당 최대 100개까지 증가할 수 있습니다.

 

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

 

1.3.1 NAT 디바이스 소개

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

 

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

소규모의 트래픽만 발생하고 서비스 중요도가 낮은 경우 저렴한 비용의 NAT 인스턴스로 구성을 권장합니다. 그 이외의 경우에는 더 나은 가용성과 향상된 대역폭을 제공하면서도 관리 작업은 간소화하는 관리형 NAT 서비스인 NAT 게이트웨이 사용을 권장합니다.

 

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

 

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

[참고] NAT 인스턴스와 NAT 게이트웨이의 외부 접속 동작은 유사하여 NAT 인스턴스를 기준으로 하여 설명합니다.

 

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

 

다수의 인스턴스가 외부 인터넷으로 접속 시 NAT 인스턴스에 연결된 탄력적 IP를 사용합니다. 결과적으로 다수의 인스턴스의 출발지 IP가 1개의 탄력적 IP를 공유하여 사용하기 때문에 포트 번호 정보를 기준으로 하여 내부 인스턴스의 트래픽을 구별할 수 있습니다. 이러한 동작을 PAT(Post Address Translation)라고 합니다.

 

1.3.4 NAT 게이트웨이 제약 사항

-NAT 게이트웨이는 5Gbps의 대역폭을 지원하며, 최대 45Gbps까지 자동 확장합니다.

-NAT 게이트웨이는 단일 대상(예: 외부 웹서버 1대의 IP) 에 대해 분당 최대 55,000 개의 동시 연결을 지원할 수 있습니다.

-NAT 게이트웨이 가용 영역당 기본 할당량은 5개이며, 그 이상 필요할 경우 AWS 케이스 오픈을 통해 증가 요청이 가능합니다.

 

1.4 Proxy 인스턴스

 

1.4.1 Proxy 인스턴스 소개

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

 

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

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