NAT 게이트웨이 문제 해결 - Amazon Virtual Private Cloud

NAT 게이트웨이 문제 해결

다음 주제는 NAT 게이트웨이를 만들거나 사용할 때 발생할 수 있는 일반적인 문제를 해결하는 데 도움이 됩니다.

NAT 게이트웨이 생성 실패

문제

NAT 게이트웨이를 생성하면 상태가 Failed가 됩니다.

참고

실패한 NAT 게이트웨이는 일반적으로 약 1시간 내에 자동으로 삭제됩니다.

원인

NAT 게이트웨이를 생성할 때 오류가 발생했습니다. 반환된 상태 메시지를 통해 오류 원인을 확인할 수 있습니다.

솔루션

오류 메시지를 보려면 Amazon VPC 콘솔열 연 후 NAT 게이트웨이를 선택하세요. NAT 게이트웨이에 대한 라디오 버튼을 선택한 후, 세부 정보 탭에서 상태 메시지를 찾습니다.

다음 표에는 Amazon VPC 콘솔에 표시되는 오류의 예상 원인이 나와 있습니다. 표시된 수정 단계를 적용한 후 NAT 게이트웨이를 다시 만들어 볼 수 있습니다.

표시된 오류 원인 솔루션
서브넷에 이 NAT 게이트웨이를 만들 수 있는 사용 가능한 주소가 부족함 지정한 서브넷에 사용 가능한 프라이빗 IP 주소가 없습니다. NAT 게이트웨이에는 서브넷의 범위에서 할당된 프라이빗 IP 주소가 있는 네트워크 인터페이스가 필요합니다. Amazon VPC 콘솔의 서브넷 페이지로 이동하여 서브넷에서 사용 가능한 IP 주소 개수를 확인합니다. 서브넷의 세부 정보 창에서 사용 가능한 IP를 볼 수 있습니다. 서브넷에서 사용 가능한 IP 주소를 만들려면 사용되지 않은 네트워크 인터페이스를 삭제하거나 필요 없는 인스턴스를 종료할 수 있습니다.
네트워크 vpc-xxxxxxxx에 연결된 인터넷 게이트웨이가 없음 인터넷 게이트웨이가 있는 VPC에서 NAT 게이트웨이를 만들어야 합니다. 인터넷 게이트웨이를 생성하여 VPC에 연결합니다. 자세한 정보는 인터넷 게이트웨이 생성 및 연결을 참조하십시오.
탄력적 IP 주소 eipalloc-xxxxxxxx가 이미 연결되어 있음 지정한 탄력적 IP 주소가 다른 리소스와 이미 연결되어 있으므로 NAT 게이트웨이와 연결할 수 없습니다. 탄력적 IP 주소와 연결된 리소스를 확인합니다. Amazon VPC 콘솔에서 탄력적 IP 페이지로 이동하여 인스턴스 ID 또는 네트워크 인터페이스 ID에 지정된 값을 확인합니다. 해당 리소스에 탄력적 IP 주소가 필요 없는 경우 주소를 연결 해제할 수 있습니다. 또는 계정에 새로운 탄력적 IP 주소를 할당합니다. 자세한 정보는 탄력적 IP 주소 작업을 참조하십시오.

NAT 게이트웨이 할당량

NAT 게이트웨이를 생성하려고 하면 다음 오류가 발생합니다.

Performing this operation would exceed the limit of 5 NAT gateways

원인

해당 가용 영역에 대한 NAT 게이트웨이 수가 할당량에 도달했습니다.

솔루션

계정에 대한 이 NAT 게이트웨이 할당량에 도달한 경우, 다음 중 하나를 수행할 수 있습니다.

  • 서비스 할당량 콘솔을 사용하여 가용 영역 할당량당 NAT 게이트웨이 증가를 요청합니다.

  • NAT 게이트웨이의 상태를 확인합니다. Pending, Available 또는 Deleting의 상태는 할당량에 포함됩니다. NAT 게이트웨이를 최근에 삭제한 경우 상태가 Deleting에서 Deleted로 바뀔 때까지 몇 분간 기다립니다. 그런 다음 새 NAT 게이트웨이를 생성해 보세요.

  • 특정 가용 영역에 NAT 게이트웨이가 필요 없는 경우 할당량에 도달하지 않은 가용 영역에서 NAT 게이트웨이를 만들어 봅니다.

