NAT 게이트웨이 - Amazon Virtual Private Cloud

NAT 게이트웨이

NAT 게이트웨이는 NAT(네트워크 주소 변환) 서비스입니다. 프라이빗 서브넷의 인스턴스가 VPC 외부의 서비스에 연결할 수 있지만 외부 서비스에서 이러한 인스턴스와의 연결을 시작할 수 없도록 NAT 게이트웨이를 사용할 수 있습니다.

NAT 게이트웨이는 인스턴스의 소스 IPv4 주소를 NAT 게이트웨이의 프라이빗 IP 주소로 바꿉니다. 인스턴스에 응답 트래픽을 전송할 때 NAT 디바이스는 주소를 원래 소스 IPv4 주소로 다시 변환합니다.

NAT 게이트웨이를 만들 때 다음 연결 유형 중 하나를 지정합니다.

  • 퍼블릭 - (기본값) 프라이빗 서브넷의 인스턴스는 퍼블릭 NAT 게이트웨이를 통해 인터넷에 연결할 수 있지만 인터넷에서 원치 않는 인바운드 연결을 수신할 수 없습니다. 퍼블릭 서브넷에서 퍼블릭 NAT 게이트웨이를 생성하고 생성 시 탄력적 IP 주소를 NAT 게이트웨이와 연결해야 합니다. 트래픽을 NAT 게이트웨이에서 VPC용 인터넷 게이트웨이로 라우팅합니다. 또는 퍼블릭 NAT 게이트웨이를 사용하여 다른 VPC 또는 온프레미스 네트워크에 연결할 수 있습니다. 이 경우 NAT 게이트웨이에서 Transit Gateway 또는 가상 프라이빗 게이트웨이를 통해 트래픽을 라우팅합니다.

  • 프라이빗- 프라이빗 서브넷의 인스턴스는 프라이빗 NAT 게이트웨이를 통해 다른 VPC 또는 온프레미스 네트워크에 연결할 수 있습니다. 트래픽을 NAT 게이트웨이에서 Transit Gateway 또는 가상 프라이빗 게이트웨이를 통해 트래픽을 라우팅할 수 있습니다. 탄력적 IP 주소를 프라이빗 NAT 게이트웨이에 연결할 수 없습니다. 프라이빗 NAT 게이트웨이를 사용하여 VPC에 인터넷 게이트웨이를 연결할 수 있지만 프라이빗 NAT 게이트웨이에서 인터넷 게이트웨이로 트래픽을 라우팅하는 경우 인터넷 게이트웨이가 트래픽을 삭제합니다.

Pricing

NAT 게이트웨이를 프로비저닝하면 NAT 게이트웨이를 사용할 수 있는 시간당 요금 및 처리하는 데이터 기가바이트당 요금이 부과됩니다 자세한 내용은 Amazon VPC 요금을 참조하십시오.

다음 전략은 NAT 게이트웨이에 대한 데이터 전송 요금을 줄이는 데 도움이 될 수 있습니다.

  • AWS 리소스가 가용 영역에서 상당한 양의 트래픽을 보내거나 받는 경우 리소스가 NAT 게이트웨이와 동일한 가용 영역에 있는지 확인하거나 리소스와 동일한 가용 영역에 NAT 게이트웨이를 생성합니다.

  • NAT 게이트웨이를 통과하는 대부분의 트래픽이 인터페이스 엔드포인트 또는 게이트웨이 엔드포인트를 지원하는 AWS 서비스를 사용하는 경우 이러한 서비스에 대한 인터페이스 엔드포인트 또는 게이트웨이 엔드포인트를 만드는 것이 좋습니다. 잠재적인 비용 절감에 관한 자세한 내용은 AWS PrivateLink 요금을 참조하세요.

NAT 게이트웨이 기본 사항

각 NAT 게이트웨이는 특정 가용 영역에 생성되고 해당 영역에서 중복성을 통해 구현됩니다. 각 가용 영역에서 만들 수 있는 NAT 게이트웨이 개수에는 할당량이 있습니다. 자세한 내용은 Amazon VPC 할당량 단원을 참조하십시오.

