[학습정리] 배포하다 '이러면 안되겠다 싶어' 작성하는 네트워크 간단 정리

케이·2022년 9월 4일
0

학습기록

목록 보기
5/5

틀린 내용이 있다면 언제든지 지적해주시면 감사하겠습니다🙇🏻‍♀️

팀 프로젝트 마지막 무렵, 너무 당연하게 배포의 차례가 왔다.
예전에는 무지성으로 배포를 했던지라 이번에는 정신차리고 공부하며 배포를 해야했는데..
쉽지 않았다. 서브넷? NAT? 분명 설명 들었는데.. 뭐더라.. 싶고.. 분명 전에 배포 삽질을 그렇게 했으면서도.. (인간은 언제나 같은 실수를 반복하지..)
더 이상 미루면 안될 것 같아 많은 블로그 글들을 읽었고 네트워크 책들을 펼쳐보며 간단하게 정리한 내용을 아래에 남긴다.
까먹지말자.. 제발.

VPC (Virtual Private Cloud)

  • AWS 클라우드의 프라이빗 가상 네트워크
  • 보통 AWS 리전 및 가용 영역의 고가용성을 기반으로 구축
  • VPC는 한 리전 내에 상주하며 여러 가용영역에 걸쳐 사용가능
  • VPC는 네트워크 구성을 완벽하게 제어할 수 있도록 허용
  • VPC 내부의 리소스를 격리하고 노출할 수 있는 기능이 있음
  • 여러 계층의 보안 제어 기능을 제공
  • 특정 인터넷 및 내부 트래픽을 허용 및 거부할 수 있는 기능이 있음
  • 다른 AWS 서비스를 VPC에 배포할 수 있음

Subnet

subnet은 VPC를 나누는데 사용된다.
보통 VPC를 IP로 구분해 나눈 후 다중 AZ(가용영역)에 걸쳐 서브넷을 구성한다.
서브넷은 public subnet/private subnet으로 분류된다.

Public Subnet

  • 인터넷에 직접 액세스 가능한 서브넷.
  • 인터넷 게이트웨이를 VPC에 연결하고 퍼블릭 서브넷의 라우팅 테이블을 업데이트하여 로컬이 아닌 트래픽을 인터넷 게이트웨이로 보내면 퍼블릭 서브넷처럼 사용 가능. 누구나 인터넷을 통해 접근 할 수 있음을 뜻함.

Private Subnet

  • 인터넷에 직접 액세스 불가능한 서브넷. 보통 회사의 내부 서버나 프로그램들을 private subnet에 위치시킴. 인터넷을 통해 아무나 접근할 수 없다.

인터넷 게이트웨이 (Internet Gateway)

  • VPC에 부착되어 VPC와 인터넷 간에 통신을 할 수 있게 해주는 출입문.
    인터넷 게이트웨이를 VPC에 연결해 서브넷으로 연결해주면 해당 서브넷이 public subnet 역할을 할 수 있게 됨.

라우팅 테이블 (Routing Table)

  • IP 주소에 트래픽 라우팅 경로를 정의하여 서브넷 안팎으로 나가는 트래픽에 대한 라우팅 경로 설정 기능을 수행.
  • 인터넷을 통해 사용자에게 요청이 들어왔을 때 어디로 가야할지 이정표를 알려주지 않으면 통신을 할 수 없다. 라우팅 테이블은 IP주소에 트래픽 라우팅 경로를 정의해서 서브넷 안팎으로 나가는 트래픽에 대한 라우팅 경로를 설정한다. == 어떤 요청이 들어왔을 때 사용하는 경로안내 이정표(표지판).

NAT (Network Address Translation)

  • private subnet에 위치하게 될 리소스들은 private IP만 가지기 때문에 내부가 아닌 외부의 리소스들과 통신하면 안됨.
  • private IP를 public IP로 변환해서 private IP는 감추고 통신을 할 수 있도록 해주는 것이 NAT
    (저번주 네트워크 스터디 정리하면서도 등장했었다. 얼마나 반가웠던지.. https://velog.io/@becolorful/Network4주차-라우팅과-인터넷-계층)
  • 더 나아가서 NAT Instance는 private subnet 내의 웹 서버들이 외부로 통신을 하기 위해 사용하는 서버. 보통 NAT 서버를 public subnet 안에 구축해서 NAT를 통해 외부로 통신을 함.

Bastion

  • NAT 게이트웨이는 서브넷에서 외부로 나갈 수는 있어도 반대로 외부에서 private subnet으로 접속은 못한다. 이럴 때 bastion 호스트를 사용하면 된다.
  • Bastion 호스트란 public subnet에 위치하며 private subnet과의 통신을 도와주는 대리인이라고 한다.(내부와 외부 네트워크 사이에서 일종의 게이트 역할을 수행하는 호스트.)
  • Bastion 호스트로 ssh 연결을 한 후 Bastion 호스트에서 private subnet의 host에 ssh연결을 하는 형태로 프라이빗 서브넷에 접근할 수 있게 된다.

그래서 배포 어떻게 했는데?

미흡한 손재주로 간략하게 그려보았다... (아래 이미지 참고)

배포 다 하고 난 뒤에 생각해보니 서버가 있는 EC2도 Private해야 하는 것이 아닐까 생각이 들었다. 보안을 위해서...
무튼 일단 이렇게 배포를 해둔 상태다. 라우터 테이블도 있고.. 한데 미흡한 손재주로는 다 그려내기가 어려워서 최대한 간단하게 그려보았다..ㅠㅠ
Bastion이라고 써놨지만 Bastion과 NAT의 역할을 모두 하는 인스턴스였는데 프라이빗 인스턴스에서 mysql을 다운받을때만 사용하고 더 이상 외부와 통신할 일이 없을 것 같아서 삭제해둔 상태다.

참고

https://inpa.tistory.com/entry/AWS-📚-VPC-개념-사용-사설-IP-통신망-NAT-Gateway-Bastion-Host
https://minjii-ya.tistory.com/35?category=946161
https://junhyeong-jang.tistory.com/5

profile
삽질하며 깨닫고 배웁니다. (a.k.a 프로삽질러) + 이 구역의 회고왕

0개의 댓글