Room9

[Cloud Network] NAT Device 본문

Cloud/Amazon Web Service

[Cloud Network] NAT Device

Room9_ 2023. 5. 30. 09:03

Overview

AWS의 VPC 서비스 중 NAT Gateway에 대해 알아보겠습니다.AWS의 리소스들이 외부 인터넷과 연결되기 위한 4가지 조건이 있습니다. 

 

1. 인터넷 게이트웨이

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

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

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

3. 공인 IP

    집 주소와 같이 전 세계에서 유일한 주소의 개념입니다. AWS에 사용 가능한 공인 IP는 퍼블릭 IP나 탄력적 IP 가 있습니다.

    현재 IPv4 주소 개수가 부족하기 때문에 프라이빗 IP를 가진 대상이 인터넷 사용을 위해서 공인 IP로 변환(NAT)이 필요합니다.

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

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


Detail

  • NAT 동작
  • 인터넷 연결을 위한 방안
  • Internet Gateway
  • NAT Device

NAT 동작

우리가 일반적으로 집에서 컴퓨터를 사용하는 경우에는 단말들이 프라이빗 IP를 가지고 있습니다. 이러한 단말들은 외부의 인터넷을 이용하게되면 공유기의 NAT를 통하여 인터넷을 연결하게 되는데 이 과정을 살펴보겠습니다.

PC와 Mobile 기기는 프라이빗 IP를 가지고 있습니다. 외부 서버를 연결 시 출발지는 본인(PC 또는 Mobile)의 사설 IP 지정되어 공유기로 보내집니다.

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

이처럼 IP를 변환하는 것을 NAT(Network Address Trasnlation)이라고 부르며, IP와 포트번호를 동시에 변환하는것을 PAT(Port Address Traslation) 이라고 합니다.


인터넷 연결을 위한 방안

특징 인터넷 게이트웨이 NAT 디바이스
동작 Layer 3 동작 Layer 4 동작
주소 변환 프라이빗 IP를 퍼블릭 IP 혹은 EIP로 1:1 주소 변환 IP 주소와 포트 번호 변환
특징 1개의 프라이빗IP 마다 1개의 공인 IP 매칭 여러 개의 프라이빗 IP 가 1개의 공인 IP 매칭

따라하며 배우는 AWS 네트워크 입문, 인터넷게이트웨이 / NAT Device를 통한 외부 연결 발췌


Internet Gateway

인터넷 게이트웨이 소개

리소스에 퍼블릭 IPv4 주소가 있는 경우 인터넷 게이트웨이를 사용하면 퍼블릭 서브넷(예: EC2 인스턴스)의 리소스가 인터넷에 연결할 수 있습니다. 마찬가지로 인터넷의 리소스는 퍼블릭 IPv4 주소 또는 IPv6 주소를 사용하여 서브넷의 리소스에 대한 연결을 시작할 수 있습니다.

예를 들어 인터넷 게이트웨이를 사용하면 로컬 컴퓨터로 AWS의 EC2 인스턴스에 연결할 수 있습니다.

인터넷 게이트웨이는 VPC 라우팅 테이블에서 인터넷 라우팅 가능 트래픽에 대한 대상을 제공합니다. IPv4 통신의 경우 인터넷 게이트웨이는 Network Address Translation(NAT)도 수행합니다.

 

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

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

따라하며 배우는 AWS 네트워크 입문, 인터넷 게이트웨이를 통한 외부 접속 과정 발췌

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.1)로 도달하게 됩니다.

 

탄력적 IP 또는 공인 IP가 인터넷 게이트웨이를 통해 바로 나가는것 처럼 보이지만 실은 인터넷게이트웨에서 NAT 작업을 수행하여 나가고 들어온다. 또한 Internet Gateway로 트래픽을 보낼때는 출발지를 EIP가 아닌 내부 Private IP를 출발지로 설정하고 보낸다.(아래에서 설명하는 1:1 연결로 인 함)

퍼블릭 IP와 탄력적IP(EIP)는 1:1로 프라이빗 IP와 연결되기 때문에 해당 IP를 독점적으로 사용하는 것과 유사합니다. 그래서 외부 인터넷에서 퍼블릭 IP와 탄력적 IP를 통해 내부 VPC로 접근이 가능합니다.


NAT Device

NAT 디바이스 소개

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

따라하며 배우는 AWS 네트워크 입문, NAT Gateway 와 NAT Instance 발췌

NAT라는 용어를 일반적인 IT 용례에 따라 사용하지만, 실제로 NAT 디바이스는 IP 주소와 포트 번호 변환(PAT)을 모두 동작합니다.

 

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

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

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

 

 

