[AWS] Network Address Translation (NAT)
NAT (Network Address Translation)
- 탄력적 네트워크 인터페이스를 퍼블릭 IP 주소와 연결할 때 프라이빗 IP는 변하지 않음
- 인스턴스가 인터넷에 트래픽을 보낼 때, 인터넷 게이트웨이는 프라이빗 IP를 퍼블릭 IP로 변경
- 인터넷을 통해 인스턴스로 트래픽이 수신 될 때 인터넷 게이트웨이가 퍼블릭 IP에서 프라이빗 IP로 변경
- 인터넷 게이트웨이처럼 맵핑되어 있는 IP를 변환하는 프로세스를 NAT라고 함
NAT 디바이스
- AWS에서는 인터넷 게이트웨이 이외에 NAT 인스턴스, NAT 게이트웨이 서비스도 제공
- 인터넷상의 호스트가 인스턴스에 직접 도달하지 못하게 할 때 사용
- 인스턴스가 업데이트 패치를 받거나 데이터를 업로드할 때 인터넷에 연결해야하지만, 클라이언트의 요청에 응답할 필요가 없을 때 사용
- NAT 디바이스를 사용하면 인스턴스에 퍼블릭 IP를 할당하지 않음
NAT 인스턴스
- 퍼블릭 서브넷에 생성해서 인터넷과 연결될 수 있게 해야함
- 사전에 구성된 Amazon Linux AMI를 사용해서 구성
- AMI 지원이 종료했기 때문에 NAT 게이트웨이를 사용할 것을 권장
- 인스턴스 유형에 따라 대역폭이 달라짐
- 단일 인스턴스이기 때문에 확장성이 없어 대역폭 요구가 증가하더라도 자동 확장이 안됨
- 보안 그룹를 따로 관리 필요
- NAT 인스턴스 보안그룹의 인바운드 규칙에 VPC CIDR 블록 추가 필요 (HTTP, HTTPS)
- NAT 인스턴스 보안그룹의 인바운드 규칙에 ICMP 추가 필요 (source는 VPC의 CIDR블록)
- 인스턴스기 때문에 SSH도 지원해서 Bastion 서버로도 사용 가능
- source/destination 확인을 중단 설정 필요
- NAT 인스턴스를 통해 통신할 프라이빗 인스턴스의 라우트 테이블에 NAT 인스턴스를 대상으로 추가

NAT 게이트웨이
- AWS에서 관리하는 NAT 디바이스
- 인터넷 게이트웨이처럼 하나의 NAT 게이트웨이로 어떠한 대역폭 요청도 처리 가능
- 퍼블릭 서브넷에 배포 필요
- 프라이빗 서브넷이 연결되어 있는 라우트 테이블에 NAT 게이트웨이를 대상으로 추가 필요
- 보안 그룹을 적용할 수 없으므로 트래픽을 제어하려면 서브넷에 NACL을 적용 필요
