AWS VPC(Virtual Private Cloud)란?
사용자가 정의한 가상 네트워크이며, 애플리케이션 성격에 맞게 subnet을 구성할 수 있다.
예를 들면 VPC 내에 public subnet에는 웹서버를, private subent에는 DB를 구축하여 사용할 수 도 있다.
VPC 생성
VPC는 하나의 Region 안에 생성되고 서로 다른 AZ에서도 VPC를 공유할 수 있으며, 여러개의 subnet으로 구성된다.
VPC와 subnet을 생성할 때는 IPv4 주소 범위를 블록 형태로 지정하는데,
이때 사용하는 것이 IPv4 CIDR(Classless Inter-Domain Routing) 표기법이다.
CIDR에 관해서는 https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation 를 참고하고,
고정 비트로 사용 가능한 범위는 16~28비트이다.
VPC 생성을 위해 AWS VPC 콘솔에 접속한다. 좌측 탭에서 [VPC]를 선택하면 초기 사용자에 대해서는 기본 vpc만 출력된다.
VPC와 함께 subnet, 라우팅테이블, NAT 게이트웨이를 만들 수 있으며, 미리 보기를 통해 생성되는 구조를 확인할 수 있다.
생성되는 리소스 별로 메뉴얼한 설정은 별도로 해야된다.
public으로 사용할 subnet에 대해서는 <서브넷 설정 편집> -> <자동 할당 IP 설정> 에서 퍼블릭 IPv4 주소 자동 할당 활성화를 체크한다.
VPC와 subnet 생성 후에는 CIDR을 변경할 수 없으므로, 만약 각 서브넷에 CIDR을 설정하고싶다면 개별 리소스 별로 생성해야한다.
인터넷 게이트웨이 연결
생성된 인터넷 게이트웨이가 VPC에 정상적으로 연결되었는지 확인해보자. 생성한 vpc-id와 일치한다면 정상적으로 등록된 것이다.
라우팅 테이블 생성 및 연결
외부 네트워크와 VPC 네트워크 간의 라우팅 규칙을 설정하기 위해서 라우팅 테이블을 생성한다.
라우팅 테이블 생성 후 인터넷이 가능하도록 인터넷 게이트웨이를 추가한다. (인터넷 게이트웨이 - VPC)
public subnet에도 동일하게 인터넷이 가능하도록 게이트웨이를 추가한다. (인터넷 게이트웨이 - VPC - public subnet)
Public subnet 인터넷 테스트
EC2 인스턴스를 생성하고, SSH를 통해서 접근한다. 만약 SSH를 통해 정상적으로 접근 가능하다면, 인터넷 게이트웨이가 정상적으로 설정된 것이다.
VPC를 도쿄리전으로 설정하여, EC2도 도쿄리전으로 생성해서 테스트하였다.
EC2 생성시 vpc와 subnet을 알맞게 설정해야하며, 생성 후 정상적으로 접속 가능하다면 오른쪽과 같이 화면에 출력될 것이다.
EC2에 apache를 설치하여 웹서버 기능을 테스트해보자.
sudo apt update
sudo apt upgrade
sudo reboot
#### 1~2분 후 재접속 ####
sudo apt install apcache2
sudo systemctl status apache2
curl localhost:80
curl 명령어 이후 정상적으로 html 문서가 출력된다면 아파치가 제대로 동작하고 있는 중이다.
하지만 외부에서 EC2의 IP를 통해 접속하면 보안그룹의 인바운드 규칙으로 인해 제대로 접속이 안될 것이다.
보안그룹 포트 설정
EC2를 최초로 생성 시에 SSH(22번 포트)는 Any open으로 되어있다. 이로 인해서 인증서만 있다면 접근 가능하지만, HTTP(80번 포트)는 열려있지 않기 때문에 보안그룹에서 인바운드 규칙 편집이 필요하다.
보안그룹 설정은 EC 콘솔 좌측 탭에서 [네트워크 및 보안] -> [보안그룹]에서 설정 가능하며, EC2 생성시 설정한 보안 그룹을 수정하면된다. 인바운드 규칙 편집에서 유형을 HTTP, 소스를 0.0.0.0/0을 추가하면 모든 사용자가 해당 EC2의 80번 포트로 접근 가능하다.
규칙 설정 후 해당 EC2에 접근하면 정상적으로 아파치 초기 페이지가 출력된다.
Private Instance 인터넷 설정
private instance의 경우 외부에 ping을 보내더라도 인터넷이 되지 않아 정상적으로 응답을 받을 수 없다.
private instance에서 인터넷을 사용하고 싶다면 NAT 게이트웨이를 경유하여 인터넷을 사용할 수 있다.
NAT 게이트웨이 생성은 VPC 콘솔 좌측 탭에서 [NAT 게이트웨이]를 통해 수행할 수 있다.
생성에 필요한 정보는 <이름>, <서브넷>, <탄력적 IP 할당 유무> 이며, 서브넷은 public 서브넷을 선택한다. ( public 서브넷 - NAT 게이트웨이)
생성 후에는 프라이빗 라우팅 테이블 후 NAT 게이트웨이를 추가한다. ( public 서브넷 - NAT 게이트웨이 - private 서브넷 )
이후에는 정상적으로 private instance에서 인터넷 망에 접근 가능하게 된다.
public/private EC2를 생성하는 과정에 대해서는 별도로 정리 할 예정이다.
( chmod 600 key / 기본 계정 ubuntu / 키체인 추가 )
참고 문서
https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/what-is-amazon-vpc.html
Amazon VPC란 무엇인가? - Amazon Virtual Private Cloud
이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.
docs.aws.amazon.com
https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/configure-your-vpc.html#vpc-subnet-basics
Virtual Private Cloud(VPC) - Amazon Virtual Private Cloud
Virtual Private Cloud(VPC) Virtual Private Cloud(VPC)는 사용자의 AWS 계정 전용 가상 네트워크입니다. VPC는 AWS 클라우드에서 다른 가상 네트워크와 논리적으로 분리되어 있습니다. Amazon EC2 인스턴스 같은 AWS
docs.aws.amazon.com