프로젝트를 진행하면서 VPC를 구축 할 일이 생겼고 이에 대한 개념이 부족하여 VPC에 대해 정리해보았다.
참고 자료
https://www.youtube.com/watch?v=WY2xoIClOFA
https://www.youtube.com/watch?v=hi6S3DUJBBk
클라이언트가 Public Internet을 통해 여러 서비스를 이용할 수 있다.
또한 AWS Cloud도 마찬가지로 Public Internet을 이용할 수 있다. 그러나 VPC는 접근이 불가능하다.
다른 AWS 서비스들은 모두 Public으로 Endpoint가 있어서 접근할 수 있는데 VPC 만큼은 접근이 불가능하다.
AWS Cloud 내에서도 VPC와 AWS Service가 직접적으로 통신은 불가능하다.
VPC의 EC2에서 Internet Gateway를 통해 Public Internet으로 나온 후에 다시 AWS Cloud로 들어올 수 있다.
가상 네트워크 센터를 의미 (나만의 데이터 센터)
EC2 실행 가능, 서브넷 구성 가능, IP 대역 지정 가능
1) AZ (Availability Zone)
물리적으로 분리되어 있는 인프라가 모여 있는 데이터 센터
고가용성을 위해서 항상 일정 거리 이상 떨어져 있음
하나의 리젼은 2개 이상의 AZ로 구성 (리젼 : 도쿄, 서울, 상파울루, …)
2) Subnet
VPC의 하위 단위로 하나의 AZ에만 생성 가능
하나의 AZ는 여러 Subnet을 생성할 수 있음
Private Subnet : 인터넷에 접근이 불가능한 Subnet
Public Subnet : 인터넷에 접근이 가능한 Subnet
CIDR block range 설정 가능 (CIDR 이란? IP 주소를 분배하는 방법을 의미)
위 사진에서 두 EC2는 다른 Subnet에 있으므로 다른 아이피 대역을 가질 것이다.
3) Internet Gateway (IGW)
인터넷으로 나가는 통로
IGW로 연결되어 있지 않은 서브넷은 Private Subnet이다.
Route Table에서 인터넷 게이트웨이를 연결해줘야 함
4) NACL / Security Group
어떤 IP 대역에 어떤 데이터들이 어느 포트로 이동했는지 알려줌
NACL은 stateless이고 SG는 stateful이다.
기본적으로 VPC 생성시에 만들어줌
AZ 바로 앞에서 활동하는 보안 검문소의 느낌
5) Route table
트래픽이 어디로 가야 할지 알려주는 이정표
기본적으로 VPC 생성시 만들어줌
→ 특정 IP 대역이 어느 대상으로 보내는 것을 표시
6) NAT Gateway
Private Instance가 외부의 인터넷과 통신하기 위한 통로
Private의 트래픽을 public subnet의 NAT Gateway에 전달하여 여기서 대신 전달
7) Bastion Host (EC2 Bastion)
Private Instance에 접근하기 위한 Instance으로 Public Subnet에 위치해야 함
Private을 볼 수 있는 방법이 없으므로 Public Subnet의 Bastion을 거쳐서 Private의 EC2와
데이터를 교환할 수 있게 한다.
8) VPC Endpoint (Gateway Endpoint)
AWS에서 VPC 바깥으로 트래픽이 나가지 않고 여러 서비스들을 사용할 수 있게 해줌
Ex) Private subnet에서 트래픽이 나가서 S3에 접근하는 경우
→ 트래픽이 가다가 Route table에서 Router로 가고 그 다음 Gateway
Endpoints를 거쳐서 S3로 트래픽을 전달
반면에 Private subnet 안에 있는 Interface Endpoint 경우에는 트래픽이
발생할 경우 직접 Interface Endpoint를 통해 SQS에게 트래픽 전달
IPv4는 총 32비트의 숫자로 구성되어 있음 = 4 * 10^9 개
5 * 10^8 개 정도는 특정한 목적으로 선점되어 있어서 가용 가능한 IP가 충분하지 않다.
이에 대한 해결책으로 Private Network (사설망) 가 있다.
하나의 Public IP를 여러 기기가 공유할 수 있는 방법
하나의 사설망에는 private IP를 부여받은 기기들과 gateway로 구성된다.
각 기기는 인터넷과 통신시 gateway를 통해 통신하고 Private IP는 지정된 대역의 아이피만 사용 가능하다.
⇒ Private IP 기기들 ↔ Gateway ↔ Internet
Gateway만 Public IP를 가지고 있고 Private IP 기기들은 Gateway를 통해서 Internet과 통신한다.
1) 사설망 안의 기기들은 Public IP (181.227.3.33) 이 아니라 Private IP를 부여받게 된다.
→ 사설망 안에서의 기기들의 IP는 모두 다르고 다른 사설망에서 192.168.0.2는 존재할 수 있다.
2) 사설망 안의 기기가 통신할 때 Gateway에서 IP를 Public IP로 변환하여 통신한다.
3) 61.123.44.1 로 통신하고 싶을 때 나가는 Public IP는 똑같지만 SRC port로 기기들을 구분한다.
여러 개의 사설망을 구축하기 위해 망을 나누는 방법 (IP를 묶는 방식)
1) 8bits 씩 먼저 구분한다.
2) /28 이므로 앞에 28개의 비트를 제외한 나머지 4개의 비트가 대역폭이 된다.
→ 10.88.135.144 ~ 10.88.135.159 (= 144 + 15) 가 하나의 대역이 된다.
그 다음 대역은 10.88.135.160 ~ 10.88.135.175가 된다.
따라서, /32 이면 1개가 대역이 될 것이다.
첫번째 / 마지막 IP는 예약되어 있어서 사용이 불가능하다.
Ex) 192.168.0.0/16 이라면 192.168.0.0(네트워크 자체 IP)과 192.168.255.255(Broadcast IP)는 사용 불가
능하다. (AWS에서는 5개의 Address를 예약한다.)
여기서 네트워크 대역은 192.168.0.0 ~ 192.168.255.255 이다.
그 안에서 서브넷은 이 대역을 나눠서 사용하는 것이다.
위의 예시에서 서브넷1은 192.168.1.0 ~ 192.168.1.255를 사용한다.
(서브넷2 : 2.0 ~ 2.255, 서브넷3 : 3.0 ~ 3.255)
서브넷이 하나의 사설망을 구성하고 대역폭은 2^(32-24) 만큼 가진다는 점에 유의하자.
(Public Subnet, Private Subnet)