안녕하세요. 오늘은 Amazon NAT Gateway에 대해서 공부해보겠습니다.
AWS의 EC2 인스턴스 혹은 VPC를 사용하다보면 꼭 접하게 되는 서비스인데 왜 필요한지 어떻게 활용하는 서비스인지 알아보도록 하겠습니다!
1. Network Address Translation(NAT)란
NAT Gateway를 공부하기 이전에 Network Address Translation(NAT)부터 알아보도록 하겠습니다.
NAT란 영어 단어 그대로 네트워크 주소를 번역해주는 기능입니다.
그런데 네트워크 주소를 번역해준다는 것이 무슨 뜻일까요? 전부 동일한 IP 주소를 사용하고 있어서 모를리가 없는데 말이죠.
바로 다른 네트워크의 IP 주소들을 번역해준다는 뜻입니다! 일반적으로 NAT 장치들은 다른 네트워크들이 연결되는 사이에 설치됩니다.
아래의 예제 그림1을 살펴볼까요?
그림 1을 보면 공유기를 사이에 두고 홈 네트워크와 인터넷이 연결되고 있습니다.
그리고 공유기에는 PC, 스마트폰, 노트북이 연결되어 있습니다. 흔한 가정집 네트워크 상황이죠.
이렇게 되면 공유기에 연결된 기기들은 전부 공유기의 공용 IP를 가지고 외부 서버 1, 2, 3과 통신하게 됩니다.
그러면 궁금한 점이 하나 생깁니다.
"공유기에 연결된 기기들이 외부 서버로 요청이 전달되는 것은 이해가 되는데...
외부 서버에서 기기들로 보내는 응답은 어떻게 정확하게 전달될 수 있을까?"
외부 서버들은 3.34.158.127이라는 정보밖에 없는데 PC, 스마트폰, 노트북을 어떻게 구분할 수 있을까요?
사실 정보가 더 있습니다! 아래 예제 그림2를 살펴볼까요?
그림 2는 IP 192.168.1.71을 배정 받은 노트북에서 223.42.15.7:8000으로 요청을 보냈을 때 공유기가 어떤 정보를 저장하는지 알려줍니다.
- 노트북은 23279 포트를 통해서 223.42.15.7:8000로 요청을 보냅니다.
- 공유기가 (192.168.1.71, 23279) 정보를 (3.34.158.127, 22222) 정보와 맵핑합니다.
- 공유기가 노트북에서 보낸 요청의 source 정보를 3.34.158.127:22222로 바꿔서 223.42.15.7:8000으로 전달합니다.
- 223.42.15.7:8000은 요청을 처리하고, 공유기의 IP인 3.34.158.127:22222로 응답을 보냅니다.
- 외부 서버의 응답을 받은 공유기는 2에서 맵핑한 정보를 이용하여 22222 포트에 대응되는 노트북의 주소인 192.168.1.71:23279를 찾아냅니다.
- 공유기는 192.168.1.71:23279로 응답을 전달합니다.
이렇게 공용 IP를 사설 IP에 맵핑시키는 기능을 NAT라고 합니다.
- 좀 더 깊게 파고들면 정적 NAT, 동적 NAT, PAT 등 많지만 지금은 이 정도로 이해해도 괜찮을 것 같습니다!
2. NAT Gateway
NAT Gateway는 NAT 기능을 수행해주는 관리형 서비스입니다.
NAT Gateway는 public 타입과 private 타입이 존재합니다.
- public 타입의 NAT Gateway를 통해서는 인터넷에 연결할 수 있습니다.
- private 타입의 NAT Gateway를 통해서는 다른 VPC 또는 온프레미스 네트워크에 연결할 수 있습니다.
관리형 서비스로서 특징은 다음과 같습니다.
- NAT Gateway는 5Gbps의 대역폭을 지원하며 최대 100Gbps까지 자동 확장합니다. 이보다 더 큰 대역폭을 지원하기 위해서는 리소스를 여러 서브넷으로 분산시켜고, NAT Gateway를 여러 개 사용해야 합니다.
- NAT Gateway는 초당 백만개의 패킷을 처리할 수 있으며 최대 천만 개 처리까지 자동 확장합니다. 최대량을 초과하면 NAT Gateway가 패킷을 제거합니다.
- NAT Gateway에 연결된 IPv4 주소 1개당 55000개의 동시 연결을 지원합니다. 최대 8개의 IPv4 주소를 연결하여 제한을 늘릴 수 있습니다.
이 외에도 IPv6 지원, ACL을 이용한 연결 제어 등이 있습니다.
- NAT Gateway는 IPv4, IPv6를 지원합니다. - NAT64
- NAT Gateway는 ACL을 이용하여 연결을 제어합니다. 보안 그룹에는 연결할 수 없습니다.
3. NAT Gateway 를 사용하는 경우
그러면 NAT Gateway를 어떻게 활용할 수 있을까요?
AWS에 계정을 생성하면 기본적으로 생성되는 리소스 중에 NAT Gateway는 없는 만큼 우리가 필요로 하는 경우에 직접 생성해야 합니다.
제가 생각하는 대표적으로 NAT Gateway 사용하는 경우는 다음 2가지입니다.
- private subnet에 위치한 인스턴스들의 인터넷 연결
- egress traffic에 대한 고정 IP 할당
외부로부터의 접속을 차단하기 위해서 private subnet에 위치시킨 인스턴스들도 인터넷에 연결하여 서비스를 연동해야 하는 경우가 있습니다.
하지만 private subnet은 Internet Gateway로 라우팅 되지 않으므로 외부 서비스로 요청이 닿을 수 없습니다 ㅜ
이 때, private subnet을 NAT Gateway로 라우팅하도록 routing table을 설정해주면,
private instance가 인터넷으로 요청을 보내면 NAT Gateway가 IP를 맵핑해줘서 응답을 받을 수 있게 됩니다.
2. egress traffic에 대한 고정 IP 할당은 이전에 다룬 적이 있어서 링크를 남겨둡니다 ㅎㅎ
NAT가 무엇인지 공부하고, Amazon NAT Gateway를 공부해봤습니다.
개인적으로는 클라우드 서비스를 사용할 때, 가장 간단하지만 놓치기 쉬운 내용을 정리한 것 같습니다.
네트워크란 정말... ㅜ
혹시 잘못된 정보가 있으면 피드백 부탁드립니다 :)
P.S.
각각의 개념들을 공부하면서 도움을 받았던 링크들 공유드립니다.
'aws' 카테고리의 다른 글
간단하게 정리하려고 했는데 어쩌다보니 늦어진 Amazon Dynamodb 장단점 리뷰 (0) | 2023.09.17 |
---|---|
[2023-06-20] 참여하고 2달 넘게 지나서야 작성하는 AWS 글로벌 스타트업 진출 세미나 후기 (2) | 2023.09.03 |
AWS 고정 IP 할당 방법 - egress 네트워크 트래픽편(EIP, NAT Gateway) (4) | 2023.08.24 |
Amazon ECS에서 무중단 배포 이뤄내기 - 제발 장기 실행 태스크(long running tasks)는 만들지 마세요... (0) | 2023.07.09 |
Amazon ECS Graceful Shutdown - ECS를 안정적으로 사용하려면 SIGNAL은 처리해줘야죠! (0) | 2023.06.23 |