자세한 내용은 Amazon VPC 할당량 단원을 참조하세요.

탄력적 IP 주소 할당량

문제

퍼블릭 NAT 게이트웨이에 탄력적 IP 주소를 할당하려고 하면 다음 오류가 발생합니다.

The maximum number of addresses has been reached.

원인

해당 리전의 계정에 대한 탄력적 IP 주소 수가 할당량에 도달했습니다.

솔루션

탄력적 IP 주소 할당량에 도달한 경우 다른 리소스에서 탄력적 IP 주소의 연결을 해제할 수 있습니다. 또는 Service Quotas 콘솔을 사용하여 탄력적 IP 할당량 증가를 요청할 수 있습니다.

가용 영역이 지원되지 않음

문제

NAT 게이트웨이를 생성하려고 하면 NotAvailableInZone 오류가 발생합니다.

원인

제약이 있는 가용 영역(확장이 제약되어 있는 영역)에서 NAT 게이트웨이를 생성하려 했을지도 모릅니다.

솔루션

이러한 가용 영역에서는 NAT 게이트웨이를 지원하지 않습니다. 다른 가용 영역에서 NAT 게이트웨이를 만들고 제약이 있는 영역의 프라이빗 서브넷에 사용할 수 있습니다. 리소스와 NAT 게이트웨이가 동일한 영역에 있도록 제약이 없는 가용 영역으로 리소스를 이동할 수도 있습니다.

NAT 게이트웨이가 더 이상 표시되지 않음

문제

NAT 게이트웨이를 만들었지만 Amazon VPC 콘솔에 표시되지 않습니다.

원인

NAT 게이트웨이를 만드는 동안 오류가 발생하여 생성에 실패했을 수 있습니다. Failed 상태의 NAT 게이트웨이는 Amazon VPC 콘솔에 1시간 가량 표시됩니다. 한 시간 후에는 자동으로 삭제됩니다.

솔루션

NAT 게이트웨이 생성 실패에서 정보를 검토하고 새 NAT 게이트웨이를 만들어 봅니다.

NAT 게이트웨이가 Ping 명령에 응답하지 않음

문제

인터넷에서(예를 들어 홈 컴퓨터에서) 또는 VPC의 인스턴스에서 NAT 게이트웨이의 탄력적 IP 주소 또는 프라이빗 IP 주소를 ping하려고 시도하는 경우 응답을 얻을 수 없습니다.

원인

NAT 게이트웨이는 프라이빗 서브넷의 인스턴스에서 인터넷으로만 트래픽을 전달합니다.

솔루션

NAT 게이트웨이가 작동하는지 테스트하려면 퍼블릭 NAT 게이트웨이 테스트를 참조하세요.

인스턴스에서 인터넷에 액세스할 수 없음

문제

퍼블릭 NAT 게이트웨이를 생성하고 테스트 단계를 수행했지만 ping 명령이 실패하거나 프라이빗 서브넷의 인스턴스가 인터넷에 액세스할 수 없습니다.

원인

이 문제의 원인은 다음 중 하나일 수 있습니다.

  • NAT 게이트웨이가 트래픽을 제공할 준비가 되지 않았습니다.

  • 라우팅 테이블이 올바르게 구성되지 않았습니다.

  • 보안 그룹 또는 네트워크 ACL이 인바운드 또는 아웃바운드 트래픽을 차단하고 있습니다.

  • 지원되지 않는 프로토콜을 사용하고 있습니다.

솔루션