NAT 게이트웨이 및 NAT 인스턴스 비교 - Amazon Virtual Private Cloud

NAT 게이트웨이 및 NAT 인스턴스 비교 NAT 인스턴스와 NAT 게이트웨이의 차이점을 세부적으로 요약하면 다음과 같습니다. NAT 게이트웨이는 더 나은 가용성과 대역폭을 제공하고 관리에 소요되는 작

docs.aws.amazon.com

 

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

프라이빗 서브넷에 연결된 내부 인스턴스에서 외부 인터넷과 통신 시 퍼블릭 서브넷의 NAT 인스턴스로 트래픽을 전송합니다.

NAT 인스턴스는 IP masquerading 기능을 통하여 [내부 인스턴스의 IP 와 포트][NAT 인스턴스의 IP와 포트]로 변환됩니다. 변환된 후 NAT 인스턴스는 인터넷 게이트웨이로 트래픽을 전송합니다. 인터넷 게이트웨이는 NAT 인스턴스의 프라이빗 IP를 미리 맵핑 된 탄력적 IP로 1:1 IP NAT 하여 외부 인터넷으로 전송합니다. 결과적으로 IP 변환이 두번 이루어지게 되며 다음에서 동작 흐름을 확인해 봅니다.

따라하며 배우는 AWS 네트워크 입문, NAT 인스턴스를 통한 외부 접속 시 트래픽 흐름에 따른 동작 발췌

1. 내부 인스턴스(10.40.2.101)에서 외부 웹서버(60.1.1.1)로 HTTP 접속을 시도합니다. 프라이빗 서브넷 라우팅 테이블 에 따라서 NAT 인스턴스로 트래픽을 보내게 됩니다.

2. NAT 인스턴스는 IP masquerading 기능을 통해서 출발지 IP 와 포트번호를 변환하고 정보를 기록합니다. 이후 퍼블릭 서브넷 라우팅 테이블 에 따라서 인터넷 게이트웨이로 트래픽을 보내게 됩니다.

3. 인터넷 게이트웨이는 프라이빗 IP와 탄력적 IP 간의 IP 변환을 수행합니다. 출발지 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 변환 하여 VPC 내부로 보냅니다.

6. NAT 인스턴스는 변환 정보 에 따라서 출발지 IP와 포트 번호를 변환하여 프라이빗 서브넷으로 보냅니다.

7. 최종적으로 응답 트래픽이 내부 인스턴스(10.40.2.101)로 도달하게 됩니다.

 

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

 

따라하며 배우는 AWS 네트워크 입문, 다수의 내부 인스턴스가 외부 접속 시 발췌

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)로 변환하여 외부 인터넷으로 보내게 됩니다.

 

NAT 게이트웨이 제약사항

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

마치며

여러 고객사의 인프라를 구성하면서 막연하게 NAT Gateway 서비스만을 구매하여 사용하면서, NAT의 동작과 관련하여 깊게 확인 할 수 있었습니다. 또한 가격적인 부분에서 NAT Gateway와 NAT Instance에서 차이가 있으며, 단순한 구성에서는 Gateway를 구매하는 대신 Instance를 구성하여 비용적인 부분에서 이득을 취할 수 있습니다. 다만 AWS에서도 공식적으로는 NAT Instance 대신 Gateway 서비스를 이용하여 외부 통신을 구성하는 방식으로 가이드 하고있습니다. 해당 글에서 NAT Instance를 구성하는게 목표였지만, 그로인해 내부 NAT 동작을 명확하게 확인할수 있는 계기가 되었습니다. NAT Gateway의 구성중 SNAT , DNAT 등의 여러 구성을 추가로 진행해 볼 수 있을 듯합니다.

또한 Alibaba Cloud 상에서 동일하게 NAT Instance 구성을 진행하였습니다만, eni의 소스/대상 비활성화 하는 옵션 부재로 실제 트래픽을 인스턴스를 통해 전달해보진 못했습니다.


Ref

- 따라하며 배우는 AWS 네트워크 입문 - 김원일,서종호,CloudNet@

 

NAT 인스턴스 - Amazon Virtual Private Cloud

NAT 인스턴스 NAT AMI는 2020년 12월 31일에 표준 지원이 종료된 Amazon Linux 2018.03의 마지막 버전을 기반으로 구축되었습니다. 자세한 내용은 Amazon Linux AMI 지원 종료 블로그 게시물을 참조하세요. 이 AMI

docs.aws.amazon.com

 

Comments