여러 가용 영역에 리소스가 있고 NAT 게이트웨이 하나를 공유하는 경우, NAT 게이트웨이의 가용 영역이 다운되면 다른 가용 영역의 리소스도 인터넷에 액세스할 수 없게 됩니다. 가용 영역과 독립적인 아키텍처를 만들려면 각 가용 영역에 NAT 게이트웨이를 만들고 리소스가 동일한 가용 영역의 NAT 게이트웨이를 사용하도록 라우팅을 구성합니다.

NAT 게이트웨이에 적용되는 특성 및 규칙은 다음과 같습니다.

  • NAT 게이트웨이는 TCP, UDP, ICMP 등의 프로토콜을 지원합니다.

  • NAT 게이트웨이는 IPv6 트래픽을 지원하지 않으므로 아웃바운드 전용(외부 전용) 인터넷 게이트웨이를 사용해야 합니다. 자세한 내용은 외부 전용 인터넷 게이트웨이 단원을 참조하십시오.

  • NAT 게이트웨이는 5Gbps의 대역폭을 지원하며 최대 45Gbps까지 자동 확장합니다. 더 많은 대역폭이 필요한 경우 리소스를 여러 서브넷으로 분할하고 각 서브넷에 NAT 게이트웨이를 만들 수 있습니다.

  • NAT 게이트웨이는 각 고유 대상에 대해 최대 55,000개의 동시 연결을 지원할 수 있습니다. 단일 대상에 대해 초당 약 900개의 연결(분당 약 55,000개의 연결)을 만들 경우에도 이 제한이 적용됩니다. 대상 IP 주소, 대상 포트 또는 프로토콜(TCP/UDP/ICMP)이 변경되는 경우 55,000개의 연결을 추가로 만들 수 있습니다. 55,000개보다 더 많은 연결에서는 포트 할당 오류로 인해 연결 오류가 발생할 가능성이 증가합니다. NAT 게이트웨이에 대한 ErrorPortAllocation CloudWatch 지표를 통해 이러한 오류를 모니터링할 수 있습니다. 자세한 내용은 Amazon CloudWatch를 사용하여 NAT 게이트웨이 모니터링 단원을 참조하십시오.

  • 하나의 탄력적 IP 주소만 퍼블릭 NAT 게이트웨이에 연결할 수 있습니다. 연결된 후에는 NAT 게이트웨이에서 탄력적 IP 주소의 연결을 끊을 수 없습니다. NAT 게이트웨이에 다른 탄력적 IP 주소를 사용하려면 필요한 주소가 있는 새로운 NAT 게이트웨이를 만들고 라우팅 테이블을 업데이트한 다음, 더 이상 필요하지 않은 경우 기존 NAT 게이트웨이를 삭제해야 합니다.

  • 프라이빗 NAT 게이트웨이는 해당 게이트웨이가 구성된 서브넷에서 사용 가능한 프라이빗 IP 주소를 수신합니다. 이 프라이빗 IP 주소는 분리할 수 없으며 추가 프라이빗 IP 주소를 연결할 수도 없습니다.

  • 보안 그룹을 NAT 게이트웨이와 연결할 수 없습니다. 보안 그룹을 인스턴스에 연결하여 인바운드 및 아웃바운드 트래픽을 제어할 수 있습니다.

  • 네트워크 ACL을 사용하여 NAT 게이트웨이에 대해 서브넷에서 주고받는 트래픽을 제어할 수 있습니다. NAT 게이트웨이는 포트 1024 - 65535를 사용합니다. 자세한 내용은 네트워크 ACL 단원을 참조하십시오.

  • NAT 게이트웨이는 서브넷의 IP 주소 범위로부터 프라이빗 IP 주소가 자동으로 할당된 네트워크 인터페이스를 수신합니다. Amazon EC2 콘솔을 사용하여 NAT 게이트웨이에 대한 네트워크 인터페이스를 볼 수 있습니다. 자세한 내용은 네트워크 인터페이스에 대한 세부 정보 보기를 참조하십시오. 이 네트워크 인터페이스의 속성을 수정할 수 없습니다.

  • VPC와 연결된 ClassicLink 연결을 통해 NAT 게이트웨이에 액세스할 수 없습니다.

  • VPC 피어링 연결, Site-to-Site VPN 연결 또는 를 통해 NAT 게이트웨이로 트래픽을 라우팅할 수는 없습니다AWS Direct Connect 이 연결의 다른 쪽에 있는 리소스는 NAT 게이트웨이를 사용할 수 없습니다.

