Cloud Wave

AWS를 이용하여 환경을 구축해보며 네트워크에 대해 알아보자!

eunmiee 2024. 1. 25. 23:35

시작하며


안녕하세요!

이번주는 벌써 cloudwave 5주차에 접어들었네요..

이제 마지막 기본 교육과정이 끝나가면서 프로젝트 기간이 다가오고 있답니다..

근황을 말씀드리자면, 4주차 기간동안 AWS를 활용하여 public cloud에 대한 교육을 마치고

오늘부터 IaC를 통한 클라우드 인프라 구축에 대해 배우고 있습니다.

 

오늘의 포스팅은 AWS를 활용하여 기본적인 인프라 환경을 구축해보려고 합니다.

 

오늘 포스팅 주제를 선정한 이유에 대해 설명해보자면..

IaC 수업 첫날 인프라 환경을 구축하는 상황이 있었는데 어떻게 해야하는건지 당황하는 저의 모습을 보며

"오늘은 꼭 블로그에 정리해서 머리에 새겨야겠다!"라는 생각이 들더라구요..

 

이를 통해 네트워크에 대한 기초적인 지식도 함께 알아보도록 할게요!

 

그럼 오늘의 포스팅 시작하겠습니다.

 

어김없이 오늘도 공부짤로 즐겁게 시작해보도록 하죠!

start!

 

preview


이번 포스팅에서 구성해야 할 환경에 대해 그림으로 표현해보았습니다.

해당 환경을 구성해보면서 기본적인 네트워크 지식에 대해서 알아보고 AWS 환경을 구축하는 과정에 대해 알아보도록 하겠습니다.

 

 

참고로 해당 환경은 IaC 교육과정에서 구축하는 것이기 때문에 환경 구성 이외에 다른 패키지 설치와 관련해서는 ansible에 대한 내용이 포함될 수 있습니다. 오늘 포스팅에서는 다루지 않을 내용이니 참고 부탁드립니다!

 

AWS Cloud Network Service


해당 실습을 위해서는 우선 네트워크에 대한 기본적인 지식을 채우고 진행해야겠죠?

하나씩 살펴본 뒤 실습을 진행하도록 합시다!

01 Amazon Virtual Private Cloud(VPC)


다른 네트워크 환경과 격리된 사용자가 정의한 가상의 사설 네트워크입니다!

사용자가 IP 대역을 CIDR Block 단위로 할당하여 네트워크를 구성하며,

CIDR Block는 최소 /28 ~ 최대 /16 범위 내로 지정할 수 있습니다.

 

VPC는 최대 5개까지 생성이 가능하며, 생성 후 Region 내 Availavility Zone을 자유롭게 지정하여 사용할 수 있습니다.

AWS 계정에서 처음 접속할 경우 default VPC가 할당되어 있는 것을 확인할 수 있는데, 우리가 VPC를 생성하지 않고 인스턴스를 생성할 때, 해당 네트워크 영역에 생성되는 것이라고 볼 수 있습니다.

 

02 Public & Private Subnet


Subnet이란?

Amazon VPC 네트워크 내부에 더욱 세분화한 네트워크로 VPC에서 생성한 CIDR 범위 내 IP 대역을 사용하여 할당 가능합니다.

Subnet을 생성할 때, 가용영역을 지정하게 되며,

Routing Table 리소스를 이용해 Public과 Private Subnet으로 구분하여 사용할 수 있습니다.

 

public subnet

  • 외부에서 접근 가능한 네트워크 영역(인터넷망)

private subnet

  • 내/외부에서 모두 접근 불가능한 네트워크 영역(내부망)
  • private subnet 내부 리소스가 외부로 통신하는 트래픽만 허용 가능

 

그렇다면 private 서버에 접속하기 위해서는 어떻게 해야할까요?

 

public subnet을 통해 접속하는 방법이 있습니다.

외부에서 public subnet에 접속한 뒤, 해당 서브넷 영역은 같은 네트워크 상에 있기 때문에

사설 IP로 private 서브넷 영역에 접속을 할 수 있게 됩니다.

다음과 같이 외부와 내부 네트워크 사이에서 게이트웨이 역할을 하는 호스트를 bastion host라고 말합니다.

위의 그림에서는 controller가 그러한 역할을 하는 것이죠 :)

 

 

