1. VPC란
1) VPC 정의
- VPC : 논리적으로 격리된 가상의 클라우드 네트워크
- AWS 클라우드 내 논리적으로 독립된 섹션 제공
→ 사용자가 정의한 가상 네트워크상에서 다양한 AWS 리소스를 실행할 수 있게 지원
- 사용자에 따라 네트워크 환경을 직접 설계할수 있다
(vpc내에 ip대역, 서브넷, 라우팅 테이블, 인터넷 게이트웨이, 보안 그룹, 네트워크 ACL등 생성 및 제어 가능)
- 즉, AWS 클라우드내에 VPC를 생성하여 사용자가 원하는대로 다양한 리소스를 생성하고 제어할 수 있다.
위 다이어그램은 VPC 예시이다.
하나의 Region안에 VPC가 있다.
각 가용 영역(AZ)별로 각각 하나의 서브넷이 있고, 각 서브넷에 EC2 인스턴스가 있다.
VPC의 리소스와 인터넷 간의 통신을 허용하는 인터넷 게이트웨이가 있다.
(그냥 그렇구나~하고 넘어가자. 뒷부분에서 설명 예정)
2) VPC 종류
- 분류 기준 : 사용자의 관여
- Default VPC
- AWS가 생성
- 정해진 AWS리소스 미리 생성
- 리전별로 1개씩 생성되어있음
- Custom VPC
- 사용자가 생성
- 사용자 정의에 의해 수동으로 AWS 리소스를 생성하고 제어 가능
- 리전별로 최대 5개
2. 본격적으로 VPC에 대해 알아보기 전에 잠깐 네트워크
1) IP (Internet Protocol)
- 인터넷상의 네트워크 자원들을 구분하는 고유한 주소
- 버전에 따라 IPv4(32bit)와 IPv6(128bit)로 구분
- IPv4가 주로 사용됨
2) public IP vs private IP
기본적으로 네트워크의 통신 용도에 따라 public network와 private network로 구분된다.
- public network : 실제 인터넷 구간으로 통신하는 공공 네트워크
- private network : 인터넷 구간이 아닌 내부적으로 통신하는 사설 네트워크
이러한 public network와 private network가 사용하는 IPv4 주소 대역이 지정되어 있다.
이 그림에서 82.129.80.111만 public ip이고 나머지는 다 private ip이다.
- public IP (실제 주소)
- 인터넷 구간의 통신 대상을 식별하기 위해 ISP에서 제공하는 IP 주소
- 전 세계의 인터넷 구간에서 유일
- private IP (독립된 네트워크 안에서의 주소)
- 일반 가정이나 회사 등의 독립된 네트워크에서 사용하는 내부 IP 주소
- 프라이빗 네트워크 관리자에 의해 할당
- 독립된 네트워크상에서 유일한 주소
- private IP를 통해서는 외부 인터넷 구간과 통신할 수 없다
(그림 출처 : Public or Private IP Address - What's the Difference?)
3) Subnet
모든 네트워크망이 거대한 하나의 망으로 이루어진 형태는 아니다. 네트워크망은 서브넷을 통해 부분적인 네트워크망으로 나눠지고 서로 연결되어 있다.
- 서브넷 : 하나의 네트워크가 분할되어 나눠진 작은 네트워크
- 서브네팅 : 네트워크를 분할하는 것 (by 서브넷 마스크)
4) Subnet Mask
- 서브넷 마스크 : 서로 다른 서브넷을 구분하는 기준
- IP 주소를 네트워크 ID와 호스트 ID로 구분하는 기준값
- 네트워크 ID : 서브넷을 식별하는 영역
- 호스트 ID : 서브넷에서 대상을 식별하는 영역
⇒ 동일한 서브넷에 소한 IP주소의 네트워크 ID는 모두 동일하다. 호스트 ID를 통해 개별 구분한다.
(자세한 내용은 이 블로그를 참고하자)
5) Routing
네트워크는 여러개의 서브넷으로 이루어져 있다. 따라서 목적지 IP로 향하기 위해서는 여러 노드를 거쳐서 통신해야 한다.
- 라우팅 : 복잡하게 연결된 네트워크망에서 최적의 경로를 찾아 통신하는 것
- 라우터 : 라우팅을 수행하는 장비 → 라우팅 테이블을 통해 경로를 파악하고 원하는 목적지 대상으로 데이터 전달
3. VPC 리소스
1) Subnet
클라우드 환경의 VPC에서도 서브넷을 통해 네트워크를 분리하여 나눌 수 있다.
- 서브넷의 IP 대역은 VPC의 IP대역에 속해 있어야 한다.
- 서브넷은 1개의 가용영역에 속해 있어야 한다.
2) Public Subnet vs Private Subnet
- public 서브넷
- 공인 네트워크
- 외부 인터넷 구간과 직접적으로 통신할 수 있는 공공 네트워크
- public IP를 가지고 인터넷 게이트웨이를 통해 외부 인터넷 구간의 사용자와 통신 가능
- private 서브넷
- 사설 네트워크
- 외부 인터넷 구간과 직접적인 통신을 할 수 없는 폐쇄적인 네트워크
- private IP만 가지고 있어 자체적으로 외부 인터넷 구간의 사용자와 통신 불가능
- 근데, NAT 게이트웨이가 있으면 통신가능
3) 가상 라우터와 라우팅 테이블
- 가상 라우터
- VPC를 생성하면 자동으로 생성됨
- 최초에 기본 라우팅 테이블 보유. 로컬 네트워크(VPC의 자체 대역)에 대한 라우팅 경로만 잡혀있다.
- VPC 내에 생성된 서브넷은 라우팅 테이블의 로컬 네트워크에 의해 통신 가능
- 서브넷별로 라우팅 테이블 매핑 가능
가상 라우터는 라우팅 테이블을 사용하여 서브넷 또는 게이트웨이의 네트워크 트래픽이 전달되는 위치를 결정
4) 인터넷 게이트웨이
- VPC와 인터넷 간의 논리적 연결
- VPC에서 인터넷 구간으로 나가는 관문
- public IP를 사용하는 퍼블릿 서브넷 내의 자원은 인터넷 게이트웨이를 통해 외부 인터넷 구간과 통신할 수 있다
- 퍼블릭 서브넷은 자신의 라우팅 테이블에 외부 인터넷 구간으로 나가는 타깃을 인터넷 게이트웨이로 지정해 줘야 한다
- VPC 당 1개만 연결
- 양방향 연결 지원 (퍼블릭 서브넷 <-> 인터넷 구간)
5) NAT 게이트웨이
- 인터넷 게이트웨이와 마찬가지로 외부 인터넷 구간과 연결하는 관문
- 프라이빗 서브넷 인스턴스의 private IP를 public IP로 변환해서 외부 인터넷 구간으로 연결할 수 있도록
- 한쪽방향으로만 동작 (프라이빗 서브넷 → 외부 인터넷)
(사진 출처 : AWS NAT Gateway)
6) 보안그룹과 네트워크 ACL
- 보안 그룹 : 인스턴스 레벨에서의 보안 기술 (인스턴스 별로 지정)
- 네트워크 ACL : 서브넷 레벨에서의 보안 기술 (서브넷 별로 지정)
이러한 보안 기술들은 인바운드 및 아웃바운드되는 데이터에 대해 허용 규칙과 거부 규칙을 수립하여, 원하는 데이터만 수용할 수 있게 필터링
(사진 출처 : Differences Between Security Group And Network ACL)
출처
따라하며 배우는 AWS 네트워크 입문
AWS Documentation