알듯말듯... 어려운 AWS... 하지만 이걸 모르면 취업할 수 없다는 것을 여실히 느낀 한 해이기 때문에... 이번에 배우는 김에 열심히 개념 잡고 정리해보기로!!
Amazon Virtual Private Cloud, AWS에서 제공하는 가상 네트워킹 서비스
👉 사용자가 AWS 클라우드 내에서 논리적으로 분리된 네트워크를 생성하고 제어할 수 있게 한다! (사용자 전용)
Amazon VPC는 리전마다 독립적으로 분리되어 있고,
리전 안에 다수의 VPC를 생성할 수 있고, 각 VPC 역시 독립적으로 분리되어 있다.
서브넷은 VPC 내의 IP 주소 범위다. 이미 VPC도 논리적으로 분리된 네트워크이지만, 서브넷은 그 큰 네트워크(VPC) 안의 작은 네트워크 세그먼트인 셈이다.
퍼블릭 서브넷: 인터넷 게이트웨이를 통해 외부 인터넷과 통신할 수 있는 서브넷
🌟 VPC가 인터넷과 통신하려면 인터넷 게이트웨이를 생성해주고 VPC에 연결을 해줘야 한다!
프라이빗 서브넷: 인터넷과 직접 연결 X! 주로 보안이 필요한 DB나 애플리케이션 서버를 배치하는 데 사용함
VPC 구성 실습을 하면서 CIDR 블록을... 뭔가 알 수 없는 숫자들로 지정을 하라는데 하면서도 이것이 대체 무엇인가... 궁금했다. 하지만 이 부분은 공부를 해도 어려운 부분일 것으로 예상 ^^... 잘 이해하려면 네트워크 지식이 필요하다.
Classless Inter-Domain Routing 블록, VPC를 생성할 때 IP 주소 범위를 지정하는 것
간단하게 요약하자면 주소 범위를 말하는 것이다. 하지만 어렵죠?
ex. CIDR 블록 10.0.0.0/16
을 설명해보자!
10.0.0.0은 네트워크의 시작 주소이다.
/16은 네트워크 접두사 길이를 비트 단위로 나타낸 것이다.
10.0.0.0
은 이진수로 00001010.00000000.00000000.00000000
이 된다./16
:10.0.0.0/16
을 지정하면 해당 VPC 내에서 10.0.0.0부터 10.0.255.255까지의 IP 주소를 사용할 수 있다. 여기에 해당하는 범위 내에서 서브넷을 생성하고 EC2 인스턴스에 IP를 할당할 수 있다. 10.0.1.0/24
10.0.2.0/24
10.0.3.0/24
등등 10.0.0.0/16
: 65,536개의 IP주소10.0.0.0/24
: 256개의 IP 주소 CIDR 블록을 사용하면 네트워크 주소 공간을 효율적으로 관리하고, 필요에 따라서 유연하게 서브넷을 구성할 수 있다.
* 정리 - VPC에서 CIDR을 사용하는 이유
네트워크 구조를 체계적으로 설계하고 IP 주소를 효율적으로 할당할 수 있다!
VPC 내 트래픽 경로를 정의하는 테이블, 각 서브넷에 연결되어 있다
👉 다른 네트워크와 연결하기 위해 사용한다!
이거도 그냥 실습할 때는 몰랐는데 이론 보니까 어렵네... 그래서 책을 펼쳤다!
Amazon VPC를 생성하면 기본적으로 네트워크 경로를 확인하여 트래픽을 전달하는 목적의 가상 라우터가 생성된다. 가상 라우터는 기본 라우팅 테이블을 보유하고 있으며, 라우팅 테이블을 통해서 네트워크 경로를 식별할 수 있다.
당연히 기본 라우팅 테이블 외에 새로운 라우팅 테이블을 생성할 수도 있고, 라우트를 추가할 수도 있으며(ex. 게이트웨이), 서브넷을 연결할 수도 있다.
👉 네트워크 트래픽이 어디로 전달될지 제어한다!
VPC의 퍼블릭 서브넷이 외부 인터넷과 연결될 수 있도록 지원하는 게이트웨이
프라이빗 서브넷 내 리소스가 인터넷에 액세스 할 수 있도록 하는 게이트웨이
외부로의 아웃바운드 통신은 가능하지만, 외부에서 프라이빗 서브넷으로의 접근은 차단한다!
정리:
👉 VPC 자체가 프라이빗 클라우드 네트워크 환경이기 때문에 외부 인터넷 구간과 연결하려면 인터넷 게이트웨이를 생성해야 한다
👉 프라이빗 서브넷에서 외부 인터넷으로 통신하기 위해서는 NAT 게이트웨이를 통해서 퍼블릭 IP 주소로 변환한 후 인터넷 게이트웨이를 통해야 한다
VPC의 서브넷 수준에서 트래픽을 제어하는 방화벽
👉 IP 주소 범위에 대해 허용하거나 차단할 수 있다
VPC 내에서 인스턴스 수준의 방화벽 역할
👉 인스턴스에 대해 허용되는 인바운드 및 아웃바운드 트래픽 규칙을 정의할 수 있다
서로 다른 VPC간의 트래픽을 프라이빗 IP 주소를 사용하여 직접 연결할 수 있다
👉 다른 AWS 계정에 속한 VPC 간의 안전한 통신을 구축할 수 있다
아까는 허겁지겁 따라가기 바빴던 실습을... 이제 좀 뭐가 뭐인지 이해한 것 같다. 그래서 대충... 흐름이 이렇구나~ 조금 쉬운 말로 적어보면서 이해해보기...!
1. VPC 및 서브넷 설정
먼저 VPC를 생성해준다! 서울 리전 안에 나만의 VPC 네트워크를 만들어주는 거임. 그리고 CIDR 블럭으로 네트워크 범위를 정해준다. (10.0.0.0/16
)
그리고 인터넷과 통신하기 위해서 퍼블릭 서브넷을 생성해준다. VPC로는 방금 생성한 나의 VPC를 선택해서 그 안에 서브넷을 잘게 구성하는 거다. CIDR 블럭은 VPC보다 적은 범위로 설정해준다. (10.0.0.0/24
)
왜 가용영역을 선택하는 거지?
2. 인터넷 게이트웨이 연결
인터넷 게이트웨이는?! 위에서 퍼블릭 서브넷과 인터넷을 연결할 수 있게 해주기 위해서라고 밝혔다. VPC 서비스에서 인터넷 게이트웨이를 생성해 준다.
생성한 뒤 VPC에 연결해준다.
그리고 퍼블릭 서브넷과 연결된 라우팅 테이블에서 라우트를 편집해 인터넷 게이트웨이 라우트를 추가해준다.
3. 보안 그룹 생성
보안 그룹을 생성한 후 내가 만든 VPC를 선택해준다.
인바운드 규칙을 추가해줘야! SSH와 HTTP 통신이 가능해진다.
* 아웃바운드 규칙도 자동으로 생성되는게 있는데 이거 없애면 안됨. 들어오는 연결이 있으면 나가는 연결도 있어야 하므로!
4. EC2 인스턴스 생성
인스턴스를 시작해준다. Amazon Linux2 AMI를 선택하고 네트워크에서 생성한 VPC 선택 후 서브넷은 퍼블릭을 선택한다. 퍼블릭 IP 자동할당도 활성화 해준다.
보안그룹은 방금 생성한 보안 그룹을 택한다.
키 페어도 기존에 사용하던 것을 사용하거나 새로운 키 페어를 생성할 수 있다.
이런식의 설정을 마치고 인스턴스를 시작하면 통신 가능~!
5. EC2 인스턴스에 연결 및 테스트
SSH 연결은 지난번에 했던 명령어를 사용하면 되고, 잘... 접속하길...
본 포스팅은 글로벌소프트웨어캠퍼스와 교보DTS가 함께 진행하는 챌린지입니다.