Develop/AWS

[AWS] VPC 환경 구성과 EC2 인스턴스 생성

Gr00t 2021. 2. 13. 13:01

VPC란?

Virtual Private Cloud의 약자로 AWS에서 제공하는 가상 개인 네트워크이다.

VPC를 사용하면 AWS에서 이용하는 모든 서비스 환경을 사용자가 원하는대로 구성할 수 있다. 이런 환경 구성은 저장하고 다시 사용할수도 있는데 만약 기본적인 네트워크가 필요한 경우 AWS에서 기본적으로 구성된 네트워크를 제공해주기도 한다.

Amazon VPC란 무엇인가?
Amazon Virtual Private Cloud(Amazon VPC)를 이용하면 사용자가 정의한 가상 네트워크로 AWS 리소스를 시작할 수 있습니다. 이 가상 네트워크는 AWS의 확장 가능한 인프라를 사용한다는 이점과 함께 고객의 자체 데이터 센터에서 운영하는 기존 네트워크와 매우 유사합니다. Amazon VPC는 Amazon EC2의 네트워킹 계층입니다. Amazon EC2를 처음 사용한다면 Linux 인스턴스용 Amazon EC2 사용 설명서의 Amazon EC2란 무엇입니까?
https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/what-is-amazon-vpc.html

VPC 주요 구성 요소

  • 서브넷(subnet) : VPC에서 사용하는 IP 주소의 범위
  • 라우팅 테이블(routing table) : 패킷을 전달될 네트워크의 순서를 정하는 라우팅의 규칙 집합
  • 인터넷 게이트웨이(Internet Gateway) : VPC 리소스와 인터넷 간의 통신을 활성화하기 위한 통로

VPC가 필요한 이유

EC2인스턴스가 서로 통신하기위해서는

  1. 각 인스턴스가 private subnet으로 IP를 가져야하고
  1. 각 subnet들이 VPC로 묶여서 라우팅되어야 한다.

따라서 VPC로 네트워크를 구성해주고 EC2 인스턴스를 연결지어줘야 EC2 인스턴스간의 통신이 원활하게 이루어진다.

출처 : A Cloud Guru


VPC구성하고 EC2인스턴스 생성해 SSH로 접속해보기

그럼 이제 직접 VPC를 구성해서 인스턴스간 연결이 되도록 설정하고 EC2 인스턴스를 생성해 SSH로 접속해보자.

VPC 생성

먼저 EC2 인스턴스가 올라갈 가상 네트워크(VPC)를 설정해준다.

콘솔에서 VPC 선택

서비스에서 네트워킹 및 콘텐츠 전송 → VPC를 선택한다. 혹은 검색창에 VPC를 검색해 선택한다.

VPC 생성

VPC 탭으로 들어가 VPC생성을 클릭한다.

VPC 정보 입력

생성할 VPC 이름을 입력하고 IPv6 CIDR 블록 없음이 선택됐는지 확인한다.

(현재 구성하려는 환경에서는 IPv6가 필요하지 않기 때문에 선택한 것이다.)

서브넷 생성

이제 VPC에서 사용할 IP 대역을 나누기 위해서 서브넷을 생성한다.

여기서는 크게 privatepublic으로 나누어 서로 다른 서브넷을 생성할 것이다.

서브넷 생성

첫번째 서브넷은 public으로 생성한다.

서브넷의 이름을 주고 가용 영역을 선택한 다음 IP 블록을 정의해주고 서브넷을 생성한다.

두번째 서브넷은 private으로 생성한다. 역시 이름을 주고 가용영역과 IP블록을 주고 서브넷 생성을 클릭한다. 주의할 점은 여기서 IP 블록은 public과 다른다는 것이다.

생성하고 나면 대시보드에서 다음과 같이 생성된 정보를 확인할 수 있다.

IPv4 CIDR 영역을 보면 서로 다른 IP 대역을 가지고 있는 것을 볼 수 있다.

Gateway 생성