NAT 게이트웨이 사용 제어

기본적으로 IAM 사용자에게는 NAT 게이트웨이를 사용할 권한이 없습니다. 사용자에게 NAT 게이트웨이를 생성, 설명 및 삭제할 수 있는 권한을 부여하는 IAM 사용자 정책을 만들 수 있습니다. 자세한 내용은 Amazon EC2용 AWS ID 및 액세스 관리 단원을 참조하십시오.

NAT 게이트웨이 작업

Amazon VPC 콘솔을 사용하여 NAT 게이트웨이를 생성하고 관리할 수 있습니다. 또한 Amazon VPC 마법사를 사용하여 퍼블릭 서브넷, 프라이빗 서브넷 및 NAT 게이트웨이가 있는 VPC를 만들 수 있습니다. 자세한 내용은 퍼블릭 및 프라이빗 서브넷이 있는 VPC(NAT) 단원을 참조하십시오.

NAT 게이트웨이 만들기

NAT 게이트웨이를 만들려면 선택적 이름, 서브넷 및 선택적 연결 유형을 입력합니다. 퍼블릭 NAT 게이트웨이의 경우 사용 가능한 탄력적 IP 주소를 지정해야 합니다. 프라이빗 NAT 게이트웨이는 서브넷에서 무작위로 선택한 기본 프라이빗 IP 주소를 수신합니다. 기본 프라이빗 IP 주소를 분리하거나 보조 프라이빗 IP 주소를 추가할 수 없습니다.

NAT 게이트웨이를 만들려면

  1. https://console.aws.amazon.com/vpc/에서 Amazon VPC 콘솔을 엽니다.

  2. 탐색 창에서 [NAT Gateways]를 선택합니다.

  3. NAT 게이트웨이 생성을 선택하고 다음을 수행합니다.

    1. (선택 사항) NAT 게이트웨이의 이름을 지정합니다. 이렇게 하면 키가 Name이고 값이 사용자가 지정한 이름인 태그가 생성됩니다.

    2. NAT 게이트웨이를 생성할 서브넷을 선택합니다.

    3. [연결 유형(Connectivity type)]에서 [프라이빗(Private)]을 선택하여 프라이빗 NAT 게이트웨이를 생성하거나 [퍼블릭(Public)](기본값)을 클릭하여 퍼블릭 NAT 게이트웨이를 만듭니다.

    4. (퍼블릭 NAT 게이트웨이만) [탄력적 IP 할당 ID(Elastic IP Allocation ID)]의 경우, NAT 게이트웨이와 연결할 탄력적 IP 주소를 선택합니다.

    5. (선택 사항) 각 태그에 대해, 새 태그 추가를 선택하고 키 이름과 값을 입력합니다.

    6. NAT 게이트웨이 생성을 선택합니다.

  4. NAT 게이트웨이의 초기 상태는 Pending입니다. 상태가 Available(으)로 변경되면 NAT 게이트웨이가 사용 준비 상태가 됩니다. 프라이빗 서브넷의 경로 테이블에 NAT 게이트웨이 경로를 추가하고 NAT 게이트웨이의 경로 테이블에 경로를 추가합니다.

    NAT 게이트웨이의 상태가 Failed 상태로 바뀌면 생성 중에 오류가 발생한 것입니다. 자세한 내용은 NAT 게이트웨이 생성 실패 단원을 참조하십시오.

NAT 게이트웨이 태그 지정

NAT 게이트웨이에 태그를 지정하면 조직의 요구에 따라 이를 식별 또는 분류할 수 있습니다. 태그 사용에 대한 자세한 내용은 Linux 인스턴스용 Amazon EC2 사용 설명서Amazon EC2 리소스에 태깅을 참조하십시오.

NAT 게이트웨이는 비용 할당 태그를 지원합니다. 따라서 태그를 사용하여 AWS 청구서를 구성하고 고유한 원가 구조를 반영할 수도 있습니다. 자세한 내용은 AWS Billing and Cost Management 사용 설명서에서 비용 할당 태그 사용을 참조하세요. 태그를 사용한 비용 할당 보고서 설정에 대한 자세한 내용은 AWS 계정 결제 정보월간 비용 할당 보고서를 참조하세요.