03 Internet Gateway & Nat Gateway


Internet Gateway란?

VPC 내/외부 양방향 통신이 가능한 환경을 구성할 때 사용하는 것으로,

내/외부 통신이 가능해야하는 public subnet 구성 시 활용이 됩니다.

Internet Gateway는 VPC에 할당하며, 1개만 할당 가능합니다.

 

IGW는 어떻게 설정하는 건가요?

Public subnet의 Routing Table에 Internet Gateway 경로를 지정하여 구성해주면 됩니다.

 

그렇다면 우리가 지금 구성하고 있는 환경에서 어떤 서브넷과 연결해주어야 할까요?

바로 controller subnet과 연결을 해주면 되는 것이죠!

 

 

추가적으로, 해당 실습에 나오는 개념은 아니지만 추가적으로 NAT Gateway와 함께 비교하며 설명해보도록 하겠습니다.

Nat Gateway란?

VPC 내부 환경에서 외부 환경과 단방향 통신이 가능한 환경 구성 시 사용됩니다.

내부에서 외부환경과 단방향 통신이 가능해야하는 Private Subnet 구성을 할 때 활용합니다.

private subnet의 Routing Table에 Nat Gateway 경로를 지정하여 구성합니다.

Nat Gateway는 서브넷에 할당하여 생성하고 1개이상 생성이 가능하며, public subnet에 생성해야 외부와 통신이 가능합니다.

 

혹시라도 NAT에 대해 더 궁금하시다면 해당 포스팅을 참고해주세요!

2024.01.19 - [Cloud Wave] - 사설 IP로 인터넷을 접속하려면 어떻게 하는걸까? NAT란?(with AWS)

 

사설 IP로 인터넷을 접속하려면 어떻게 하는걸까? NAT란?(with AWS)

안녕하세요! 오늘의 포스팅은 네트워크와 관련하여 준비를 해보았는데요. 최근 AWS에 대해서 공부를 시작했는데 public subnet, private subet 환경을 구성하면서 private subnet의 경우 인터넷과 통신을 하

wldmsal.tistory.com

 

04 Routing Table


VPC Local Routing Table

  • 네트워크 트래픽 전달 경로에 대한 정보를 입력하는 리소스를 의미한다.
  • Routing Table은 여러개 생성할 수 있고, Subnet을 할당하여 사용합니다.
  • 여기서 생각해야할 부분은 한개의 라우팅 테이블은 여러개의 서브넷에 할당할 수 있지만,
  • 하나의 서브넷에는 하나의 라우팅 테이블만 참조가 가능하다는 것을 기억해주세요!
  • 서브넷 내부 리소스는 할당된 라우팅 테이블의 정보를 기준으로 트래픽이 전달됩니다.

 

 

실습


자, 이제 개념도 어느정도 공부를 했으니 실습을 진행해보도록 하겠습니다!

실습 진행 순서는 다음과 같습니다.


 

1. VPC 생성

2. subnet 생성

3. IGW 생성 및 설정

4. Routing Table 설정

5. 인스턴스 생성

 

 

VPC 생성


 

다음과 같이 vpc명과 CIDR 대역을 설정해 주신 후 vpc를 생성해줍니다.

자, 이렇게 하면 VPC 생성은 끝입니다!

 

간단하죠??!?

 

서브넷 생성


우선은 만들었던 my-vpc를 선택하여 해당 vpc에 서브넷을 생성해보도록 하겠습니다.

그림에 나와있는 것처럼 172.16.0.0/24 대역에 해당하는 네트워크로 설정을 해주겠습니다.

가용영역은 a로 선택한 뒤, 서브넷을 생성해 줍니다.

 

자, 이렇게 하면 서브넷 생성이 완료가 됩니다.

 

Internet Gateway 생성

Internet Gateway는 다음과 같이 이름을 설정하여 생성을 해줍니다.

 

여기서 기억해야할 점! IGW는 VPC 라우팅 테이블에 연결을 해주어야만 내/외부가 통신이 가능하다는 점 기억하시죠?

그래서 바로 라우팅 테이블을 연결하러 가봅시다!

 

Routing Table 설정


우선 VPC 설정 탭으로 다시 돌아가주세요!

