본문 바로가기

Cloud/Cloud

[AWS] 네트워크 구성 실습 (VPC, Subnet, Routing Table, NACL, Security Group)

 

지난 번 AWS 네트워크의 개념을 정리해보았다.

개념도 중요하지만 실습이 가장 중요하니, AWS 네트워크 복습할 겸 메모해본다.

 

* AWS 메뉴 화면은 주기적으로 바뀌기 때문에, 화면과 세부적인게 달라지는 경우가 있다. (버튼 위치, 옵션 용어 등)

 

 

 

AWS 콘솔 홈

 

자주 가는 서비스나 최근 방문한 서비스 등이 보일텐데

위젯처럼 내가 위치를 옮기고 조절할 수 있다.

 

우측 상단에 리전 위치(서울)를 꼭 확인한 뒤, 검색 창에 VPC 를 검색해서 들어가보자.

네트워크가 우선 구성되어 있어야 다른 것들을 이어서 할 수 있다.

 

 

 

 

VPC 대시보드 메뉴에서는

VPC 뿐 아니라 네트워크 구성에 필요한 서브넷, 라우팅 테이블 등의 리소스들이 보인다.

 

VPC, EC2, IAM 등 여러 메뉴들을 AWS에서는 리소스라고 부르면 된다.

리소스 간 통신에 필요한 가장 대표적인 네트워크가 VPC !

 

우측 상단에 [VPC 생성] 클릭하면 생성할 수 있다.

 

 

 

 

 

VPC에서는 서브넷을 지정해줄 수 있는 CIDR 블록을 잡아준다. (/16 ~ /28 사이)

해당 CIDR 블록 내 실제 IP 대역을 할당할 서브넷을 이어 만들어 나가면 된다.

 

위에 이름 태그는 선택사항으로 나와 있지만, 필수로 해주자 !

태그 규칙(네이밍 룰)이 있으면 더 좋을 듯

 

 

 

 

 

VPC를 생성하거나 선택하면, 사진처럼 세부 정보가 보인다.

(내부 정보라 모자이크가 좀 많음.. ㅋㅋ)

 

AWS는 리소스마다 ID가 부여되는 방식인데, 꽤 복잡해서 따로 메모해 두거나, Tag 를 지정해줄 수 있다.

우측 위에 [작업] 눌러 보면,

 

 

 

 

사진처럼 뜨는데 [VPC 설정 편집] 으로 들어가보자 ~~

 

 

 

[DNS 호스트 이름 활성화] 가 기본 체크되어 있지 않은데, 체크해주자.

외부용 EC2 인스턴스 생성 시, 퍼블릭 IP 생성하면서 DNS도 같이 제공해준다.

 

그럼 기본적인 VPC 생성은 끝났다.

ㅎㅎ 처음에 실수로 캡쳐를 안했는데, 저 때 이후로 콘솔 테마 화면을 바꿔놔서 화면이 다르다 !

 

 

 

 

이어서, 이번엔 [서브넷] 메뉴에 들어가, 서브넷을 생성해줘야 한다.

우측 상단의 [서브넷 생성] 클릭

 

 

 

 

그럼 어떤 VPC 에 서브넷을 생성할지 선택해야 한다. (VPC가 여러개일 수 있으니)

 

지금은 VPC가 1개인 상황이므로 선택 !

 

 

 

 

 

서브넷에 대해 세부 설정을 잡아주면 된다.

서브넷 이름, 어떤 AZ에 생성해줄지, VPC 내에서 어떤 대역을 할당해줄지.

 

 

 

 

 

아래에 서브넷 추가를 눌러서, 1개의 정보를 더 적어주되 AZ를 다른 곳으로 선택해준다.AWS는 이중화, 재해복구를 위해 기본 AZ 분산 배치가 권고 !

 

서브넷 대역도 다르게 줘야 한다.여기까지 작성해주고, 생성 완료 눌러주자.

 

 

 

 

 

 생성한 서브넷 2개를 각각 선택해서, [작업] 메뉴의 [서브넷 설정 편집]에 들어가보자.

 

 

 

 [퍼블릭 IPv4 주소 자동 할당 활성화] 옵션이 있는데, 기본 활성화가 되어 있지 않다.

 

