AWS로 시작하는 인프라 구축의 정석 리뷰2(4장 가상네트워크)

신창호·2023년 7월 10일
0
post-thumbnail

4장. 가상 네트워크 만들기

  • 먼저 인프라 스트럭처 관리자가 자유롭게 다양한 서버를 구축할 수 있는 네트워크부터 만든다.
  • 책 내에서 언급하는 네트워크는 인프라스트럭처 관리자가 주체가 되어 관리하는 장소를 말한다.
    • LAN(Local Area Network)

VPC

  • 실제에서 네크워크에 서버나 네트워크 장비, 이들을 연결하는 케이블들 물리적인 것을 구축해야되는데
  • VPC는 가상환경 안에 네트워크 장비에 해당하는 리소스를 VPC안에 추가할 수 있다.

VPC 생성 내용

  • VPC를 생성할 때 네트워크 정보를 결정해야된다.

    • 이름태그
    • IPv4 CIDR 블록
    • IPv6 CIDR 블록
    • 테넌시
  • 이름 태그

    • VPC를 쉽게 식별하고자 알기 쉬운 이름을 붙인다.
  • IPv4 CIDR 블록

    • VPC에서 사용하는 프라이빗 네트워크용 IP주소의 범위를 지정
    • IP 주소 범위는 3가지
      • 24비트
      • 20비트
      • 16비트
    • VPC로 지정할 수 있는 서브넷 마스크는 최대 16비트까지라 어떤 범위를 선택해도 달라지는 점은 없다.
    • 서브넷 마스크가 최대 16비트인 이유
      • 서브넷 마스크란?
      • 10.0.0.0/8 에서 /8은 mask할 비트 수가 8비트 임을 뜻하고,
        앞에서 가릴 비트 수를 말한다. 그리고 이것을 CIDR표기법이라 부른다.
      • 사람 얼굴로 비유하자면 얼굴길이가 32cm에서, 8cm 마스크를 쓰고 있다고 볼 수 있다.
      • 그리고 그 마스크를 쓴 부분이 VPC로 지정할 수 있는 내부적인 IP 범위이다.
      • 그래서 서브넷 마스크가 최대 16비트라는 것은 내부IP로 쓸 수 있는 최소한의 범위 숫자가 아닐까?한다.
  • IPv6 CIDR 블록

    • IPv6 이용 여부 지정
  • 테넌시

    • VPC상의 리소스를 전용 하드웨어에서 실행할지 지정
    • default의 경우 다른 AWS 계정과 하드웨어 리소스를 공유하도록 선택된다.
    • 신뢰성이 중요한 시스템의 경우 전용으로 설정하면 좋지면, 비용이 추가된다.

VPC생성 순서

  • name이 - 인 VPC는 기본VPC이다.

    • 블로그나 간단한 웹사이트를 즉시 만들고자 하는 이용자의 요구를 만족하려는 것으로 미리 만들어진 VPC이다.

VPC생성

생성시 이름 규칙이 있다.

  • 시스템 이름 -리소스이름(-리소스 식별자)
  • ex. sample-vpc, sample-ec2-web01

IPv4 CIDR 블럭정보 : manual input 10.0.0.0/16
IPv6 CIDR 블럭정보: 블록 없음
테넌시 정보 : 기본값



서브넷과 가용영역

  • VPC안에는 하나 이상의 서브넷을 만들어야 한다.
  • 서브넷은 VPC의 IP주소 범위를 나누는 단위이다.
    • IP주소 범위를 나누는 대표적인 이유는 2가지이다.
      • 역할 분리 : 외부에 공개하는 리소스 여부 구별
      • 기기분리 : AWS 안에서의 물리적인 이중화를 수행

역할분리

  • 리소스가 담당하는 역할에 따라 분리
    • 로드밸런서는 외부 공개가 목적이므로 외부에서 접근 가능
    • DB서버는 VPC 내부서버에서만 사용

기기분리

  • 내결함성을 높이기 위해 기기를 분리
  • aws라고 하더라도 장애가 나타나 운영이 안되는 경우가 종종있다.
  • 이런 경우라면, 동일한 기기에 리소스를 넣는다면, 시스템 자체를 사용하지 못하는 사태가 일어날 수 있다.

리전

  • 글로벌 서비스에서 지리적 관점으로 영역을 구분하는데, 이를 리전이라고 한다.
    • 일본 도쿄에서 호스팅되는 영역 - 도쿄 리전
    • 한국 서울에서 호스팅되는 영역 - 서울 리전
  • 이렇게 전세계영역으로 분산되어 있으면 천재지변등의 불가항력에 대해 대처가능
  • 또한, 리전은 서로 완전히 독립적이다.

가용영역

  • 리전은 2개 이상의 가용영역 단위로 또 나눌 수 있다.
    • 1개의 가용영역만 있을 수도 있긴하지만, 대부분 2개이상으로 운영된다.
  • 가용 영역이 다르면 독립되었음을 보장 할 수 있다.
  • 가용 영역별로 서브넷(IP주소 범위)을 제공하면, 여러 서브넷을 동시에 못하는 가능성을 낮출 수 있다.

