프라이빗 서브넷에서 외부로 나가지 못할 때 NAT 게이트웨이 설정 점검법

프라이빗 서브넷(Private Subnet)에 위치한 EC2 인스턴스가 인터넷에 전혀 접속하지 못하는 가장 근본적인 이유는 해당 서브넷이 인터넷 게이트웨이(Internet Gateway, IGW)에 직접적으로 연결되어 있지 않기 때문입니다. 프라이빗 서브넷은 의도적으로 공인 인터넷과의 직접적인 라우팅을 차단하도록 설계되어 있으며, 따라서 프라이빗 인스턴스가 외부 네트워크(예: 소프트웨어 업데이트, API 호출 등)로 나가기 위해서는 반드시 NAT 게이트웨이(NAT Gateway) 또는 NAT 인스턴스를 중계 지점으로 거쳐야만 합니다. 이 NAT 통로가 제대로 설정되지 않았거나, 경로 테이블 미스매치, 보안 그룹/NACL 차단, NAT 자원 자체의 장애 등이 발생했을 때 외부 연결 문제가 발생하게 되며, 이를 해결하기 위해서는 다음 순서에 따라 설정을 체계적이고 단계적으로 점검하고 검증해야 합니다.

프라이빗 서브넷(Private Subnet)에 위치한 EC2 인스턴스가 인터넷에 전혀 접속하지 못하는 가장 근본적인 이유는 해당 서브넷이 인터넷 게이트웨이(Internet Gateway, IGW)에 직접적으로 연결되어 있지 않기 때문입니다. 프라이빗 서브넷은 의도적으로 공인 인터넷과의 직접적인 라우팅을 차단하도록 설계되어 있으며, 따라서 프라이빗 인스턴스가 외부 네트워크(예: 소프트웨어 업데이트, API 호출 등)로 나가기 위해서는 반드시 NAT 게이트웨이(NAT Gateway) 또는 NAT 인스턴스를 중계 지점으로 거쳐야만 합니다. 이 NAT 통로가 제대로 설정되지 않았거나, 경로 테이블 미스매치, 보안 그룹/NACL 차단, NAT 자원 자체의 장애 등이 발생했을 때 외부 연결 문제가 발생하게 되며, 이를 해결하기 위해서는 다음 순서에 따라 설정을 체계적이고 단계적으로 점검하고 검증해야 합니다.


1. NAT 게이트웨이 상태 및 구성 확인

NAT 게이트웨이 자체가 정상적으로 작동하고 있는지, 그리고 올바른 서브넷에 배치되었는지를 확인합니다.

  • NAT 게이트웨이 위치: NAT 게이트웨이는 반드시 퍼블릭 서브넷(Public Subnet)에 위치해야 합니다. 프라이빗 서브넷의 트래픽을 받아 처리한 후, IGW로 전달하려면 NAT 게이트웨이가 IGW에 직접 접근할 수 있는 경로를 가진 퍼블릭 서브넷에 있어야 합니다.
  • 상태 확인: AWS VPC 콘솔에서 NAT 게이트웨이의 상태(Status)가 Available인지 확인합니다. 만약 상태가 Pending이나 Failed라면 문제가 있는 것입니다.
  • 탄력적 IP (EIP) 확인: NAT 게이트웨이가 외부 인터넷과 통신하기 위해 유효한 탄력적 IP(Elastic IP, EIP)에 연결되어 있는지 확인해야 합니다. EIP는 NAT 게이트웨이 생성 시 자동으로 할당됩니다. EIP가 제대로 연결되지 않았다면 통신이 불가능합니다.

2. 프라이빗 서브넷 라우팅 테이블 점검 (핵심)

프라이빗 서브넷의 인스턴스가 NAT 게이트웨이로 트래픽을 보낼 수 있도록 라우팅 규칙을 설정하는 것이 가장 중요합니다.

  • 라우팅 테이블 식별: 프라이빗 인스턴스가 속한 서브넷에 연결된 라우팅 테이블(Route Table)을 확인합니다.
  • 기본 경로(Default Route) 확인: 해당 라우팅 테이블의 경로(Routes) 목록에 다음 규칙이 반드시 포함되어야 합니다.
    • 대상 (Destination): 0.0.0.0/0 (모든 외부 IP 주소)
    • 대상 (Target): NAT 게이트웨이 ID (nat-xxxxxxxxxxx)
  • 문제 원리: 프라이빗 인스턴스가 인터넷으로 나가기 위해 0.0.0.0/0 경로를 조회했을 때, 이 경로가 NAT 게이트웨이로 지정되어 있어야만 트래픽이 NAT 게이트웨이로 전송됩니다. 이 규칙이 없거나 IGW로 직접 지정되어 있다면 통신이 실패합니다.
    • 조치: 경로가 올바르지 않다면, 라우팅 테이블을 편집하여 0.0.0.0/0 대상을 해당 NAT 게이트웨이 ID로 설정합니다.

3. 퍼블릭 서브넷 라우팅 테이블 점검 (NAT 게이트웨이용)

NAT 게이트웨이가 배치된 퍼블릭 서브넷도 외부 통신이 가능해야 합니다.

  • 퍼블릭 서브넷 라우팅 테이블: NAT 게이트웨이가 속한 퍼블릭 서브넷에 연결된 라우팅 테이블을 확인합니다.
  • IGW 경로 확인: 이 라우팅 테이블은 반드시 다음 규칙을 통해 트래픽을 IGW로 보내야 합니다.
    • 대상 (Destination): 0.0.0.0/0
    • 대상 (Target): 인터넷 게이트웨이 ID (igw-xxxxxxxxxxx)
  • 문제 원리: NAT 게이트웨이는 프라이빗 인스턴스 트래픽을 받아 소스 IP를 자신의 EIP로 변환한 후, 이 트래픽을 IGW로 보내야 합니다. 만약 이 퍼블릭 서브넷의 라우팅 테이블에 IGW 경로가 없다면, NAT 게이트웨이의 아웃바운드 트래픽이 막힙니다.

4. 보안 그룹 및 NACL 점검

네트워크 경로가 올바르더라도, 방화벽 규칙이 트래픽을 차단할 수 있습니다.

  • 프라이빗 인스턴스 보안 그룹: 프라이빗 인스턴스의 보안 그룹 아웃바운드(Outbound) 규칙이 HTTP(80), HTTPS(443), DNS(53) 등 필요한 포트에 대한 트래픽을 허용(Allow)하는지 확인합니다.
  • NAT 게이트웨이 NACL: NAT 게이트웨이가 위치한 퍼블릭 서브넷의 NACL 인바운드와 아웃바운드 규칙이 통신을 차단하고 있지 않은지 확인합니다. NACL은 무상태(Stateless)이므로, 모든 트래픽(특히 Ephemeral Port 범위)을 허용하는 규칙이 낮은 번호로 명시되어 있어야 합니다.

Disclaimer: 본 블로그의 정보는 개인의 단순 참고 및 기록용으로 작성된 것이며, 개인적인 조사와 생각을 담은 내용이기에 오류가 있거나 편향된 내용이 있을 수 있습니다.