(본 포스팅은 개인 공부 목적으로 정리된 내용입니다.)
1. VPC란?
Amazon Virtual Private Cloud(VPC)를 사용하면 AWS 클라우드에서 논리적으로 격리된 공간을 프로비저닝하여 고객이 정의하는 가상 네트워크에서 AWS 리소스를 시작할 수 있습니다.
IP주소 범위 선택, 서브넷 생성, 라우팅 테이블 및 네트워크 게이트웨이 구성등 가상 네트워킹 환경을 완벽하게 제어할 수 있습니다.
VPC에서 IPv4와 IPv6를 모두 사용하여 리소스와 애플리케이션에 안전하고 쉽게 액세스 할 수 있습니다.
=> 나만의 데이터 센터
1) Default VPC
- 계정 생성시 자동으로 셋업되어 있음 (모든 리전에)
- 모든 서브넷의 인터넷 접근이 가능함
- EC2가 퍼블릭 IP와 Private IP 모두 가지고 있음
- 삭제시 복구 불가
2) Custom VPC
- 새로 만들어야 함
- Default VPC의 특징을 가지고 있지 않음
3) VPC를 사용하여 할수 있는 일들
- EC2 실행 가능
- 서브넷을 구성 가능
- 보안 설정(IP block, 인터넷에 노출되지 않은 EC2 구성등) 가능
4) VPC Peering: VPC 간에 연결
- Transitive Peering 불가능: 한 다리 건너 연결되어 있다고 해서 Peering이 된것이 아님
5) VPC Flow Log
- VPC의 로그를 CloudWatch에 저장 가능
6) IP 대역 지정 가능
*Region에 하나: 다른 Region으로 확장 불가능
2. VPC의 구성요소
1) Avaliability Zone
2) Subnet
3) Internet Gate Way
4) Network Access Control List/Security Group
5) Route Table
6) Netwotk Address Translation Instance/Nat Gateway
7) Bastion Host
8) VPC Endpoint
1)Availability Zone
물리적으로 분리되어 있는 인프라가 모여있는 데이터 센터
고가용성을 위해서 항상 일정거리 이상 떨어져 있음
하나의 리젼은 2개 이상의 AZ로 이루어져 있음
각 계정의 AZ는 다른 계정의 AZ와 다른 아이디를 부여받음
계정1의 AZ-A는 계정2의 AZ-A와 다른 곳에 있음
*AWS는 Region / AZ이라는 개념이 있음
Region은 일종의 나라임. 하나의 큰 물리적/ 지리적 단위를 의미함
우리나라 주변에는 서울/도쿄/베이징 리젼이 존재함
AZ는 자연재해/ 불가피한 상황에서 모든 데이터가 한꺼번에 날아가는 것을 대비해서 일정 거리이상 떨어져 있어야 함
하나의 서브넷은 하나의 AZ안에 종속되어야 함
2)Subnet
- VPC의 하위 단위
- 하나의 AZ에만 생성가능 - 다른 AZ로 확장 불가능
- 하나의 AZ에는 여러개의 Subnet 생성 가능
- Private Subnet: 인터넷에 접근이 불가능한 Subnet => 보안을 위해서 만듦
우리의 DB, 중요한 로직을 처리하는 것을 인터넷으로 접근이 되어서 해킹에 노출될 필요가 없기 때문
- Public Subnet: 인터넷에 접근 가능한 Subnet
우리의 웹서버/애플리케이션 서버등
- CIDR block range 설정 가능
*CIDR block range = IP주소를 분배하는 방법
*Private Subnet는 보안적인 이점도 존재하지만, 인터넷 연결이 안되어 있기 때문에 접근을 못하는 상황도 발생함 (DB를 업데이트/ 패치를 진행/ 데이터를 조작)
=> 이것에 대한 해결책으로 Bastion Host와 Nat Gateway가 존재함
3)Internet Gateway(IGW)
- 인터넷으로 나가는 통로
- 고가용성이 확보되어 있음
- IGW로 연결되지 않은 서브넷 = Private Subnet
- Route Table에서 연결해줘야 함
- 기본적으로 VPC 생성시 만들어지지 않음
4)NACL / Security Group
- 검문소의 역할
- 어떤 ip 대역에 어떤 데이터들이 어떤 포트로 왔다갔다 하는지 정의해줌
- NACL : Stateless, SG : Stateful
- 기본적으로 VPC 생성시 만들어줌
- Deny(blocking)는 NACL에서만 가능
5)Route Table
- 트래픽이 어디로 가야할지 알려주는 이정표
- 기본적으로 VPC 생성시 만들어줌
6)Netwotk Address Translation Instance(Nat Instance)/Nat Gateway
- Private Instance가 외부의 인터넷과 통신하기 위한 통로
- public Subnet에 있는 EC2/ NG에게 트래픽을 전달해달라고 부탁하는 것
(private Subnet 과 public Subnet은 같은 VPC안에 있기 때문에 통신이 가능)
- NAT Instance는 단일 Instance(ec2, 꺼지면 서버가 죽음, 트래픽의 처리양도 작음, SG의 영향을 받음)/ NAT Gateway(서비스는 고가용성이 보장되어 있어서 서버가 죽지 않음, 트래픽의 수요에 따라 자동으로 나누어짐, SG의 영향을 받지 않음)는 AWS에서 제공하는 서비스
- NAT Instance를 사용할 때 Source/ Destination Check을 해제해야 함
- NAT Instance는 public Subnet에 있어야 함
*AWS에서 EC2와 관련된 모든 트래픽을 처리할 때, EC2는 모든 트래픽의 소스이거나, 목적지 일 것이라고 여김.
그런데 public Subnet의 EC2는 트래픽의 소스/ 목적지가 아니기 때문에 NAT Instance를 사용할 때 Source/ Destination Check을 해제해야 함
*NAT Instance: 서브넷 뒤에 있는 인스턴스들이 외부와 통신하기 위한 인스턴스/ private instance의 ec2를 위한 인스턴스
7)Bastion Host: 외부에서 서버에 접근하기 위한 인스턴스
- Private Instance에 접근하기 위한 Instance
- Public Subnet에 위치해야함
- 사용자를 위해서 사용자가 private instance에 접근하기 위한 인스턴스
*NAT Instance는 Bastion Host를 겸할수 있지만,
NAT Gateway는 Bastion Host를 겸할수 없음 (ec2가 아니기 때문)
*NAT Gateway는 SG 안에 있지 않지만,
Bastion Host는 ec2라서 SG 안에 있음
참고자료
https://www.youtube.com/watch?v=FeYagEibtPE&t=289s
https://www.youtube.com/watch?v=lqnncuQgz28
'AWS' 카테고리의 다른 글
NodeJS - AWS CI/CD로 자동배포 (CodeDeploy / CodePipeline) (0) | 2022.12.01 |
---|---|
CIDR 이란 무엇일까? (Classless Inter Domain Routing) (0) | 2022.05.13 |
[AWS] EC2 / SG / VPC Endpoint 는 무엇일까? (0) | 2022.05.13 |