한국은 4개의 데이터센터(4개의 가용영역)

  • aws는 국내에 직접 IDC를 구축하지않고 기존에 구축되어있던 IDC를 사용한다.

IPv4 CIDR 설계 방법

  • 서브넷을 한번 만들면 해당 서브넷이 이용하는 CIDR블록은 변경할 수 없다.
    • 처음 설계를 확실히 해야함!!
    • 생성할 서브넷의 수
    • 서브넷 안에 생성할 리소스 수(AWS가 5개정도 예약하기위해 사용한다.)
      -> 아키텍처를 설계할 때 어느정도 예측 할 수 있게 된다.

생성 내용

  • 외부에 공개/ 비공개

  • 이중화

  • 서브넷의 이름은 알기 쉬운 이름으로 붙인다.

  • 외부 서브넷1과 내부 서브넷1의 가용영역이 동일함을 알 수 있다.

  • 또한, 외부 서브넷1과 외부 서브넷2는 가용영역과 이름외에 동일하다.

서브넷 생성 순서

  • 서브넷 또한, Name이 - 인 경우 기본으로 제공되는 서브넷이다.
  • 서브넷 -> 서브넷 생성 -> 서브넷 필요정보 입력
  • 서브넷 이름(VPC이름-서브넷-public/private 01)
  • 가용영역 선택
  • 서브넷 IPv4 CIDR블록 설정
    • ex. 10.0.0.0/20 ,10.0.16.0/20, 10.0.64.0/20, 10.0.80.0/20

인터넷 게이트웨이

VPC에서 생성된 네트워크와 인터넷 사이의 통신을 가능하게 하는 것

  • 게이트웨이가 없다면 인터넷과 VPC안의 리소스는 서로 통신할 수 없다.
  • 생성할 때 필요한 내용은 크게 2가지이다.
  • VPC에 인터넷 게이트를 붙이는 것을 연결이라고 한다.

게이트웨이 생성

  • 인터넷 게이트웨이 -> 인터넷 게이트웨이 생성

  • 이름만 잘 입력해주고, 생성해준다.

VPC에 연결

  • 상태가 Attached가 보이면 인터넷 게이트웨이가 VPC에 연결이 된 것이다.

NAT 게이트웨이

인터넷 게이트웨이는 서브넷이 public이든 private이든 ip를 알고 접근할 수 있게 된다.
하지만, 이렇게되면 public과 private을 구분한 의미가 사라진다.
그래서, 기본적으로 private 서브넷에 생성된 리소스는 인터넷 으로 보낼 수 있지만 인터넷에서는 접근할 수 없어야한다.

  • NAT(Network Address Translation)
  • private SubNet 리소스 --o--> 인터넷
  • private SubNet 리소스 <--x-- 인터넷
  • 즉, 이러한 요구사항을 구현하는 것이 NAT 게이트웨이이다.
    • NAT은 네트워크 주소 변환 시스템이다.
    • 이것은 Public 서브넷에 생성한다.

NAT 시스템

  • 아파트로 비유하자면, 아파트 주소는 노출되어 있어도, 각층의 방을 구체적으로 누가 살고, 몇층이고, 몇번째이고, 방안에는 무엇이 있는지 정보가 노출되어 있으면 안된다.
    • 이것을 아파트 사람들끼리 1호, 2호등 호실로 표현하게된다.
  • 만약 이 아파트에 사는 사람이 외부사람과 연락하고자 편지를 적어 보낼 때,
    1호만 적어서 보내거나, 아파트 주소만 적어서 보내게되면 답장을 받을 수 없게 된다.
  • 그래서 아파트주소+호실번호 라는 형식의 정보로 변환해야한다.
    • 이러면, 아파트가 먼저 받고 내부적으로 알고 있는 호실로 전달할 수 있게 된다.
    • 그러므로 퍼블릭 서브넷에 NAT 게이트웨이가 필요하다.

생성내용

  • 이름을 적고, 사용할 서브넷을 선택한다.
  • 탄력적 IP 할당 ID : 탄력적 IP할당 버튼
    • 자동 생성한 탄력적ip는 NAT게이트를 삭제해도 그대로 남아있어 이용료가 부과되기 때문에, 따로 삭제해줘야 한다.
    • 이때, NAT게이트웨이를 삭제해도 1시간정도 콘솔에 표시될 수 있으므로,탄력적 IP를 바로 삭제할 수 없을 수도 있다.
    • 이미 생성했던 탄력적IP가 있다면 선택도 할 수 있다.

라우팅 테이블

