AWS에서 네트워크를 설계할때 NAT의 사용은 필수적입니다. 보안상 서버들을 외부에서 접근할 수 없고 확인할 수 없도록 해야하기 때문입니다.
AWS에서 NAT를 구성하는 방법은 2가지가 있습니다.
1. EC2 Instance를 NAT용도로 사용한다.
2. AWS의 완전관리형 서비스인 NAT Gateway를 사용한다.
먼저 1번을 설계해보면 아래와 같습니다.
하나의 VPC안에 2개의 Subnet이 있고, public subnet에 NAT instance가 있습니다.
NAT instance는 이와같이 반드시 public subnet에 구성되어있어야 합니다.
subnet이 public 인지, private 인지를 구분하는 것은 그림 오른쪽의 Route Table에 의해 결정되는데 public subnet의 Routing Table에는 반드시 0.0.0.0/0 이 igw-id 와 연결되어 있어야합니다.
이 말은 서버에서 인터넷으로 통신을할때 igw(Internet Gateway)를 사용한다는 것입니다. 외부에서 VPC내부에 있는 서버의 공인IP로 접근을할때에도 igw를 통해 접근할 수 있습니다.
반면에 private subnet 에는 igw가 없고 nat-instance-id 라는 것이 설정 되어있습니다. 이것은 public subnet에 있는 NAT instance를 뜻하는 것입니다.
Private subnet에서 Nat instance를 거쳐 외부 인터넷과 통신이 가능 한 것입니다. 따라서 외부에서 Private subnet에 있는 private ip를 알 수가 없죠
2번은 별도의 EC2 instance를 사용하지 않으며 AWS에서 제공하는 NAT전용 서비스인 Natgateway를 사용합니다.
그림을 그려보면 아래와 같습니다.
위와 동일하지만 public subnet안에 NAT gateway가 있네요.
그리고 Private subnet의 Route table에는 nat-gateway-id가 설정되어있습니다.
1번과 아주 유사한 형태이므로 큰 설명이 필요 없을 것 같습니다.
그럼 1번과 2번의 차이점이 무엇일까요
가장큰 차이가 금액입니다. NAT gateway는 완전관리형 이므로 가격이 비쌉니다.
EC2 instance를 NAT용으로 사용할때 보통 작은 타입의 t2.micro를 사용하곤 합니다.
이 기준으로 볼때 NAT gateway가 약 3배 정도 비싸다고 생각하시면 빠를 것 같네요.
하지만 NAT gateway는 성능이나 유지관리에 있어서 EC2 instance보다 뛰어납니다.
서비스 특성상 다량의 트래픽이 발생하거나 혹시 모를 EC2 instance의 장애를 생각해보면
안정성에 있어서 유리한 NAT gateway를 사용하는 것이 서비스 품질에 있어서 더 좋겠죠.
* 참조 URL "NAT gateway vs NAT instance"
https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/vpc-nat-comparison.html
여기 까지 NAT에 대한 대략적인 설명과 AWS에서 NAT인스턴스를 구축하는 방법까지 알아보았습니다.
AWS를 처음 도입하는 분들에게 작은 도움이 되었으면 좋겠습니다. 감사합니다.
'IT > AWS' 카테고리의 다른 글
AWS Cloud watch Agent설치및 Custom metric설정(Linux) (0) | 2020.06.03 |
---|---|
[AWS]EKS란? EKS생성 하기(AWS Console, AWS CLI사용) (0) | 2020.01.19 |
[AWS] VPC peering이란?(VCP 피어링 생성 및 설정 방법) (0) | 2019.10.24 |
[AWS] AWS에서의 보안 구성은 어떻게 해야할까요? (2) | 2019.10.17 |
[AWS] Nitro system 이란?(AWS 5세대 인스턴스) (0) | 2019.10.16 |