VPC(Virtual Private Cloud)
- AWS는 VPC와 VPC Gateway를 통해 VPN끼리 연결할 수 있다.
- 클라우드에 논리적으로 격리된 가상 네트워크를 정의하고, 그 내부에 AWS 리소스를 배치하고 사용할 수 있다.
- AWS에 사설 네트워크 구축이 가능해진다.
- 온프레미스와 AWS 간 VPN을 연결을 통해 구현할 수 있다.(하이브리드 클라우드 구축 가능)
- 모든 리전에서 이용 가능하다.
그래서 어디에 쓰는데? - VPC를 이용한 네트워크 구성 예
- 간단한 공용 웹 사이트 호스팅
- 웹 서버가 인터넷의 인바운드 HTTP 및 SSL 요청에 응답하도록 허용
- 동시에 웹 서버가 인터넷에 대한 아웃바운드 연결을 시작하지 못하도록 하는 보안 그룹 규칙을 만들어 웹 사이트 보호
- 타 서버로 능동적으로 접근하는 것을 막아 DDoS 등 좀비 PC로 이용되는 것을 방지
- 다중 계층 웹 애플리케이션 호스팅
- 웹 서버, 애플리케이션 서버 및 데이터베이스 간에 액세스 및 보안 제한을 엄격하게 적용(직접 액세스를 막아야 한다.)
- 2개의 서브넷: 공개적으로 액세스할 수 있는 서브넷(Public Subnet i.g.웹서버)과 비공개로 액세스할 수 있는 서브넷(Private Subnet i.g.어플리케이션 서버, DB)
- 서버와 서브넷 사이의 액세스 제어
- 웹 서버가(혹은 웹 서버만) App 서버 및 DB를 정상적으로 사용하도록, 네트워크 액세스 제어 목록(ACL)과 보안 그룹에서 제공하는 인바운드 및 아웃바운드 패킷 필터링 사용
VPC의 구성 요소
Private IP, Public IP, Elastic IP
Private IP
- VPC 내부에서만 사용할 수 있는 IP 주소.
- 자동으로 할당되며, 동일 네트워크에서 인스턴스 간 통신에 사용할 수 있다.
- 기본 주소와 별도록 보조 Private IP을 추가 할당할 수 있다.
Pulic IP
- 인스턴스와 인터넷 간의 통신을 위해 사용.
- EC2 생성 시 옵션으로 사용 여부를 제어하며, 인스턴스에서 Public IP를 수동으로 연결하거나 해제할 수 없다.
- 인스턴스 재부팅 시 IP가 새로 할당된다.
ElasticIP
- 동적 컴퓨팅을 위한 고정 Public IP.
- VPC의 모든 인스턴스와 네트워크 인터페이스에 할당할 수 있다.
- 사용 가능한 ElasticIP는 5개로 제한되며, 이를 절약하기 위해서는 NAT 디바이스를 사용할 수 있다.
Subnet
- VPC는 리전의 모든 가용 영역에 적용되며, 각 가용 영역에 하나 이상의 서브넷을 추가할 수 있다. 하지만 서브넷은 단일 가용 영역에서만 생성할 수 있으며, 여러 가용 영역으로 확장할 수 없다.
- Public Subnet: 서브넷 네트워크 트래픽이 인터넷 게이트웨이(Internet Gateway, IGW)로 라우팅이 되는 서브넷
- Private Subnet: 서브넷 네트워크 트래픽이 인터넷 게이트웨이로 라우팅 되지 않는 서브넷.
- EC2 인스턴스가 IP를 통해 인터넷과 통신할 수 있게 하려면 Public IP주소나 Elastic IP가 있어야 한다. 일반적으로 웹서버는 퍼블릭 서브넷에 생성하며, 인터넷에 직접적으로 연결할 필요가 없고, 보다 높은 보안성을 필요로 하는 DB 서버는 프라이빗 서브넷에 생성한다.
Routing Table
각 서브넷은 서브넷 외부로 나가는 Outbound 트래픽에 대해 허용된 경로를 지정하는 테이블이 연결되어 있어야 한다. 생성된 서브넷은 자동으로 VPC의 기본 라우팅 테이블과 연결되며, 테이블의 내용을 변경할 수 있다.
VPC의 주요 서비스
보안 그룹(Security Group)과 네트워크 액세스 제어 목록(ACL)
네트워크 통신과 트래픽에 대해 IP와 Port를 기준으로 통신을 허용하거나 차단하기 위한 기능 제공
두 가지를 이용해서 AWS 상에서 방화벽과 동일한 기능으로 사용할 수 있다.
보안 그룹은 인스턴스 레벨에 적용하고, 네트워크 ACL은 서브넷 레벨에 적용한다.
VPC peering connection
서로 다른 VPC 간에 트래픽을 라우팅할 수 있게 한다.
NAT(Network Address Translation) 게이트웨이
내부 IP 주소를 외부 IP 주소로 바꿔 준다.
Private Subnet에 있는 인스턴스를 외부에서 접근하지 못하도록 구성할 때 사용한다.
NAT 게이트를 생성하기 위해 Public Subnet 지정
NAT 게이트웨이와 연결할 Elastic IP 필요
NAT 게이트웨이를 만든 후 인터넷 트래픽이 NAT 게이트웨이로 통신이 가능하도록 Private Subnet과 연결된 라우팅 테이블 업데이트
VPC Endpoint
Private Subnet에 위치한 인스턴스는 인터넷과 연결되어 있는 S3와 같은 공용 리소스를 연결할 수 없다.
이러한 경우 S3에 연결하기 위해 NAT 게이트웨이나 NAT 인스턴스가 필요하다. 하지만 VPC Endpoint를 사용하면 빠르게 S3, DynamoDB에 연결할 수 있다.
VPN(Virtual Private Network) 연결
AWS VPC 내 인스턴스와 IDC 내 시스템 간의 데이터 통신을 위해 연결하여 하이브리드 클라우드 환경을 구성할 수 있다.
VPC에 가상의 Private 게이트웨이를 연결하고 사용자 지정 라우팅 테이블을 생성하며, 보안 그룹의 규칙을 업데이트하고, AWS 관리형 VPN연결을 생성하여 VPC에서 원격의 네트워크에 접속 가능하도록 하이브리드 클라우드 환경을 구성할 수 있다.