본문 바로가기

[네트워크] NAT Gateway, Bastion Host 이해하기

들어가며

아키텍처를 설계하면서, 견고한 아키텍처를 설계하려면 어떻게 해야 할까 늘 고민하고 있습니다. 아키텍처의 네트워크 환경을 잘 구축하려면 어떻게 해야 할까 고민하던 중, VPC 개념에 대해 알 수 있었습니다. 이번 기회에 VPC를 적용해서 더 나은 서버구조를 설계하고 싶었습니다. 이 글에서는 NAT Gateway와 Bastion Host에 대해 알아보겠습니다.

 

 

 

 

 


 

 

 

 

 

 

 

NAT Gateway와 Bastion Host

NAT Gateway란 Amazon Virtual Private Cloud의 프라이빗 서브넷에 있는 인스턴스에서 인터넷에 쉽게 연결할 수 있도록 지원하는 가용성이 높은 AWS 관리형 서비스입니다. 

 

만약 Private Subnet을 구성했다면, 서브넷 안에 EC2를 구성해서 사용할 수 있습니다. 이때, EC2가 외부 인터넷에 특정 프로그램의 버전을 업데이트하거나, 인터넷에서 특정 프로그램을 다운로드하는 등의 접근이 필요하다면 어떻게 해야 할까요? 일단, Private Subnet에 있는 EC2에서는 외부에 접근할 수 있는 방법이 없습니다. 이때 필요한 것이 NAT Gateway입니다.

 

NAT Gateway는 private subnet에 있는 EC2 인스턴스를 대신해서 외부 인터넷과 통신을 할 수 있도록 돕습니다. NAT Gateway는 public subnet에 있고 NAT Gateway를 거쳐서 Private Subnet에 있는 EC2에 요청을 전달할 수 있습니다. 외부 인터넷에서 들어온 응답값을 NAT Gateway에서 받은 후 다시 라우터를 통해 Private Subnet의 EC2에 트래픽을 전달합니다. 

 

NAT Gateway는 AWS에서 제공하는 서비스라면, NAT Instance를 구성해서 별도 EC2를 구성하는 방법도 있습니다. 하지만 NAT Gateway를 사용하면 서비스이기 때문에 고가용성이 보장되어 있고, 관리하기 수월하기 때문에 저는 NAT Gateway를 사용할 예정입니다.

 

그럼 간단히 Bastion Host에 대해서도 알아보겠습니다. Bastion Host는 외부에서 사설 네트워크에 접속할 수 있도록 경로를 확보해 주는 서버입니다. Private Subnet에 있는 자원에 접근하기 위해 필요한 EC2 인스턴스이며, NAT Gateway와 마찬가지로 Public Subnet에 위치해야 합니다. 

 

NAT Gateway는 Private Subnet이 외부 인터넷에 접근하기 위해, Bastion Host는 외부에서 Private Subnet에 있는 인스턴스에 접근하기 위해 구성하는 것이 특징입니다. 그런데 Bastion Host는 외부에서 Private Subnet에 접근할 수 있다는 이야기는, 반대로 Private Subnet에 존재하는 인스턴스가 외부 인터넷에도 접근할 수 있도록 도울 수 있다는 뜻일 텐데요. 그래서 Bastion Host는 NAT Instance의 역할도 할 수 있습니다.

 

그럼 생각해 보면 Bastion Host가 NAT Instance의 역할도 가능하다면, Bastion Instance 하나만 생성해서 두 가지 역할을 다 처리할 수 있을 텐데요. 그렇지만 왜 NAT Instance 혹은 NAT Gateway를 구성할까요? 그 이유는 주로 가용성 때문에 사용한다고 합니다. NAT Gateway의 경우 이미 고가용성이 확보되어 있지만 NAT Instance의 경우 오토스케일링과 EIP 등으로 고가용성을 확보해주어야 합니다. 이외에 인스턴스 사이즈별로 활용가능한 네트워크 트래픽 용량등이 다른 문제들도 있습니다.

 