만약, 인터넷 웹 서비스용 EC2에게 할당할 서브넷이 필요하다면 해당 옵션에 체크해줘야 한다 !

WAS나 DB처럼 내부용 EC2에게 줄 서브넷이라면 체크할 필요 없다.

 

처음엔 실수로 EC2 먼저 생성해준 뒤 이 옵션을 체크했더니, 이미 IP가 할당되어 있어 그런지 다시 만들어줘야 했다.. ㅎ

 

 

 

 

 

인터넷 웹 서비스용 EC2를 만든다고 가정한다면,

인터넷 게이트웨이를 생성해서 VPC에 연결해주고 라우팅을 잡아줘야 한다.

 

VPC 대시보드의 [인터넷 게이트웨이] 메뉴 선택 !

 

 

 

 

인터넷 게이트웨이는 특별히 세부 옵션을 설정해줄게 없다.

 

 

 

 

 

생성된 인터넷 게이트웨이 !

 

위에 친절하게 설명 문구가 나온다 ㅋㅋ

'이제 VPC에 연결하여 VPC가 인터넷과 통신하도록 할 수 있습니다.' ~

 

 

 

 

(VPC에 연결) 버튼을 누르면, 만들어둔 VPC를 선택해서 연결시킬 수 있다.

 

 

 

 

 

이번엔 VPC 대시보드의 [라우팅 테이블] 메뉴로 들어가보자.

 

라우팅 테이블은 직접 생성할 수 있지만,

VPC를 최초 생성하면 기본 라우팅 테이블이 하나 부여된다.

 

선택 후, [작업] 메뉴의 [라우팅 편집]을 들어가보자.

 

 

 

 

편집하면 '라우팅 추가', '제거' 등의 버튼으로 라우팅 정책을 원하는대로 작성할 수 있다.

 

실습 환경이니

0.0.0.0/16 에 대해, 인터넷 통신이 가능하도록 [인터넷 게이트웨이] 를 선택하면 된다.

 

지금 만든 인터넷 게이트웨이는 1개라서, 목록에 1개만 뜬다.

 

 

 

 

 

 

라우팅 정책을 추가하면, 이제 아까 만든 웹 서비스용 서브넷 리소스를 라우팅에 추가해줘야 한다.

 

수정된 라우팅 테이블 리소스에 들어가서,

[서브넷 연결] 탭에 들어가면 [서브넷 연결 편집] 버튼이 있다.

 

지금은 아무것도 없어서,

우리가 만든 VPC가 인터넷용 게이트웨이 사용하는 라우팅 정책이 있지만 EC2에게 할당할 서브넷이 연결되지 않았다.

 

 

 

 

 

서브넷 연결 편집에서 아까 만든 2개의 서브넷을 모두 선택한 뒤, (연결 저장) 해주면 된다.

 

 

 

 

 

이제 VPC 메뉴로 들어가서, 해당 VPC를 선택하면

아래와 같이 설정해둔 네트워크 경로가 사진처럼 보인다 !

 

만약 통신이 잘 안되면, 이런 어느 네트워크 구간이 잘못 설정되어 있는지 확인해볼 수 있다ㅎㅎ

 

나는 이런식으로 퍼블릭 서브넷 2개(WEB EC2) / 프라이빗 서브넷 2개(WAS/DB EC2) 를 만들었다.

 

 

 

 

위에까지 작성한건 모두 퍼블릭 서브넷인데, 프라이빗 서브넷도 사실 절차는 다 비슷하다.

 

프라이빗 서브넷은

서브넷 설정 편집에서 [퍼블릭 IPv4 주소 자동 할당 활성화] 를 체크 안하면 되고,

인터넷 게이트웨이를 굳이 생성하지 않으면 된다.

 

 

 

 

프라이빗 서브넷은 인터넷 게이트웨이를 안 만드는 대신, NAT 게이트웨이를 생성해줘야 한다.

 

