NAT(Network Address Translation) 서비스란?
인터넷과 통신할 수 있도록 Private IP address를 NAT의 Public IP address로 변환해주는 서비스이다. Private IP를 가진 EC2의 트래픽을 NAT로 보내고, NAT에서 Private IP를 NAT의 Public IP로 변환하여 인터넷으로 보내준다.
Amazon NAT Gateway
이 NAT 서비스를 제공해주는 것이 AWS Managed 서비스인 AWS NAT Gateway 서비스이다. NAT Gateway는 Private Subnet에 있는 Instance가 인터넷에 연결될 수 있도록 해준다. NAT Gateway는 인터넷과 통신이 가능한 Public Subnet에 생성해야 하며, VPC 단위의 서비스로 동일한 VPC의 Instance들은 해당 NAT Gateway를 공용으로 사용할 수 있다.
추가적으로, NAT Gateway를 가지고 있더라도 IGW(Internet Gateway)가 있어야 인터넷 통신이 가능하다. NAT는 단순히 Network Address를 변환해주는 역할만 수행하고 인터넷과의 연결 역할은 IGW가 수행한다. 즉, NAT Gateway만 생성했다고 인터넷과 통신이 바로 되는 것이 아니라 IGW 생성 및 Routing Table 설정이 필요하다.
- Private Subnet의 Route table에는 인터넷(0.0.0.0/0) 통신이 NAT Gateway로 흘러갈 수 있도록 세팅해준다.
- Public Subnet의 Route table에는 인터넷(0.0.0.0/0) 통신이 Internet Gateway로 흘러갈 수 있도록 세팅해준다.
AWS에서 NAT를 구성하는 2가지 방법
1. NAT Gateway
(1) NAT Gateway 란?
NAT 서비스를 제공하는 AWS Managed 서비스
(2) 특징
- 트래픽 증가에 따라서 NAT Gateway가 자동으로 초당 45 Gbps까지 대역폭을 확장한다. 이 이상의 대역폭이 필요한 경우 Subnet을 추가하여 리소스를 분리하고 NAT Gateway를 추가한다.
- NAT Gateway는 Subnet에 위치하므로 NACL 방화벽 범위에 포함된다.
- NAT Gateway에 SG(Security Group)를 적용할 수 없다.
(3) AWS DOC
https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html
2. NAT Instance (전통적 방식)
(1) NAT Instance 란?
Instnace에 NAT 서비스를 직접 구축(설치)하는 형태
(2) 특징
- AWS Managed 서비스 아님, Instance 생성 및 NAT 서비스 직접 설치/운영 해야한다.
- AZ fail, NAT Instance fail 등에 대비하기 위한 이중화 구성 등 복잡한 설정을 직접 구현 및 운영해야 한다.
- EC2의 source/destination check 기능을 꼭 disable 해야 한다. 이 기능은 instance가 트래픽의 source 또는 destination일때만 트래픽을 처리한다. 그렇지 않은 경우, 트래픽을 drop처리한다. Instance에 NAT 서비스를 구성하는 경우, NAT Instance는 트래픽의 source/destination이 본인이 아니여도 보내거나 받을 수 있어야 하므로 해당 기능을 disable 처리해야 한다.
(3) AWS DOC
https://docs.aws.amazon.com/vpc/latest/userguide/VPC_NAT_Instance.html
댓글