Virtual Private Cloud에 대해 알아보자!!
Virtual Private Cloud의 약자로 AWS 상에서 논리적으로 독립된 공간을 제공하여 리소스를 실행할 수 있게 도움
AWS에는 리전 별 Default VPC와 Custom VPC가 존재한다. Default VPC는 각 리전에 기본적으로 하나씩 생성되어 있고, Custom VPC는 리전 별로 최대 5개까지 생성할 수 있다.
네트워크 영역을 나눈 망 클라우드 환경의 VPC에서도 서브넷을 통해 네트워크를 분리하여 나눌 수 있다.
서브넷에 할당한 IP 대역이 10.0.0.0/24라면 10.0.0.0 ~ 10.0.0.255 중에서
주소 | 설명 |
---|---|
10.0.0.0 | 네트워크 주소 |
10.0.0.1 | AWS VPC 가상 라우터 주소 |
10.0.0.2 | AWS DNS 서버 주소 |
10.0.0.3 | 향후 새로운 기능을 위해 예약 |
10.0.0.255 | 네트워크 브로드캐스트 주소 |
또한 AWS Subnet에는 Public Subnet과 Private Subnet이 존재한다. Public Subnet은 외부 인터넷과 직접적인 통신을 할 수 있는 네트워크이고, Private Subnet은 외부 인터넷과 직접적인 통신을 할 수 없는 패쇄적인 네트워크이다. *단 Private 서브넷의 경우에도 NAT 게이트웨이가 있다면 외부와의 통신이 가능하다.
인스턴스 단계에서 보안 기술은 Security Group이다. 서브넷에서 사용하는 보안 기술도 존재하는데 Access Control List (ACL)이다.
Public Subnet VPC 생성 | 검증 |
---|---|
VPC 생성 | EC2 인스턴스 생성 |
퍼블릭 서브넷 생성 | EC2 인스턴스 접근 후 통신 확인 |
인터넷 게이트웨이 생성 및 VPC 연결 | |
퍼블릭 라우팅 테이블 생성 및 서브넷 연결 | |
퍼블릭 라우팅 테이블 경로 추가 |
외부 인터넷 구간과 통신을 위해 IGW을 생성하고 VPC와 연결
여기까지 진행했다면 인터넷과 통신하기 위한 IGW가 VPC와 연결되었고, 서브넷도 생성된 상태이다. 단 아직 외부인터넷에 접근은 불가능한데 VPC의 가상 라우팅 테이블에 외부 인터넷으로 가는 라우팅 경로가 없기 때문이다.
이제 모든 설정을 완료하였습니다. 실제 통신이 가능한지 검증하도록 하겠습니다.
통신 여부를 확인하기 위해 EC2 인스턴스 생성
EC2 Console 접속 -> 인스턴스
인스턴스 시작 클릭
이름: Public-EC2 OS 이미지: Amazon Machine Image(AMI), 64bit, 인스턴스 유형: T2.mirco 키 페어: 항상 사용하는 그거
네트워크 설정 -> 편집
VPC: 생성한 VPC 선택 (CloudPeter-VPC)
서브넷: 생성한 Subnet 선택 (CloudPeter-Public-SN)
퍼플릭 IP 자동 할당: 활성화
보안그룹: default
생성 확인
퍼블릭 IP로 SSH 접근 후
ping google.com
만약 핑이 잘 된다면 성공!!
Private Subnet 추가 | 검증 |
---|---|
프라이빗 서브넷 생성 | EC2 인스턴스 생성 |
NAT 게이트웨이 생성 | EC2 인스턴스 접근 후 통신 확인 |
프라이빗 라우팅 테이블 생성 및 서브넷 연결 | 퍼블릭 서브넷과 프라이빗 서브넷의 통신흐름 |
프라이빗 라우팅 테이블 경로 추가 |
VPC Console 접속 -> 서브넷
서브넷 생성
VPC ID: 생성한 VPC 선택 (CloudPeter-VPC)
이름 태그: CloudPeter-Private-SN
가용 영역 설정: ap-northeast-2c
IPv4 CIDR 블록: 10.0.1.0/24
생성 확인
VPC Console 접속 -> NAT 게이트웨이
이름: CloudPeter-NAT
서브넷: 퍼플릭 서브넷 선택 (CloudPeter-Public-SN)
탄력적 IP 할당 클릭!
생성 확인
VPC Console 접속 -> 라우팅 테이블
이름 태그: CloudPeter-Private-RT
VPC: 생성한 VPC 선택 (CloudPeter-VPC)
프라이빗 라우팅 테이블 선택
라우팅 편집 클릭
프라이빗 서브넷 (CloudPeter-Private-SN) 선택
VPC Console 접속 -> 라우팅 테이블
프라이빗 라우팅 테이블 선택
라우팅 편집 클릭
다음과 같이 편집 (NAT 게이트웨이 선택)
EC2 Console 접속 -> 인스턴스
이름: Private-EC2 네트워크: 생성한 VPC 선택 (CloudPeter-VPC) 서브넷: 생성한 프라이빗 서브넷 (CloudPeter-Private-SN)
네트워크 설정
고급 세부 정보
#!/bin/bash
(
echo "qwe123"
echo "qwe123"
) | passwd --stdin root
sed -i "s/^PasswordAuthentication no/PasswordAuthentication yes/g" /etc/ssh/sshd_config
sed -i "s/^#PermitRootLogin yes/PermitRootLogin yes/g" /etc/ssh/sshd_config
service sshd restart
위에 사용자 데이터는 암호 방식으로 ssh에 접근할 수 있게 하는 설정이다. EC2 인스턴스가 부팅될 때 읽어서 적용한다.
Private-EC2의 네트워크를 확인해보면 퍼플릭 아이피가 부여되지 않은 것을 확인할 수 있다.
Public-EC2의 IP로 SSH 접속
SSH 접속한 상태에서 Private-EC2의 프라이빗 IPv4 주소로 SSH 접속
NAT를 이용해 ping google.com
에 핑이 가는지 확인
*NAT의 경우 안에서 밖으로 나가는건 가능하지만 외부에서 Private Subnet으로 접근하는건 불가능