NAT 게이트웨이 삭제

NAT 게이트웨이가 더 이상 필요하지 않으면 삭제할 수 있습니다. NAT 게이트웨이를 삭제하면 해당 항목은 한 시간 동안 Amazon VPC 콘솔에 표시된 후 자동으로 제거됩니다. 이 항목을 직접 제거할 수는 없습니다.

NAT 게이트웨이를 삭제하면 탄력적 IP 주소가 연결 해제되지만 계정에서 주소가 해제되지는 않습니다. NAT 게이트웨이를 삭제하면 NAT 게이트웨이 경로는 경로를 삭제하거나 업데이트할 때까지 blackhole 상태로 유지됩니다.

NAT 게이트웨이를 삭제하려면

  1. https://console.aws.amazon.com/vpc/에서 Amazon VPC 콘솔을 엽니다.

  2. 탐색 창에서 [NAT Gateways]를 선택합니다.

  3. NAT 게이트웨이에 대한 라디오 버튼을 선택한 후, 작업, NAT 게이트웨이 삭제를 선택합니다.

  4. 확인 메시지가 나타나면 delete를 입력한 다음 삭제를 선택합니다.

  5. 퍼블릭 NAT 게이트웨이와 연결된 탄력적 IP 주소가 더 이상 필요 없는 경우 해당 주소를 릴리스하는 것이 좋습니다. 자세한 내용은 탄력적 IP 주소 릴리스 단원을 참조하십시오.

NAT 게이트웨이 시나리오

다음은 퍼블릭 및 프라이빗 NAT 게이트웨이의 사용 사례입니다.

시나리오: 프라이빗 서브넷에서 인터넷 액세스

퍼블릭 NAT 게이트웨이를 사용하여 프라이빗 서브넷의 인스턴스가 아웃바운드 트래픽을 인터넷에 전송할 수 있지만 인터넷이 해당 인스턴스에 대한 연결을 설정할 수 없습니다.

다음은 이 사용 사례에 대한 아키텍처를 나타낸 다이어그램입니다. 가용 영역 A의 퍼블릭 서브넷에는 NAT 게이트웨이가 있습니다. 가용 영역 B의 프라이빗 서브넷에는 인스턴스가 포함되어 있습니다. 라우터는 프라이빗 서브넷의 인스턴스에서 NAT 게이트웨이로 인터넷 바인딩 트래픽을 보냅니다. NAT 게이트웨이는 NAT 게이트웨이의 탄력적 IP 주소를 소스 IP 주소로 사용하여 인터넷 게이트웨이로 트래픽을 보냅니다.


          퍼블릭 및 프라이빗 서브넷과 NAT 게이트웨이가 있는 VPC

다음은 가용 영역 A의 퍼블릭 서브넷과 연결된 라우팅 테이블입니다. 첫 번째 항목은 VPC의 로컬 라우팅에 대한 기본 항목입니다. 이 항목을 사용하면 VPC의 인스턴스가 서로 통신할 수 있습니다. 두 번째 항목에서는 다른 서브넷 트래픽을 모두 인터넷 게이트웨이로 전송합니다. 그러면 NAT 게이트웨이가 인터넷에 액세스할 수 있습니다.

대상 주소 대상
10.0.0.0/16 로컬
0.0.0.0/0 internet-gateway-id

다음은 가용 영역 B의 프라이빗 서브넷과 연결된 라우팅 테이블입니다. 첫 번째 항목은 VPC의 로컬 라우팅에 대한 기본 항목입니다. 이 항목을 사용하면 VPC의 인스턴스가 서로 통신할 수 있습니다. 두 번째 항목에서는 인터넷 바인딩 트래픽과 같은 다른 모든 서브넷 트래픽을 모두 NAT 게이트웨이로 전송합니다.

대상 주소 대상
10.0.0.0/16 로컬
0.0.0.0/0 nat-gateway-id

퍼블릭 NAT 게이트웨이 테스트

NAT 게이트웨이를 만들고 라우팅 테이블을 업데이트한 후에는 프라이빗 서브넷의 인스턴스에서 인터넷의 원격 주소를 ping하여 인터넷에 연결할 수 있는지 테스트할 수 있습니다. 이렇게 하는 방법의 예는 인터넷 연결 테스트 섹션을 참조하십시오.

