[aws] VPC & Public subnet 구축

2021. 1. 31. 13:55✅ STUDY/AWS

안녕하세요! 오늘은 aws 클라우드의 첫 시작 VPC, Public subnet 구축 방법을 같이 알아봅시다!

아래의 그림은 제가 오늘 해볼 클라우드 아키텍쳐입니다.

 

오늘 구축할 Cloud Architecture

 

최대한 쉽게 사진과 함께 가져왔으니 천천히 따라와주세요 :)

 

🙋‍♀️먼저, VPC와 서브넷의 개념에 대해 알고 계시나요?

VPC(Virtual Private Cloud) ❓

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

 

서브넷(subnet)

VPC를 나누는 데 사용됩니다. 보통 VPC를 IP로 구분해 나눈 후, 다중 AZ(가용영역)에 걸쳐 서브넷을 구성합니다.

서브넷은 퍼블릭 서브넷 or 프라이빗 서브넷으로 분류됩니다.

  • 퍼블릭 서브넷: 인터넷에 직접 엑세스 가능한 서브넷

    인터넷 게이트웨이를 VPC에 연결하고, 퍼블릭 서브넷의 라우팅 테이블을 업데이트하여 로컬이 아닌 트래픽을 인터넷 게이트웨이로 보내면, 퍼블릭 서브넷처럼 사용할 수 있습니다!
    누구나 '인터넷'을 통해 접근할 수 있음을 뜻합니다.

  • 프라이빗 서브넷: 인터넷에 직접 액세스 불가능한 서브넷

    보통 회사의 내부 서버나 프로그램들을 프라이빗 서브넷에 위치시킵니다. 그렇기 때문에, 인터넷을 통해 아무나 접근할 수 없습니다.

 

 


VPC에 public subnet을 구축하기 위해서는
VPC 생성 - 서브넷 생성 - 인터넷 게이트웨이 생성 - 퍼블릭 라우팅 테이블 생성 및 설정 순으로 진행해야합니다!

 

VPC 생성

AWS 콘솔에서 [가상 프라이빗 클라우드] - VPC에 들어가 VPC 생성 버튼을 클릭합니다.

 

VPC 생성 버튼 클릭

 

 

VPC 이름은 주로, 이름-리전-vpc로 해줘서 누가 어떤 리전에 무엇을 만들었는지 직관적으로 볼 수 있도록 해주세요!
이후, IPv4 CIDR 블록에 생성할 VPC의 IP대역대를 입력해줍니다.

* IP대역대는 어떻게 아냐구요? 여기서는 조금 어려운 서브넷팅 개념이 들어가서 후에 서브넷팅만 따로 다루는 글을 올리도록 하겠습니다:)
지금은 저와 똑같은 IP대역대를 사용하시는 것을 추천합니다. AWS에서 추천하는 대역대이기 때문입니다.

VPC 생성을 눌러주면, 이후 VPC 목록에서 성공적으로 생성된 VPC를 확인 가능합니다.


Public subnet 생성

AWS 콘솔에서 [서브넷]에 들어가 서브넷 생성 버튼을 클릭합니다.

 

 

 

퍼블릭 서브넷 역할을 하는 서브넷을 각각 b, c 가용영역에 만들어볼게요!
총 2개의 서브넷을 만들게 되겠죠?

서브넷은 VPC안에 나누어진 부분 네트워크라고 했죠?
그렇기 때문에, 어떤 VPC에 속할 것인지 선해주어야 합니다. 아까 만들었던 VPC를 선택해주세요!

서브넷 이름은 주로, 이름-리전-public-subnet-가용영역으로 해줘서 누가 어떤 리전, 어떤 가용영역에 무엇을 만들었는지 직관적으로 볼 수 있도록 해주세요!
이후, 어떤 가용영역에 서브넷을 생성할 것인지 선택해주고, IPv4 CIDR 블록에 생성할 서브넷의 IP대역대를 입력해줍니다.

 

 


Internet Gateway 생성

퍼블릭 서브넷 역할을 하게끔 해주려면, 인터넷으로 서브넷에 접속할 수 있어야한다고 했습니다.
그렇기 때문에, Internet Gateway를 VPC에 연결해 서브넷으로 연결해주면 해당 서브넷이 퍼블릭 서브넷 역할을 할 수 있게 되는
원리입니다.

AWS 콘솔에서 [인터넷 게이트웨이]에 들어가 인터넷 게이트웨이 생성 버튼을 클릭해줍니다.

 

 