게이트웨이를 생성해야하는데 게이트웨이는 public서브넷에서만 생성한다. 이유는 public은 말그대로 외부에서도 접근이 가능하게 해야하고 private은 외부에서 접근은 막고 같은 VPC내부에서만 접근이 가능하도록 만들어야하기 때문이다.

public IPv4 주소 자동 할당

생성한 서브넷 중에 public을 선택하고 작업에서 자동 할당 IP 설정 수정을 클릭한다.

자동 할당 IPv4를 선택하고 저장을 클릭한다.

인터넷 게이트웨이 설정

외부와 연결 통로가 되는 게이트웨이를 생성한다.

인터넷 게이트웨이탭에서 생성창으로 들어가면 이름을 입력하고 인터넷 게이트웨이 생성을 눌러 게이트웨이를 생성한다.

게이트웨이를 생성하면 어떤 VPC와 연결할 것인지 정해야한다.

생성된 게이트웨이 정보를 확인하고 작업 → VPC에 연결을 클릭한다.

좀 전에 생성한 VPC를 선택하고 인터넷 게이트웨이 연결을 클릭해 VPC와 인터넷 게이트웨이를 연결해준다.

이제 게이트웨이 정보를 확인하면 VPC정보가 같이 보이며 연결된 것을 확인할 수 있다.

라우팅 테이블 생성

VPC와 게이트웨이 연결을 통해서 가상 네트워크의 물리적(?) 환경은 모두 구성했다.

라우팅 테이블을 생성하고 라우팅 규칙을 추가해서 외부에서 접속하려고 할때 게이트웨이를 통해 연결되도록 해주자.

라우팅 설정

라우팅 테이블탭에 들어가면 라우팅 테이블이 이미 하나 있는 것을 볼 수 있다. 새로 라우팅 테이블을 하나 생성한다.

라우팅 테이블 생성 창으로 들어오면 이름과 연결될 VPC를 선택하고 태그를 추가한 다음 생성을 클릭하면 라우팅 테이블이 생성된다.

생성된 정보를 확인하고 닫는다.

방금 생성한 라우팅 테이블을 고르고 아래있는 정보창에서 라우팅탭을 선택한다.

VPC와 연결했기때문에 VPC IP대역에서 접근하는 경우는 이미 추가가 되어있다. 여기에 외부에서 접근을 할 수 있도록 추가하자.

새로운 정보를 추가하기 위해서 라우팅 편집을 클릭하고 라우팅 추가를 클릭한다.

첫번째 대상에서 외부에서 접속할 IP 혹은 전체를 허용하는 0.0.0.0/0을 입력한다.

두번째 대상에서 인터넷 게이트웨이(igw)를 선택하고 연결된 VPC를 선택한다. 그리고 라우팅 저장을 클리하면 편집이 완료된다.

아까 봤던 라우팅 테이블 화면에서 라우팅 규칙이 추가된 것을 볼 수 있다.

서브넷 연결

이제 마지막 절차로 서브넷만 연결해주면 된다. 아까 생성했던 서브넷 중에 외부와 연결하려던 서브넷은 public이었다. 이 서브넷을 추가하면 외부에서 생성된 인스턴스까지 연결을 위한 모든 환경 구성이 끝난다.

새로 생성한 라우팅 테이블을 선택하고 아래 정보창에서 서브넷 연결을 선택한다.

서브넷 연결 편집을 클릭하고 편집창으로 들어오면 어떤 서브넷을 추가할 건지 선택하게 된다. 여기서 이름을 참고해서 public으로 생성한 서브넷을 선택하고 저장을 누른다.

이제 모든 설정이 완료됐다.

EC2 인스턴스 생성

환경 구성이 끝났으니 실제 EC2 인스턴스를 생성해 가상 네트워크를 통해 외부에서 접속이 가능한지 확인해보자. 인스턴스를 생성하는 과정에서 생성한 VPC와 서브넷을 고르는 창이 있으니 잘 보고 확인하도록 한다.