인터넷에 연결할 수 있는 경우 인터넷 트래픽이 NAT 게이트웨이를 통해 라우팅되는지도 확인할 수 있습니다.

  • 프라이빗 서브넷의 인스턴스에서 전송되는 트래픽의 경로를 추적합니다. 이렇게 하려면 프라이빗 서브넷의 Linux 인스턴스에서 traceroute 명령을 실행합니다. 출력에서 홉 중 하나(일반적으로 첫 번째 홉)에 NAT 게이트웨이의 프라이빗 IP 주소가 보여야 합니다.

  • 프라이빗 서브넷의 인스턴스에서 소스 IP 주소에 연결할 때 이를 표시하는 타사 웹 사이트 또는 도구를 사용합니다. 소스 IP 주소는 NAT 게이트웨이의 탄력적 IP 주소여야 합니다.

이러한 테스트가 실패하는 경우 NAT 게이트웨이 문제 해결 섹션을 참조하세요.

인터넷 연결 테스트

다음 예제는 프라이빗 서브넷의 인스턴스가 인터넷에 연결할 수 있는지 테스트하는 방법을 보여 줍니다.

  1. 퍼블릭 서브넷에서 인스턴스를 시작합니다(이 인스턴스를 배스천 호스트로 사용). 자세한 내용은 서브넷으로 인스턴스 시작 단원을 참조하십시오. 시작 마법사에서 Amazon Linux AMI를 선택하고 인스턴스에 퍼블릭 IP 주소를 할당해야 합니다. 보안 그룹 규칙이 로컬 네트워크의 IP 주소 범위에서 전송되는 인바운드 SSH 트래픽을 허용하고, 프라이빗 서브넷의 IP 주소 범위로 전송되는 아웃바운드 SSH 트래픽을 허용하는지 확인합니다. 이 테스트에서는 인바운드 및 아웃바운드 SSH 트래픽 모두에 0.0.0.0/0을 사용할 수 있습니다.

  2. 프라이빗 서브넷에서 인스턴스를 시작합니다. 시작 마법사에서 Amazon Linux AMI를 선택해야 합니다. 인스턴스에 퍼블릭 IP 주소를 할당하지 마십시오. 보안 그룹 규칙이 퍼블릭 서브넷에서 시작한 인스턴스의 프라이빗 IP 주소에서 전송되는 인바운드 SSH 트래픽 및 모든 아웃바운드 ICMP 트래픽을 허용하는지 확인합니다. 퍼블릭 서브넷에서 인스턴스를 시작하는 데 사용한 것과 동일한 키 페어를 선택해야 합니다.

  3. 로컬 컴퓨터에서 SSH 에이전트 전달을 구성하고, 퍼블릭 서브넷의 접속 호스트에 연결합니다. 자세한 내용은 Linux 또는 macOS에 대한 SSH 에이전트 전달을 구성하려면 또는 Windows(PuTTY)에 대한 SSH 에이전트 전달을 구성하려면 단원을 참조하십시오.

  4. 접속 호스트에서 프라이빗 서브넷의 인스턴스에 연결한 다음, 프라이빗 서브넷의 인스턴스에서 인터넷 연결을 테스트합니다. 자세한 내용은 인터넷 연결을 테스트하려면 단원을 참조하십시오.

Linux 또는 macOS에 대한 SSH 에이전트 전달을 구성하려면

  1. 로컬 시스템에서 인증 에이전트에 프라이빗 키를 추가합니다.

    Linux의 경우 다음 명령을 사용합니다.

    ssh-add -c mykeypair.pem

    macOS의 경우 다음 명령을 사용합니다.

    ssh-add -K mykeypair.pem
  2. 다음 예제와 같이 -A 옵션으로 퍼블릭 서브넷의 인스턴스에 연결하여 SSH 에이전트 전달을 활성화하고 해당 인스턴스의 퍼블릭 주소를 사용합니다.

    ssh -A ec2-user@54.0.0.123