다음 정보를 확인하세요.

  • NAT 게이트웨이가 Available 상태인지 확인합니다. Amazon VPC 콘솔에서 NAT Gateways 페이지로 이동하고 세부 정보 창에서 상태 정보를 봅니다. NAT 게이트웨이가 실패 상태인 경우 게이트웨이가 생성될 때 오류가 발생했을 수 있습니다. 자세한 내용은 NAT 게이트웨이 생성 실패 단원을 참조하세요.

  • 라우팅 테이블을 올바로 구성했는지 확인합니다:

    • NAT 게이트웨이는 인터넷 트래픽을 인터넷 게이트웨이로 라우팅하는 라우팅 테이블이 있는 퍼블릭 서브넷에 있어야 합니다.

    • 인스턴스는 인터넷 트래픽을 NAT 게이트웨이로 라우팅하는 라우팅 테이블이 있는 프라이빗 서브넷에 있어야 합니다.

    • 전체 또는 일부 인터넷 트래픽을 NAT 게이트웨이 대신 다른 디바이스로 라우팅하는 다른 라우팅 테이블 항목이 있는지 확인합니다.

  • 프라이빗 인스턴스에 대한 보안 그룹 규칙이 아웃바운드 인터넷 트래픽을 허용하는지 확인합니다. ping 명령이 작동하려면 규칙이 아웃바운드 ICMP 트래픽도 허용해야 합니다.

    NAT 게이트웨이 자체는 모든 아웃바운드 트래픽과 아웃바운드 요청에 대한 응답으로 받는 트래픽을 허용합니다(따라서 상태 저장).

  • 프라이빗 서브넷 및 퍼블릭 서브넷과 연결된 네트워크 ACL에 인바운드 또는 아웃바운드 인터넷 트래픽을 차단하는 규칙이 없는지 확인합니다. ping 명령이 작동하려면 규칙이 인바운드 및 아웃바운드 ICMP 트래픽도 허용해야 합니다.

    흐름 로그를 활성화하여 네트워크 ACL 또는 보안 그룹 규칙으로 인해 끊어진 연결을 진단할 수 있습니다. 자세한 내용은 VPC 흐름 로그를 사용하여 IP 트래픽 로깅 단원을 참조하세요.

  • ping 명령을 사용하는 경우 ICMP가 활성화된 호스트를 ping하고 있는지 확인합니다. ICMP가 활성화되지 않은 경우 회신 패킷을 받지 못합니다. 이를 테스트하려면 사용자 자신의 컴퓨터의 명령줄 터미널에서 똑같은 ping 명령을 수행하세요.

  • 인스턴스가 다른 리소스, 예를 들어 프라이빗 서브넷의 다른 인스턴스를 ping할 수 있는지 확인합니다(보안 그룹 규칙이 이 작업을 허용한다고 가정함).

  • 연결이 TCP, UDP 또는 ICMP 프로토콜만 사용하는지 확인합니다.

대상에 대한 TCP 연결 실패

문제

프라이빗 서브넷의 인스턴스에서 NAT 게이트웨이를 통해 특정 대상에 연결할 때 일부 TCP 연결은 성공하지만 일부는 실패하거나 시간이 초과됩니다.

원인

이 문제의 원인은 다음 중 하나일 수 있습니다.

  • 대상 엔드포인트가 조각난 TCP 패킷으로 응답하고 있습니다. NAT 게이트웨이는 TCP 또는 ICMP에 대한 IP 조각화를 지원하지 않습니다. 자세한 내용은 NAT 게이트웨이 및 NAT 인스턴스 비교 단원을 참조하세요.

  • tcp_tw_recycle 옵션이 원격 서버에서 활성화되었으며, 이 옵션은 NAT 디바이스 뒤에 여러 연결이 있는 경우 문제를 일으키는 것으로 알려져 있습니다.

솔루션

다음을 수행하여 연결하려는 엔드포인트가 조각난 TCP 패킷으로 응답하는지 확인하세요.

  1. 퍼블릭 IP 주소가 있는 퍼블릭 서브넷의 인스턴스를 사용하여 특정 엔드포인트로부터 조각화를 유발할 정도로 큰 응답을 트리거합니다.

  2. tcpdump 유틸리티를 사용하여 엔드포인트가 조각화된 패킷을 전송하는지 확인합니다.

    중요

    이러한 확인을 수행하려면 퍼블릭 서브넷의 인스턴스를 사용해야 합니다. 원래 연결이 실패한 인스턴스, NAT 게이트웨이 뒤 프라이빗 서브넷의 인스턴스 또는 NAT 인스턴스는 사용할 수 없습니다.

    대량 ICMP 패킷을 전송 또는 수신하는 진단 도구가 패킷 손실을 보고할 것입니다. 예를 들어 NAT 게이트웨이 뒤에서는 ping -s 10000 example.com 명령이 작동하지 않습니다.

  3. 엔드포인트가 조각화된 TCP 패킷을 전송하는 경우 NAT 게이트웨이 대신 NAT 인스턴스를 사용할 수 있습니다.

