AWS VPC part 2. (NAT와 네트워크 동작원리)

2022. 2. 4. 23:32Cloud/AWS 기초

 

private subnet에서는 주로 상당히 보안적으로 중요한(DB와 같은)것들이 저장되어 있는 경우가 많다. 그런데 한 번 생각해 보자. 만약 DB를 사용하기 위해서는 일단 먼저 설치를 해야한다. 이 설치는 어떻게 할까? 직접 설치파일(exe와 같은)을 외부 저장장치를 통해 설치할 수 도 있지만 가장 좋은 방법은 역시 인터넷을 통해 설치하는 것이다. 혹은 어찌어찌 설치한 DB를 업데이트 하기 위해서는 역시 인터넷에 연결이 되어 있어야한다. 즉 프라이빗 이라고 하더라도 인터넷과 연결을 할 필요가 있다는 것이다. 이럴때는 어떻게 해야할까?

NAT 우회 방법

바로 '우회' 라는 방법을 통해서 할 수 있다. 여기서 외부(인터넷)과 연결할 수 있는 포인트는 어디일까? 바로 퍼블릭 서브넷이다. 이곳을 통해서 우회해서 인터넷 게이트웨이로 트레픽을 전송하며 받는 형식으로 인터넷을 사용할 수 있다.

즉 직접적인 인터넷 접근 대신 프라이빗-퍼블릭-인터넷-퍼블릭-프라이빗* 이라는 방향으로 움직이게 되는 것 이다. 이때 이런 우회를 할 수 있게 해 주는 기술이 바로 NAT(Network Address Transtaion) instance/Gateway라고 한다.

 

*정말 구체적으로 서술하자면 private => private NACL => private Route Table => Route => public Router Table => public NACL => public => public NAT Gateway => public NACL => public Router Table => Route => Internet Gateway => Internet => Internet Gateway => Route => public Router Table => public NACL => public => public NAT Gateway => public NACL => public Router Table => Route => private Router Table => private NACL => private 이다.

 

위 그림에서 알 수 있듯 2가지 방법(NAT gateway, NAT instance)를 통해 외부로 요청을 하며 그것을 받을 수 있는데, 이 둘의 차이는 다음과 같다. 먼저 NAT instance는 프라이빗이 외부로 연결되기 위한 하나의 퍼블릭 서버 안에 있는 EC2 서버라고 이해하면 된다. NAT Gateway의 경우 AWS에서 지원하는 우회용 전용 특화 서비스 이다.

 

참고로 엄청 비싸니까 바로바로 지우도록하자. 얼마 안 썼는데 가격 폭탄을 맞을 수 도 있다....

어쩨서 눈물이...

 

정리하면 다음과 같다.

퍼블릭 서브넷 안에 있는 프라이빗 인스턴스가 외부의 인터넷과 통신을 하기 위한 하나의 방법론이다. NAT Instance는 단일 EC2 Instance로써의 역할을 하며 NAT Gateway는 AWS에서 제공하는 하나의 서비스이다. 반드시 NAT Instance는 퍼블리 서브넷에 있야 한다.

 

그러면 반대로 외부의 사람이 private에 접근을 하기 위해서는 어떤 방법을 사용해야 할까? 단순한 방법으로는 때려죽어도 직접적으로 접근할 수 있는 방법이 없을것이다. 그럼 보안적으로 완벽하네요? 와 신난다~ 가 아니라 이 외부의 사람이 알고보니 우리 회사의 관리자 였다 라고 생각해보자. 관리자가 특정 작업을 해야하는데 전혀 접근을 할 수 없다?? 그러면 아주 난처한 상황일것이다.

갬돌이 갬순이라면 아래의 친구가 굉장히 익숙할 것이다. 우리의 친숙한 친구. 바스티온(영문명으론 Bastion)이다. AWS에서도 이런 친숙한(?) Bastion Host이 있다. NAT가 프라이빗에서 인터넷으로 접근하기 위한 방법이라면 Bastion은 인터넷에서 프라이빗으로 접근하기 위한 방법이다. 일종의 대리인으로써 public에 위치하고 있으며 관리자는 이곳에 접근을 한다. 이 후 여기에서 private에 접근을 하게 된다. 콘솔을 통해서 Bastion Host에 접근을 하며 SSH를 통해 private에 접근을 우회적으로 하게 된다.

 

좌측의 마크는 VPC EndPoint라는 개념이다. VPC 엔드포인트를 통해 인터넷 게이트웨이, NAT 디바이스, VPN 연결 또는 AWS Direct Connect 연결이 필요 없이 Virtual Private Cloud(VPC)와 지원 서비스 간에 연결을 설정할 수 있다. 따라서 VPC가 퍼블릭 인터넷에 노출되지 않게 된다. 즉 AWS의 다양한 서비스들과 VPC를 연결시켜주는 중간 매개체 라고 할 수 있다. 단순한 문장만 보면 당연한데? 이게 왜 필요해? 라고 할 수 있는데 우리에겐 격리된 개념인 private subnet이 있기 때문에 그 '당연한' 것 마저도 절차를 거쳐서 연결을 해야 한다.

'Cloud > AWS 기초' 카테고리의 다른 글

AWS EC2 배포하기  (0) 2022.02.16
AWS VPC Bastion Host 접근법  (0) 2022.02.08
AWS VPC part. 1(VPC란 무엇일까?)  (0) 2022.02.04
AWS EC2 instance 의 운용방식  (0) 2022.02.04
CDN이란? (AWS's CloudFront)  (0) 2021.11.24