예지의 개발 로그포스 (Yeji's Log Force)

[Cloud] NAT Gateway란? (NAVERCloud에서 NAT 생성과 적용) 본문

Cloud

[Cloud] NAT Gateway란? (NAVERCloud에서 NAT 생성과 적용)

Yeji Heo 2024. 4. 26. 10:54

지난 글에서 private subnet에 폐쇄적인 서버를 생성하면서 NAT GW의 필요성에 대해 언급했었다!

 

[Cloud] Server생성으로 Cloud기본 이해하기 (NAVERCloud활용)

클라우드상에서 VPC, Subnet, Server를 직접 만들고 접속해보면서각종 클라우드 개념(Region, Zone, IGW, NAT....)과 매커니즘을 공부한 것을 기록한다!1.  VPC가상의 데이터센터 세운다. (NCloud에서는 최대 3

crayeji.tistory.com

 

위 글에서 DB와 같이 폐쇄적인 서버를 위치시키기 위한 서브넷으로

공인IP를 부여하지 않는(=Internet Gateway를 지나지 않도록 한) Private Subnet을 생성했었다.

 

private subnet의 서버는 외부와는 Inbound도, Outbound도 불가한 것을 지난 글에서 확인했었다.

그러나 DB서버에도 JDK, Linux등을 외부로부터 설치해야 할 일이 분명 있을 수 있다.

 

이 때 NAT GateWay를 사용한다. 

private subnet에서 NAT GW를 통해 외부와 통신할 때는 사설IP를 공인 IP로 변환하면서 그 IP정보를 NAT가 가지고있고, 리눅스 등을 설치하고자 그 파일을 가져올때도 기억해뒀던 IP로 들어오게 되는 것이다. 

즉, 외부에서 직접적으로 들어오는 것은 여전히 안 되고, NAT를 통해 흘러들어오기만 가능하기 때문에 '단방향적'이라는 얘기를 하곤 한다. (요청은 Subnet쪽에서만 할 수 있고 외부에서는 할 수 없는, OutBound통신만 가능.)


 

1. NAT GW용 Subnet 생성 

 

이렇게 NAT GW라는 새로운 문을 하나 더 거침으로써 외부와의 단방향적 통신이 가능하며,

NAVERCloud에서는 이 NAT GW 위치시킬 별도의 Subnet을 만들어줘야 한다.

(다른 Cloud서비스에서는 이렇게 하지 않고 그냥 Public Subnet에 집어넣는 경우도 있다.)

NAT GW용 Subnet 생성

 

똑같이 Subnet을 만들되, 용도를 NAT GW로 설정한다. 

IP 주소 범위는 10.0.3.0.24과 같이 private(10.0.2.0/24), public subnet (10.0.1.0/24) 에서 했던대로 순차적으로 해도 상관없고 자기 맘이다.

이 예제에서는 NAT GW용 별도의 Subnet이라는 강력한 표현을 위해 10.0.100.0/24로 표현했다.(골방으로 보내버림)


 

2. NAT GW 생성

 

만들어둔 서브넷을 적용해서 NAT를 만들었다.

NAT는 공인 IP를 새로 할당받았다. 

NAT 생성

 


 

3. Route table 설정

 

VPC의 Route table에 가보면 

VPC 생성시 NCloud에서 기본제공해주는 private Route table에

나의 NAT GW 서브넷이 들어가 있는 것을 확인할 수 있다.

 

Subnet지원 유형은 '사설'이다. 

프라이빗한 사설 Subnet들이 참고할 Route table이기 때문이다. 

목적지가 0.0.0.0/0(전체) 인 사설 Subnet들은 NAT GW로 라우팅 된다는 의미로 해석했다.

그럼 NAT는 공인 IP가 있으니까 이를 통해 NCloud가 Infra as a Service로서 지원하는 Network Address Translation으로 외부와의 통신이 가능해지는 것 같다. (오류가 있다면 댓글 부탁드립니다..!!)


 

+ Default가 싫으면 아래처럼 따로 Route table을 생성해도 좋다.

 

폐쇄적인 사설 Subnet들을 위한 Route table이므로 Subnet지원 유형은 사설로 선택한다.

(NAT 자체는 public subnet에 위치시키고 공인IP를 할당받아 외부와 통신이 되게 했던거고,

이 테이블은 말 그대로 private 서버들의 라우팅을 위한 것이다.)

그러므로 당연히 테이블 생성 후 연관Subnet에 private 서브넷을 연결시켜 줘야 한다.

(애초에 서브넷 지원 범위를 '사설'로 설정한 테이블이므로, 연관 Subnet설정에서도 private Subnet들만 뜰 것이다.)

private Subnet들의 모든 목적지(0.0.0.0/0)에 대해 NAT GW를 거치도록 Route Table설정까지 마쳤다.


4. NAT 테스트

 

이제 private subnet의 서버가 NAT를 통해 외부와 통신하게 되었는지 확인해보자.

NAT를 썼다고 해도 단방향적 통신만 가능하기 때문에 외부에서 직접 private subnet의 서버로 접근할 수는 없다.

그러므로 public subnet에 있는 서버의 공인IP로 먼저 접속하고, 그 서버에서 private subnet의 서버로 우선 접속하자.

접속 한 후 google에 ping을 날려보니

이제 NAT를 통해 로컬IP를 공인IP로 변환해 Outbound 통신하고

다시 NAT로 응답을 잘 받아오는 것을 확인할 수 있다!

 

NAT는 비싸다고 하니 이제 얼른 삭제해야겠다 ㅎ호호

Comments