그럼 Bastion Host 서버에 오토스케일링과 EIP를 적용한다면 문제가 없을 것 같다는 생각이 드는데요. 개인적으론 Bastion Host와 NAT Gateway의 사용에 대한 목적이 다르기 때문에, Bastion Host에서 두 개의 역할을 하도록 구성하는 것도 방법일 수 있지만, 목적에 맞게 자원을 분리해 주는 것도 좋겠다는 생각이 들어, 개인적으론 Bastion Host와 NAT Gateway를 별도로 구성해서 활용하려 합니다. 

 

여기서는 NAT Gateway를 설정하고, NAT Gateway를 Private Subnet에 접근하는 라우팅 테이블에 NAT Gateway를 추가하는 과정을 살펴보겠습니다. 

 

 

 

먼저 VPC 안에 있는 NAT 게이트웨이로 들어가서, NAT 게이트웨이 생성 버튼을 클릭하면 위 화면처럼 나오는데요. NAT 게이트웨이 이름을 설정하고, 서브넷을 지정합니다. VPC를 구성하고, 서브넷을 구성했다면, 여러 서브넷이 나올 것입니다. NAT 게이트웨이는 public 서브넷에 위치해야 하기 때문에, public 서브넷을 지정해 줍니다. 그 후 연결 유형은 외부 인터넷에 접근해야 하기 때문에 퍼블릭으로 지정하고, 탄력적 IP를 할당해 줍니다. 마무리가 됐다면 NAT 게이트웨이 생성 버튼을 클릭합니다. 

 

 

 

 

Private Subnet에 존재하는 EC2가 외부에 접근하려면, Private 라우팅 테이블에서 NAT Gateway로 트래픽이 갈 수 있도록 설정해야 합니다. 이를 위해 Private 라우팅 테이블에서 NAT 게이트웨이를 연결하면 됩니다. 그럼 local로 가는 트래픽을 제외한 모든 트래픽은 NAT Gateway로 전달됩니다.  

 

 

Bastion Host 설정은 아래 링크에서 자세히 설명하고 있기에, 만약 구성을 원하신다면 아래 링크를 살펴보시면 됩니다.

 

 

 

 

 

 

 

VPC를 이용해서 나의 가상 환경 만들기 - MacOS (AWS 강의실 - VPC 실습)

MacOS,, 예쁘고 하드한 친구,, 지난 포스팅에서 VPC의 개념에 관해 살펴보았습니다. 이번 포스팅에서는 실습을 통해 직접 VPC 및 구성 요소들을 설정하고, 직접 사용해보려고 합니다. 참고로, 해당

rileyko.tistory.com

 

Bastion Host의 이해와 AWS에서의 구성 (Proxy)

본 포스팅은 제가 이전에 개인 블로그에 쓴 글을 베짱이 블로그에 맞게 재구성한 것입니다

err-bzz.oopy.io

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

마치며

네트워크에 대해 조금씩이라도 지식을 쌓아가고 싶습니다. 기본을 꾸준히 쌓을 수 있는 개발자가 되겠습니다. 

 

 

 

 

 

 

 

 


 

 

 

 

 

출처

 

VPC는 Sims같아요. (AWS 강의실 - VPC 개념)

Sims 해보셨나요? 심즈는 땅과 건물을 사서 그 안에 개인 캐릭터를 키우는 게임입니다. 건물 내에 벽을 설치해서 공간을 나눌 수도 있습니다. 또한, 가구 등을 주문해서 인테리어를 할 수도 있습

rileyko.tistory.com

 

Bastion Host의 이해와 AWS에서의 구성 (Proxy)

본 포스팅은 제가 이전에 개인 블로그에 쓴 글을 베짱이 블로그에 맞게 재구성한 것입니다

err-bzz.oopy.io