Windows(PuTTY)에 대한 SSH 에이전트 전달을 구성하려면

  1. Pageant가 아직 설치되어 있지 않으면 PuTTY 다운로드 페이지에서 Pageant를 다운로드하여 설치합니다.

  2. 프라이빗 키를 .ppk 형식으로 변환합니다. 자세한 내용은 Linux 인스턴스용 Amazon EC2 사용 설명서PuTTYgen을 사용하여 프라이빗 키 변환을 참조하십시오.

  3. Pageant를 시작하고 작업 표시줄의 Pageant 아이콘을 마우스 오른쪽 버튼으로 클릭한 다음 [Add Key]를 선택합니다. 생성한 .ppk 파일을 선택하고 필요에 따라 암호를 입력한 다음 열기를 선택합니다.

  4. PuTTY 세션을 시작하고 퍼블릭 IP 주소를 사용하여 퍼블릭 서브넷의 인스턴스에 연결합니다. 자세한 내용은 Linux 인스턴스 연결을 참조하십시오. [Auth] 범주에서 [Allow agent forwarding] 옵션을 선택하고 [Private key file for authentication] 상자를 공백 상태로 둡니다.

인터넷 연결을 테스트하려면

  1. 다음 예제와 같이 퍼블릭 서브넷의 인스턴스에서 프라이빗 IP 주소를 사용하여 프라이빗 서브넷의 인스턴스에 연결합니다.

    ssh ec2-user@10.0.1.123
  2. 프라이빗 인스턴스에서 ICMP가 활성화된 웹 사이트에 대해 ping 명령을 실행하여 인터넷에 연결할 수 있는지 테스트합니다.

    ping ietf.org
    PING ietf.org (4.31.198.44) 56(84) bytes of data. 64 bytes from mail.ietf.org (4.31.198.44): icmp_seq=1 ttl=47 time=86.0 ms 64 bytes from mail.ietf.org (4.31.198.44): icmp_seq=2 ttl=47 time=75.6 ms ...

    키보드에서 [Ctrl+C]를 눌러 ping 명령을 취소합니다. ping 명령이 실패할 경우 인스턴스에서 인터넷에 액세스할 수 없음을 참조하십시오.

  3. (선택 사항) 더 이상 필요하지 않으면 인스턴스를 종료합니다. 자세한 내용은 Linux 인스턴스용 Amazon EC2 사용 설명서인스턴스 종료를 참조하십시오.

시나리오: 허용 목록에 있는 IP 주소에서 네트워크에 대한 액세스 허용

각 인스턴스에 온프레미스 네트워크에 액세스할 수 있는 IP 주소 범위와 별도의 IP 주소를 할당하는 대신, VPC에 허용된 IP 주소 범위의 서브넷을 생성하고, 해당 서브넷에 프라이빗 NAT 게이트웨이를 생성하고, VPC의 트래픽을 NAT 게이트웨이를 통해 온프레미스 네트워크에 라우팅할 수 있습니다.

NAT 인스턴스에서 마이그레이션

이미 NAT 인스턴스를 사용하는 경우 이를 NAT 게이트웨이로 대체할 수 있습니다. 이렇게 하려면 NAT 인스턴스와 동일한 서브넷에 NAT 게이트웨이를 만든 다음, NAT 인스턴스를 가리키는 라우팅 테이블의 기존 경로를 NAT 게이트웨이를 가리키는 경로로 대체합니다. 현재 NAT 인스턴스에 사용하는 것과 동일한 탄력적 IP 주소를 NAT 게이트웨이에 사용하려는 경우에도 먼저 NAT 인스턴스의 탄력적 IP 주소를 연결 해제하고 NAT 게이트웨이를 만들 때 이 주소를 게이트웨이에 연결해야 합니다.

NAT 인스턴스에서 NAT 게이트웨이로 라우팅을 변경하거나 NAT 인스턴스에서 탄력적 IP 주소의 연결을 해제하면 현재 연결이 끊어지고 연결을 다시 설정해야 합니다. 중요한 작업(또는 NAT 인스턴스를 통해 작동하는 기타 작업)이 실행 중이지 않은지 확인합니다.

API 및 CLI 개요

이 페이지에서 설명한 작업은 명령줄이나 API를 사용하여 수행할 수 있습니다. 명령줄 인터페이스 및 사용 가능한 API 작업 목록에 대한 자세한 내용은 Amazon VPC 액세스를 참조하십시오.

NAT 게이트웨이 만들기

NAT 게이트웨이 설명

NAT 게이트웨이 태그 지정

NAT 게이트웨이 삭제