원격 서버에 액세스할 수 있는 경우 다음을 수행하여 tcp_tw_recycle 옵션이 사용 가능한지 확인할 수 있습니다.

  1. 서버에서 다음 명령을 실행합니다.

    cat /proc/sys/net/ipv4/tcp_tw_recycle

    1이 출력될 경우 tcp_tw_recycle 옵션이 활성화된 것입니다.

  2. tcp_tw_recycle이 활성화된 경우 비활성화하는 것이 좋습니다. 연결을 재사용해야 하는 경우 tcp_tw_reuse 옵션을 사용하는 것이 더 안전합니다.

원격 서버에 액세스할 수 없는 경우 프라이빗 서브넷의 인스턴스에서 tcp_timestamps 옵션을 일시적으로 비활성화하여 테스트할 수 있습니다. 그런 다음 원격 서버에 다시 연결합니다. 연결에 성공하면 원격 서버에서 tcp_tw_recycle이 활성화된 것이 이전 오류의 원인일 수 있습니다. 가능하면 원격 서버 소유자에게 이 옵션이 활성화되어 있는지 확인하고 비활성화하도록 요청하세요.

경로 추적 출력에 NAT 게이트웨이 프라이빗 IP 주소가 표시되지 않음

문제

인스턴스가 인터넷에 액세스할 수 있지만, traceroute 명령을 수행할 때 출력에 NAT 게이트웨이의 프라이빗 IP 주소가 표시되지 않습니다.

원인

인스턴스가 인터넷 게이트웨이 등의 다른 게이트웨이를 사용하여 인터넷에 액세스하고 있습니다.

솔루션

인스턴스가 위치하고 있는 서브넷의 라우팅 테이블에서 다음 정보를 확인합니다.

  • 인터넷 트래픽을 NAT 게이트웨이로 보내는 경로가 있는지 확인합니다.

  • 인터넷 트래픽을 가상 프라이빗 게이트웨이 또는 인터넷 게이트웨이와 같은 다른 디바이스로 보내는 보다 구체적인 경로가 없는지 확인합니다.

350초 후 인터넷 연결이 끊어짐

문제

인스턴스에서 인터넷에 액세스할 수 있지만 350초 후에 연결이 끊어집니다.

원인

NAT 게이트웨이를 사용하는 연결이 350초 이상 유휴 상태인 경우 연결이 시간 초과됩니다.

연결 제한 시간이 초과하면 NAT 게이트웨이는 연결을 계속하려고 하는 NAT 게이트웨이 뒤의 리소스로 RST 패킷을 반환합니다(FIN 패킷을 보내지 않음).

솔루션

연결이 끊어지지 않도록 하려면 연결을 통해 더 많은 트래픽을 시작합니다. 또는 인스턴스에서 350초 미만의 값으로 TCP keepalive를 활성화할 수 있습니다.

IPSec 연결을 설정할 수 없음

문제

대상에 대한 IPsec 연결을 설정할 수 없습니다.

원인

NAT 게이트웨이는 현재 IPSec 프로토콜을 지원하지 않습니다.

솔루션

NAT-Traversal(NAT-T)을 사용하여 NAT 게이트웨이에 대해 지원되는 프로토콜인 UDP의 IPsec 트래픽을 캡슐화할 수 있습니다. NAT-T 및 IPsec 구성을 테스트하여 IPsec 트래픽이 삭제되지 않는지 확인하세요.

추가 연결을 시작할 수 없음

문제

대상에 대해 NAT 게이트웨이를 통한 기존 연결이 있지만 추가 연결을 설정할 수 없습니다.

원인

단일 NAT 게이트웨이에 대한 동시 연결 제한에 도달했을 수 있습니다. 자세한 내용은 NAT 게이트웨이 기본 사항 단원을 참조하세요. 프라이빗 서브넷의 인스턴스가 많은 수의 연결을 생성하는 경우 이 제한에 도달할 수 있습니다.

솔루션

다음 중 하나를 수행하세요.

  • 가용 영역당 하나의 NAT 게이트웨이를 만들고 해당 영역에 클라이언트를 분산합니다.

  • 퍼블릭 서브넷에서 추가 NAT 게이트웨이를 만들고 각각 다른 NAT 게이트웨이에 대한 경로가 있는 여러 프라이빗 서브넷으로 클라이언트를 분할합니다.

  • 클라이언트가 대상에 대해 생성할 수 있는 연결 수를 제한합니다.

  • CloudWatch의 IdleTimeoutCount 지표를 사용하여 유휴 접속의 증가를 모니터링합니다. 유휴 상태의 연결을 닫아서 용량을 확보합니다.