AWS console에서 EC2 선택

VPC와 마찬가지로 서비스창에서 혹은 검색을 통해서 EC2를 선택한다.

인스턴스 생성을 위해 인스턴스 탭에 들어가서 인스턴스 시작을 클릭한다.

이미지 선택

인스턴스 생성의 첫 단계로 기본이 될 이미지(AMI)를 선택한다. 여기서는 프리 티어로 사용이 가능한 Amazon Linux 이미지를 선택하도록 한다.

인스턴스 유형 선택

두번째 단계로 인스턴스 유형을 선택하게 되는데 여깃 프리 티어로 사용이 가능한 t2.micro를 선택하고 다음:인스턴스 세부 정보 구성을 클릭한다.

인스턴스 세부 정보 구성

세번째 단계에서 다른건 기본값으로 놔두고

  • VPC - 생성한 VPC
  • 서브넷 - 아까 생성한 서브넷 중에서 public
  • public IP 자동할당 - 활성화

상태로 선택하고 다음: 스토리지 추가를 클릭한다.

스토리지 추가

네번째 단계는 HDD나 SDD를 선택하는 부분이므로 다음: 태그 추가를 클릭해 넘어간다.

태그 추가

다섯번째 단계는 인스턴스에 태그를 추가하는 단계이므로 역시 다음: 보안 그룹 추가를 클릭해 넘어간다.

보안 그룹 구성

여섯번째 단계에서는 방화벽과 같이 허용할 IP와 포트 범위 등을 지정한다. 여기서는 아직 추가할게 없음으로 SSH 접속을 위한 기본값만 확인하고 보안 그룹의 이름과 설명을 변경해 알아볼 수 있도록 한다음 검토 및 시작을 클릭한다.

인스턴스 시작 검토

일곱번째 단계는 인스턴스 생성의 마지막 단계로 지금까지 선택한 옵션을 확인한다. 선택한 옵션을 확인하고 시작하기를 클릭한다.

키 페어 선택

인스턴스를 시작하기 위해서 먼저 SSH연결을 위한 키 페어를 선택해야한다.

팝업창으로 키 페이를 선택하게 팝업창이 뜰 것이다. 여기서 새 키 페어 생성를 선택하고 키페어의 이름을 준 뒤 키 페어 다운로드를 클릭한다. 키 페어가 다운로드 되면 .pem확장자 파일이 생긴다. 그럼 인스턴스 시작을 클릭한다.

인스턴스 시작

인스턴스 생성이 진행되고 나면 아래와 같이 시작중이라는 정보가 뜬다.

확인하고 인스턴스 보기를 클릭한다.

인스턴스가 제대로 실행됐다면 아래와 같은 화면을 볼 수 있다.

터미널 연결

IP 확인

SSH 연결을 위한 IP정보를 확인한다.

인스턴스를 선택하고 아래 정보창을 봐도 있고 위쪽에 연결을 클릭해도 확인할 수 있다.

MobaXterm SSH 연결

이제 환경 구성을 모두 마쳤으니 MobaXterm(SSH 접속도구)을 이용해 서버에 붙어보자.

MobaXterm을 실행해 왼쪽위에 Session을 클릭한다.

그럼 Session settings 창이 뜨는데 여기에 먼저 'SSH'를 클릭해 아래와 같이 정보를 주고 'OK'를 누른다.

  • Basic SSH settings
    • Remote host : 퍼블릭 IPv4 주소
    • Specify username : ec2-user (체크박스 클릭)
  • Advanced SSh settings
    • Use private key : AWS에서 생성한 .pem키 파일

이제 SSH로 터미널에 붙어 명령어를 입력할 수 있게 됐다.

SFTP도 마찬가지로 public IP와 Username을 주면 되는데 ftp에서는 ssh처럼 Username을 나중에 입력할 수 없기때문에 Username을 주지 않으면 연결이 실패한다.

연결되면 파일을 옮길 수 있게된다.