NAT, Gateway Endpoint

Jisu·2024년 6월 30일
0

Techs

목록 보기
7/8
post-thumbnail

배경

우리 회사는 EKS로 인프라를 운영하고 있고, 여러 AZ (가용영역)에 AWS 리소스를 배치하여 운영하고 있다.

이 때 AZ간 데이터 전송 요금이 부과되는 것을 막아보기 위해, 기존에 운영되던 a region의 NAT Gateway를 b,c에도 신설하였으나, 이를 기존에 사용하던 s3 엔드포인트에 연결하지 않아 많은 요금이 부과된 일이 발생했다.

이에 NAT와 Gateway Endpoint 등의 개념을 정리해보고자 한다.


Network Address Translation

NAT는 Network Address Translation으로 직역하면 네트워크 주소 변환이다. TCP/IP 기반 통신에서 네트워크 주소란 IP를 뜻하는데, IP 변환이 왜 필요한 것 일까?

EKS에서 파드는 EC2에서 실행되고 있기 때문에, 클라이언트와 파드가 통신하기 위해 EC2의 IP를 알아야한다.

문제는 Public Subnet이라면 EC2는 Public IP를 배정받지만 Private Subent에서 EC2는 사설 IP만 가지고 있기 때문에 클라이언트에서 destination IP를 알 수가 없는 것이다.

따라서 클라이언트와 Private subnet내의 AWS 리소스와 통신을 하기 위해서는 중간 매개체를 하는 것이 NAT Gateway이다.

클라이언트가 private IP에 요청을 보낼 수 없기 때문에 NAT Gateway의 공인 IP로 요청을 보내게 되고, NAT Gateway는 그 요청의 destination IP를 private IP로 변환시키는 역할을 한다.

그래서 이름이 Network Address Translation 인 것이며, private subent 내의 aws 리소스가 외부 인터넷과 통신하기 위해서는 반드시 public subnet에 배정된 NAT Gateway가 필요한 것이다.


Gateway Endpoint

AWS 리소스와 VPC간 통신할 수 있는 엔드포인트를 제공하는 것이다.

S3같은 AWS 리소스는 특정 VPC내로 프로비저닝되는 것이 아니다. 그래서 특정 VPC 내의 EC2에서 실행되고있는 애플리케이션에서 S3에서 데이터를 가져오려면, 별 다른 설정이 없다면 인터넷 게이트웨이를 거치게된다.

하지만 인터넷 게이트웨이를 거치지 않고, 바로 VPC 내부 리소스와 연결을 가능하게 해주는 것이 Gateway Endpoint이다.

만약 가용영역 a,b,c 내의 private subnet내에 프로비저닝된 EC2에서, 운영되고있는 애플리케이션이 S3에서 데이터를 GET 하려면 두 가지 방식이있다.

  1. NAT Gateway를 통해 Internet Gateway를 사용하고, 데이터를 GET
  2. Gateway Endpoint를 라우팅 테이블에 등록하고 이 엔트포인트를 통해 데이터를 GET
profile
비즈니스에 관심많은 DevOps Engineer 장지수입니다.

0개의 댓글