Amazon Virtual Private Cloud (가상 네트워크 AWS VPC)
🥐Amazon Virtual Private Cloud
AWS에서 생성할 수 있는 프라이빗 가상 네트워크 공간
이 네트워크에 EC2와 같은 AWS 자원을 배치해 이용한다.
- 퍼블릿 VPC
- 프라이빗 VPC
VPC를 만들 때 CIDR블록 (IP 주소 범위) 를 지정하고, 지정한 CIDR 블록 네트워크를 확보한다.
ex. '10.0.0.0/28' 을 지정시, 11111111/ 11111111/ 11111111/ 11110000 --> 16개의 IP주소 사용 가능
VPC는 일반적으로 프라이빗 IP 주소를 사용. (AWS 권고사항)
CIDR 블록 설정에 따라 확보할 수 있는 호스트 주소의 수가 달라지는데, 호스트 주소는 여유를 갖도록 가능한 한 많이 확보하는게 좋다.
🥐VPC 및 서브넷 생성
VPC는 AWS Management Console (GUI) 또는 API로 생성 가능.
[관리 콘솔에서 생성시 설정 필요한 항목]
- VPC 이름 (Name 태그)
- CIDR 블록
- IPv6 블록
- 테넌시 (전용 하드웨어 사용 여부)
VPC 만으로는 EC2와 같은 자원을 네트워크에 생성 불가 !!
>> VPC 안에 더 작은 네트워크 단위인 서브넷을 만들어야 한다.
서브넷은 하나의 AZ에만 속해야한다.
== 여러 AZ에 자원을 배치해 가용성을 높이려면 ? 서브넷도 여러개 만들어야한다. (AZ : 서브넷 = 1:N 관계)
🥐VPC 주요 기능
🥨 라우팅 정보를 설정하여 인터넷 통신
AWS는 VPC에 라우팅 테이블을 생성하고 , 각 서브넷에 사용할 라우팅 테이블을 지정.
VPC를 만들 때 기본적으로 하나의 라우팅 테이블 (네트워크의 경로 정보) 이 만들어지며,
VPC를 통해 흐르는 패킷은 라우팅 테이블의 정보를 기반으로 경로를 결정한다.
기본 상태는 VPC 내의 라우팅 정보만 있으므로, VPC 외부로는 통신 불가능.
외부와의 통신을 위해서는 인터넷 게이트웨이로 모든 네트워크 (0.0.0.0/0)를 라우팅 테이블에 등록하면, 인터넷과 통신 가능.
인터넷 게이트웨이? 란
서브넷 안에 있는 EC2와 같은 자원이 인터네소가 통신할 수 잇게 하기위한 기능
1. 인터넷 게이트웨이 생성 -> 2. 서브넷의 라우팅 테이블에 설정 => 인터넷과 VPC가 서로 통신
- 퍼블릭 서브넷
- 인터넷 게이트웨이로 가는 경로가 설정된 서브넷 ( 인터넷 통신 가능 ⭕)
- 프라이빗 서브넷
- 인터넷 게이트웨이를 통해 인터넷과 통신할 수 없는 서브넷 (인터넷 통신 불가 ❌)
EC2는 퍼블릭IP or Elastic IP를 부여해 인터넷과 통신 가능
퍼블릭IP는 자동으로 부여되는 IP주소로, 재부팅 할 때 마다 변경된다.
Elastic IP는 정적IP라고하며, 영구적으로 사용할 수 잇는 IP주소이다. (방화벽 등에서 IP주소를 고정해 통신을 허가해야하는 경우)
🥨 NAT게이트 웨이
Network Address Translation :: 프라이빗 IP주소 -> 퍼블릭 IP주소로 변환
프라이빗 서브넷 IP주소를 NAT 게이트웨이의 퍼블릭 IP주소로 변환해 인터네소가 통신할 수 있게 해준다.
🥨VPC접근제어 및 통신로그 확인
VPC에는 서브넷 단위로 접근 제어를 설정할 수 있는
네트워크 접근 제어 목록 (ACL) 기능이 있다.
기본 설정 상태로 네트워크 ACL은 모든 통신을 허용한다.
네트워크 ACL이나 보안그룹에서 허용되거나 거부된 통신 상황은 VPC 흐름 로그라고 하는 VPC 내의 IP 트래픽 상황을 로그로 저장할 수 잇는 기능을 사용해 확인할 수 있다.
EC2와 같은 VPC의 자원은 IP 주소마다 네트워크 인터페이스 (ENI, Elastic Network Interface)를 가진다.
🥨 VPC와 외부 네트워크 연결
1. VPC 피어링
> 서로 다른 두개의 VPC를 연결해 통신 가능 (연결된 VPC의 CIDR 블록은 겹치면 안 된다.)
2. AWS Transit Gateway (Trasit Gateway)
> VPC 연결을 하나의 중앙 허브에서 관리 가능 (VPN과 같이 온프레미스 환경과의 연결에도 사용 가능, AWS 네트워크 연결을 중앙에서 관리 가능)
🥨 VPC와 VPC 외 AWS 서비스 연결
S3 등 VPC 외부에서 동작하는 AWS 서비스는 보통 인터넷을 거쳐 통신하지만,
VPC 엔드포인트를 이용하면 프라이빗 네트워크로 통신 가능 ( 인터넷을 통하지 않고 AWS 내부 네트워크를 통해 연결 )
[ VPC <-> 외부의 AWS 서비스 프라이빗 통신을 위한 기능 ]
게이트웨이 엔트포인트
- S23, DynamoDB에서 사용하는 VPC 엔드 포인트
- AWS서비스와의 통신은 퍼블릭 IP를 이용
인터페이스 엔드포인트
- AWS PrivateLink라는 기능을 사용해 서브넷에 서비스 접속용 ENI(네트워크 인터페이스)를 생성해 프라이빗 IP로 통신
🥨 VPC와 온프레미스 네트워크 연결
AWS Site-to-Stie VPN (Site-to-Site VPN)
- 온프레미스 환경의 네트워크와 VPC를 VPN으로 연결하는 기능
VPN?
Virtual Private Network, 가상으로 프라이빗 네트워크를 구성해 통신하는 기술
VPN에 접속하면, 외부 네트워크와 프라이빗 IP주소로 통신가능
AWS Client VPN
- 온프레미스 환경의 클라이언트 단말 (PC)과 VPN을 연결하는 기능
AWS Direct Connect
- AWS와 온프레미스 환경을 전용선으로 연결하는 기능
🥐VPC 구성 예
AWS서비스의 실행위치에 따른 유형
1 글로벌 서비스 (특정 리전에 의존하지 않고 실행)
- CloundFront, IAM
2 리전 서비스 (리전 내, VPC 외부에서 실행)
- S3, DynamoDB
3 AZ 서비스 (VPC 내에서 실행)
- EC2, RDS