생성된 my-vpc의 체크박스를 누르고 세부정보에 있는 기본 라우팅테이블에 접속합니다!

 

 

접속한 라우팅 테이블에서 다시 해당 라우팅 테이블을 체크하고, 라우팅 탭에서 라우팅 편집 버튼을 눌러 IGW를 연결시켜 줍니다!

다음과 같이 인터넷 게이트웨이를 라우팅 설정해줍니다.

마지막으로 다음과 같이 서브넷까지 연결해주면 끝! 입니다.

 

지금까지 과정을 통해 VPC에 IGW를 설정함으로써 내부와 외부사이에 통신이 가능해졌습니다!

 

이제부터 인스턴스를 생성해주고, 생성한 EC2에 접속하여 public subnet(controller)에서 private subnet에 접속할 수 있도록 설정해주겠습니다!

 

인스턴스 생성하기


인스턴스 생성 조건은 다음과 같습니다.


인스턴스의 경우, 이름과 OS를 설정해준 뒤 키페어를 등록해줍니다.

네트워크의 경우, 네트워크 설정 -> 편집 버튼을 눌러 정보를 등록해줍니다.

 

해당 사항에서 주의할 점은, 퍼블릭 IP 자동할당에서 control 인스턴스를 제외하고 나머지는 비활성화로 생성해주시면 됩니다.

이를 통해 public IP의 생성 여부가 달라지는데, control을 제외한 나머지 서버들은 private 영역이므로 public IP를 할당해주지 않아도 됩니다.

 

 

해당 설정 아래 고급 네트워크 구성에서 직접 해당 서브넷 범위 내에 IP를 직접 할당해줄 수 있습니다.

위의 조건과 같이 설정해줍니다.

 

나머지 3개의 인스턴스도 조건에 맞추어 생성해주면 됩니다!

자, 이렇게 총 4개의 인스턴스가 생성된 것을 확인할 수 있습니다.

 

이제부터 터미널에 접속하여 key pair를 통해 접속할 수 있습니다.

명령어는 다음과 같습니다.

ssh -i [key pair path] ec2-user@[cotrol ec2의 public IP]

 

다음과 같은 명령어로 접속해보면 제대로 접속이 되는 것을 확인하실 수 있습니다.

 

만약, 권한 문제로 인해 접속이 안된다면 그것은 keypair에 너무 많은 권한을 주었기 때문에 deny 된 것이므로 권한을 수정해줍니다.

명령어는 다음과 같습니다.

chmod 400 [keypair path]

 

나머지 private subnet에 대한 접속 또한 해당 인스턴스에 접속 후 ssh 를 통해 접속이 가능합니다.

scp를 이용하여 keypair를 control 인스턴스에 복사해주신 뒤, private subnet에 동일한 방법으로 접속하시면 됩니다.

드디어 접속에 성공을 했네요!!(야호)

 

여기까지 완료한 상태에서 cotrol은 이제 servera, serverb, serverc를 제어하기 위해 접근을 할 수 있어야합니다.

그럼 어떻게 해야할까요?

연결 설정과 관련해서는 ssh를 설정해주어야하는데요. 여기서부터는 비대칭키에 대한 지식이 필요해요..

이부분에 대해서는 이후 포스팅에서 다루도록 하겠습니다!

 

우선, 아주 간단히 말하자면 비대칭키는 말 그래도 대칭이 아닌 키를 기준으로 인증을 할 수 있는 방식인데요!

공개키와 비밀키가 존재하며, 공개키는 비밀키로, 비밀키는 공개키로 인증을 할 수 있습니다. 그래서 비대칭키 방식이라고 불리는 것이고요.

대략 감이 오시나요??

 

그럼 가장먼저 비밀키와 공개키가 있어야겠죠?

생성을 해보도록 하겠습니다.

$ ssh-keygen -t rsa -b 4069 -C {ansible-user@example.com} -N ""

 

다음 명령어를 입력하여 키를 생성할 수 있습니다.


마무리

이렇게 오늘 네트워크 환경을 구축해보고 접속까지 해봤는데요.

다들 이해가 잘 되셨나요?

 

혹시라도 중간에 틀린 내용이나 궁금한 점이 있다면 댓글로 남겨주시면 감사하겠습니다.

 

이상으로 오늘의 포스팅을 마치도록 하겠습니다.

감사합니다😊