VPC(Virtual Private Cloud)에서 프라이빗 서브넷에 있는 인스턴스들이 인터넷으로부터 들어오는 트래픽을 허용하지 않으면서도 외부로 트래픽을 보낼 수 있도록 해주는 서비스다.
프라이빗 서브넷에 있는 리소스들이 외부 네트워크에 접근할 수 있지만, 외부에서 직접적으로 접근할 수 없게 된다.
VPC의 보안성을 유지하면서 외부 API 호출이나 소프트웨어 업데이트를 위한 인터넷 연결을 필요로 하는 애플리케이션을 운영하는 것에 활용 가능하다.
NAT 게이트웨이는 동적으로 네트워크 트래픽의 부하에 맞춰 성능을 조정하여 트래픽의 급격한 변화에도 NAT 게이트웨이는 성능 저하 없이 안정적인 서비스 제공이 가능하다.
고가용성을 위해 각 AZ마다 별도의 NAT 게이트웨이를 생성하고, 이를 각각의 AZ에 맞게 라우팅 테이블에서 설정할 수 있다. 이렇게 하면 각 AZ 내에서 독립적으로 NAT 트래픽을 처리할 수 있어, AZ 단위의 장애에도 서비스 연속성이 보장된다.
연결 유형
매우 특수한 경우로 다단계 NAT 설정이나 특정 보안/네트워크 설계 요구사항에 따라 NAT 게이트웨이를 프라이빗 서브넷에 배치할 수 있다.
프라이빗 서브넷에 NAT 게이트웨이를 배치하여, 그 서브넷에서 나가는 트래픽이 반드시 특정 경로를 거치도록 강제할 수 있다. 이는 복잡한 보안 정책이나 네트워크 설계에 따라 외부와의 직접적인 통신을 피하고, 통신 경로를 엄격히 제한하기 위해 사용될 수 있다.
NAT Gateway이만 생성해서는 프라이빗 서브넷의 트래픽이 외부로 나갈 수 있는 것이 아니라, 해당 프라이빗 서브넷의 라우팅 테이블을 수정해야한다.
0.0.0.0/0 대상 트래픽이 모두 NAT Gateway로 가도록 라우팅 편집을 해준다.
출처: Architecting on AWS 7.7.9 (KO): Student Guide 136p
cf. 인터넷 게이트웨이로 들어온 외부 트래픽은 퍼블릭 IP를 가지고 있지만, VPC는 사설 대역을 사용하고 있어 프라이빗 IP로 변환을 해주어야 리소스를 식별할 수 있다. 따라서 인터넷 게이트웨이에서 NAT를 수행해주어야 한다.
cf. 인터넷 게이트웨이로 들어오는 외부 트래픽은 퍼블릭 IP에서 프라이빗 IP로 변환되고, NAT Gateway에서 인터넷 게이트웨이로 전달되는 트래픽은 해당 퍼블릭 IP 그대로 외부로 나가게 된다.
NAT Gateway를 사용하여 프라이빗 IP 주소를 보호할 수 있다.
AWS VPC(Virtual Private Cloud) 내에서 NAT 게이트웨이를 통해 프라이빗 서브넷의 인스턴스가 인터넷과 통신할 수 있다.
NAT Gateway를 통해 프라이빗 서브넷의 인스턴스의 트래픽을 인터넷 도는 다른 AWS의 리소스로 전달할 수 있다.
출처: Architecting on AWS 7.7.9 (KO): Student Guide 138p
프라이빗 서브넷의 라우팅 테이블에서 0.0.0.0/0 항목을 NAT 게이트웨이로 설정하여, 모든 외부로 나가는 트래픽은 NAT 게이트웨이를 경유하여 인터넷으로 나가게 한다.
라우팅 테이블에 0.0.0.0/0 항목을 인터넷 게이트웨이(IGW)로 설정하여. 모든 외부로 나가는 트래픽이 인터넷 게이트웨이를 통해 인터넷으로 전달되게 한다.
출처: Architecting on AWS 7.7.9 (KO): Student Guide 139p
인바운드 트래픽 처리
인터넷에서 들어오는 트래픽은 인터넷 게이트웨이를 통해 VPC로 들어가며, Elastic Load Balancer에 도달한다. ELB는 이 트래픽을 적절한 가용 영역의 앱 서버로 분배한다. 이는 주로 사용자 요청을 처리하는 트래픽이다.
아웃바운드 트래픽 처리
앱 서버들이 외부 인터넷과 통신해야 할 때, NAT 게이트웨이를 통해 아웃바운드 트래픽을 전송한다. NAT 게이트웨이는 이 트래픽의 소스 IP 주소를 자신의 퍼블릭 IP 주소로 변환한 후, 인터넷 게이트웨이를 통해 외부로 내보낸다.