위 과정까지 마치면, 외부에서 private리소스에 직접 접근 할 수 있는 방법은 없어진다.
하지만, 이 상태에서는 서브넷과 서브넷, 또는 서브넷과 각 게이트웨이가 통신할 수 있는 경로가 존재하지 않는다.
이러한 문제를 해결하기 위해 라우팅 테이블은 컴퓨터 네트워크에서 목적지 주소를 목적지에 도달하기 위한 네트워크 노선으로 변환시키는 목적으로 사용된다.

  • 쉽게 말해, 어디로 전송할지 경로를 결정하는 방법을 라우팅 테이블을 참조하여 결정하게 된다.

  • 라우팅 테이블에는 이서버에 접속할 때는 이곳을 경유한다 라는 규칙을 설정할 수 있다.

  • 송신 대상지 : 접속 대상 위치에 관한 정보.

    • 송신 대상지는 IP 주소를 지정
    • IP 주소는 특정값을 지정하거나 CIDR 형식을 이용해 범위로 지정할 수도 있다.
  • 타깃 : 경유지에 관한 정보

    • 라우팅 테이블에 지정할 수 있는 타깃은 몇가지가 있다.
  • 필요에 따라 라우팅테이블을 여러개 만들 수 있다.

  • ex.

    • public 라우팅 테이블 : public subnet1,2 공용
    • private 라우팅 테이블1 : private subnet1
    • private 라우팅 테이블2 : private subnet2

생성 내용

  • public 라우팅 테이블(공용)
    • 로컬
      • 송신대상지 : 10.0.0.0/16 (VPC)
      • 타깃 : 로컬
    • 외부
      • 송신대상지 : 0.0.0.0/0(모든 주소라는 의미)
        • 127.0.0.1 은 로컬 호스트 즉 자기 스스로를 가리키는 IP
      • 타킷 : sample-igw(인터넷 게이트웨이)
    • 해당되는 서브넷
      • sample-subnet-public01
      • sample-subnet-public02
  • private 라우팅 테이블 1
    • 로컬
      • 송신대상지 : 10.0.0.0/16(VPC)
      • 타깃 : 로컬
    • 외부
      • 송신대상지 : 0.0.0.0/0(모든 주소라는 의미)
      • 타킷 : sample-ngw-01(public-subnet-01에 있는 NAT 게이트웨이)
    • 해당되는 서브넷
      • sample-subnet-private01
  • private 라우팅 테이블 2
    • 위 private 라우팅 테이블1 양식이랑 거의 동일

실습

  • 이름과 라우터테이블을 적용할 VPC만 잘 선택해주고 라우팅 테이블 생성을 하면 된다.

  • 생성이 되면 하단 메뉴에 라우팅과 라우팅 편집을 할 수 있게 된다.

  • 편집화면에 들어오면 Local은 기본으로 있고, 만들 라우팅을 추가해주면 된다.

  • 변경사항을 저장하고 만들어진게 확인되면 서브넷 연결을 누른다.

  • 해당하는 서브넷을 설정해주면 된다.

    • public subnet에서 외부 인터넷 게이트웨이로 연결해주는 것이기 때문에, 아래와 같이 할당했다.

  • 이 작업을 private 라우팅 테이블 1,2 도 비슷하게 수행하면된다.
    • private의 경우 NATgateway와 연결한다.

VPC상에서 다양한 리소스를 생성할 준비를 마쳤다.


보안그룹

이 상태에서는 인터넷을 통해 모든 리소스에 접근할 수 있다.
외부로 부터 접근을 보호하려면 접근 제한 즉, 보안 그룹 기능을 사용해야한다.

☉ ACL(네트워크 액세스 컨트롤 리스트)

  • 보안 설정이 복잡한 경우 ACL를 통해 간소화 할 수 있다.
  • 보안그룹보다 더 앞단에서 적용된다

보안그룹 제어

  • 외부로부터 접근을 크게 2가지 개념으로 제어한다.
    • 포트번호
    • IP 주소

생성내용

  • 모든 리소스에 접속하는 입구인 점프서버(5장)
    • 인바운드 규칙
      • SSH : 0.0.0.0/0
  • 요청이나 처리를 분산하는 로드 밸런서(7장)
    • 인바운드 규칙
      • HTTP : 0.0.0.0/0
      • HTTPS : 0.0.0.0/0

실습

  • 보안그룹 생성하면, 먼저 이름과 적용할 VPC을 선택한다.

  • 그다음 인바운드 규칙:접근할 수 있는 정보를 입력한다.

  • 아웃바운드 규칙: 내보낼 수 있는 정보를 입력한다.

마치며

  • 이로써 격리용 클라우드 리소스(VPC)를 만들 수 있는 환경이 갖춰졌다.
  • 아무것도 없는 환경에서 하나하나 만들어간다고 생각하면서 실습을 따라가니, 좀 더 이해가 잘 가는 듯 하다.
  • 다음은 접근 통제 역할은 하는 점프서버를 알아보고자 한다.
profile
한단계씩 올라가는 개발자

0개의 댓글

관련 채용 정보