방법은 똑같은데,

Backend에서도 다른 VPC(혹은 기타 인터넷 서비스, WEB 인스턴스 등)로 통신 필요한 경우가 있다보니

그런 때 쓰이는 리소스라고 보면 된다.

 

[NAT 게이트웨이 생성] 클릭

 

 

 

 

 

나는 영역별로 선택해 주었고, NAT 게이트웨이 생성할 서브넷을 선택해주었다.

연결 유형은 퍼블릭으로 선택해야 인터넷 구간과 통신이 가능하다.

 

 

 

 

 

NAT 게이트웨이는 생성하면 바로 Available 상태가 되지 않고, 한 5분 정도는 기다려야 한다.

인터넷 게이트웨이는 바로 되었던 것 같은데, 생성할 때 서브넷 연결 과정이 없어서 그런가..

 

 

 

 

 

아까와 마찬가지로, 프라이빗용 라우팅 테이블을 생성해야 한다.

 

동일 VPC에 프라이빗용 별도 서브넷을 추가해 준 셈이므로

기존 VPC를 선택해주면 된다.

 

 

 

 

 

아까 라우팅에서 인터넷 게이트웨이를 넣어준 것처럼

똑같이 NAT 게이트웨이 선택해서 저장 ~

 

 

 

 

 

라우팅 테이블의 서브넷 연결 편집에서는

프라이빗용으로 만들어둔 신규 2개의 서브넷을 선택해서 넣어주면 된다 !

 

 

 

 

 

 

다음은 NACL

서브넷 기준으로 Rule 기반 방화벽 규칙을 만들어줄 수 있다. (Stateless 방식)

 

역시 처음에 최초 생성된 기본 NACL 정책이 있는데, 기본 모두 허용이다.

 

 

 

 

 

인바운드 규칙, 아웃바운드 규칙으로 나눠서 선택이 가능한데,

규칙번호를 100 단위로 작성해서 선택/제거가 가능하다.

 

가장 위에 있는게 우선순위라고 보면 된다 ㅎㅎ

 

 

 

 

이런식으로 규칙번호 100, 200 연번으로 작성하는데,

유형은 사진 속 SSH 외에도 HTTP, DNS, 사용자 지정 등이 가능하다.

 

소스 정보엔 서브넷 단위까지 작성해야 한다 !

 

 

 

 

그리고 [서브넷 연결] 탭에서 [서브넷 연결 편집] 버튼을 눌러

해당 룰이 필요한 서브넷 리소스를 선택해 주면 끝

 

 

 

 

 

다음은 보안 그룹(SG)

 

NACL이 서브넷 기준이면, SG는 ENI (인스턴스의 NW I/F) 기준으로 트래픽 제어가 가능하다.

룰의 우선순위가 없고, 거부 Rule이 없다. (만드는 생성은 모두 허용룰, Stateful 방식)

 

 

 

 

보안 그룹 생성하면 이런식으로 인바운드/아웃바운드 규칙을 설정할 수 있다.

NACL, SG 모두 생성 후 편집도 가능하다.

 

둘을 잘 조합하면 완벽한 보안이 되겠지만,

실무하는 선배에게 물어보니 SG만 쓰고 있다고 하드라ㅎㅎ

 

 

 

 

그냥 막 적은 정책인데,

이런식으로 모든 트래픽을 넣고 대상 IP를 넣어주면 된다. (IP/포트 ANY 오픈)

 

소스 IP를 사용자 지정으로 넣어주거나, 대상 리소스를 선택

SG는 리소스별로 관리하는게 좋다. 물론 리소스가 많으면 SG 리소스도 많아지므로 관리를 잘 해야겠다 싶다.. ㅎ

 

 

 

약간 하나의 아키텍처를 그려서 작성하는게 아니라

리소스마다 생성하는 법만 적게 되었는데, 필요할 때 매뉴얼처럼 보면 그래도 유용할 것 같다.

 

흐 요즘 바빠서 포스팅 주기가 긴데... 다음엔 꼭 EC2 쪽으로 다시 포스팅해 볼 예정 !!