인터넷 게이트웨이의 이름도 이름-리전-igw 형식에 맞추어 이름을 설정해줍니다.

 

 

이제, 인터넷 게이트웨이 생성이 되었습니다.
방금 만든 인터넷 게이트웨이를 선택해주고, 작업 메뉴에 VPC 연결을 클릭해줍니다!


Public 전용 라우팅 테이블 생성

이제 퍼블릭 서브넷 전용 라우팅 테이블을 생성해봅시다.

인터넷을 통해 사용자에게 요청이 들어왔을 때, 어디로 가야할지 이정표를 알려주지 않으면 모르기 때문에 통신을 할 수 없습니다.
이 때 사용하는 것이 라우팅 테이블입니다.
라우팅 테이블은 IP 주소에 트래픽 라우팅 경로를 정의하여 Subnet 안팎으로 나가는 트래픽에 대한 라우팅 경로 설정기능 수행합니다. 쉽게 말해, 어떤 요청이 들어왔을 때 사용하는 경로안내 이정표(표지판) 정도로 생각하시면 됩니다.

지금부터 라우팅 테이블을 하나 생성해서, 인터넷 게이트웨이를 통해 들어온 트래픽을 방금 만든 퍼블릭 서브넷으로 연결해줄 것입니다.

AWS 콘솔에서 [라우팅 테이블] - 라우팅 테이블 생성 버튼을 클릭해줍니다.

 

 

라우팅 테이블의 이름과 어떤 VPC에 사용되는 라우팅 테이블인지 설정해줍니다.
이름 형식은 이름-리전-public-route 로 설정해주고, VPC는 오늘 만든 VPC를 선택해줍니다.
그리고 생성 버튼을 클릭해줍니다.
이후, 나온 화면에서 닫기를 클릭해줍니다.

 

 

라우팅 테이블을 생성했으면,
어떤 라우팅을 해줄 것인지 설정해야합니다.

방금 만든 라우팅 테이블을 선택해주고 하단에 라우팅 메뉴의 라우팅 편집 버튼을 클릭합니다.

 

 

현재 기본 설정되어있는 라우팅은 VPC대역대에 있는 IP들은 local, 즉 VPC 내부의 사설IP(private IP)를 서로 알고있게끔 기본 설정되어있는 것입니다.

아래 [라우팅 추가] 버튼을 먼저 눌러준 이후에, 대상에는 0.0.0.0/0을 입력해주고, 대상에 Internet Gateway를 클릭해줍니다.
0.0.0.0/0의 뜻은 IP대역대의 제한이 없다는 것입니다. 즉, 위치 무관 아무나 들어올 수 있음을 의미하는 것입니다.

Internet Gateway를 클릭하면, 현재 VPC에 연결되어있는 인터넷게이트웨이 목록이 뜹니다.
오늘 만들어줬던 인터넷 게이트웨이를 선택해줍니다.
마지막으로 라우팅 저장을 눌러줍니다.

 

 

다시 라우팅 테이블 목록에서, 라우팅 테이블 체크를 해주시고 하단에 서브넷 연결 메뉴의 서브넷 연결 편집 버튼을 클릭합니다.

 

 


서브넷 연결 편집이란 해당 라우팅 테이블이 어떤 서브넷에 적용이 되는건지 설정해주는 곳입니다.
쉽게 말해, 방금 설정한 위치무관으로 설정한 인터넷게이트웨이를 통해 어떤 서브넷들로 접근을 하면 되는지 설정하는 것입니다. 

그렇기 때문에 퍼블릭 서브넷 역할을 할 수 있도록 퍼블릭 역할을 하게될 서브넷들만 선택해주면 됩니다.

 

 


이렇게 해서, VPC와 public subnet안에 있는 인스턴스에 접근하기 위한 기본 설정을 해주었습니다.

다음 편에서는 오늘 구축한 public subnet안에 실제로 EC2 인스턴스를 생성한 후에 Elastic IP를 통해 서버에 접속하는 것까지 다루겠습니다.

 

안녕 😜

 

 

 

 


참고) aws docs
docs.aws.amazon.com/ko_kr/vpc/latest/userguide/what-is-amazon-vpc.html

 

Amazon VPC란 무엇인가? - Amazon Virtual Private Cloud

Amazon VPC란 무엇인가? Amazon Virtual Private Cloud(Amazon VPC)를 이용하면 사용자가 정의한 가상 네트워크로 AWS 리소스를 시작할 수 있습니다. 이 가상 네트워크는 AWS의 확장 가능한 인프라를 사용한다는

docs.aws.amazon.com