VPC( Virtual Private Cloud )
VPC란 Virtual Private Cloud로 가상으로 격리된 네트워크 환경을 의미한다.
서울이라는 Region안에 여러 개의 Availability Zone이 나누어져 있다. Availability Zone은 논리적인 데이터센터를 의미하는데, 하나의 데이터센터에 문제가 생기면 다른 데이터센터에 접근이 가능하여 안정적인 운영이 가능해진다. Availability Zone은 분리되어 있지만 하나의 네트워크 환경으로 묶여야 한다. 그래서 가상으로 격리된 네트워크 환경을 만드는데, 그것이 VPC(Virtual Private Cloud)이다.
VPC의 cidr은 10.10.0.0/16이다. 이는 서브넷 마스크 11111111 11111111 00000000 00000000 ( 1이 16개 )와 IP를 AND 연산했을 때 나오는 네트워크 주소를 의미한다.
예를들어, 10.10.0.37를 AND 연산해보자.
IP : 00001010 / 00001010 / 00000000 / 00100101
서브넷마스크 : 11111111 / 11111111 / 00000000 / 00000000
네트워크주소 : 00001010 / 00001010 / 00000000 / 00000000
10.10.0.37를 AND 연산하면 네트워크 주소로 10.10.0.0이 나온다. 10.10.0.0 ~ 10.10.255.255의 IP들은 모두 AND 연산 시, 10.10.0.0 네트워크 주소를 갖는다. 그러므로 VPC는 네트워크 주소(첫주소)와 브로드캐스트 주소(끝주소)를 제외하고 10.10.0.1 ~ 10.10.255.254 사이의 IP를 네트워크 안의 호스트에 부여할 수 있는 것이다. 이와 같이, 서브넷 마스크로 네트워크 주소와 호스트 주소를 분리하는 것을 서브넷팅이라 부른다.
서브넷(Subnet)
VPC는 여러 가용영역을 묶은 네트워크이다. 여러 가용영역을 하나로 묶은 이유는 하나의 가용영역에 문제가 발생했을때, 다른 가용영역에 접근하기 위해서이다. 그럼 서로 다른 가용영역은 각자의 독립적인 네트워크를 가져야 하는데, 이때 VPC 안에 생성한 작은 범위의 네트워크를 서브넷(Subnet)이라 부른다. 서브넷은 하나의 가용영역에 하나만 존재할 수 있다.
위에서 VPC는 서브넷팅으로 호스트에 IP를 부여할 수 있다고 하였다. 서브넷도 VPC의 호스트로써 IP를 부여받는데, 부여받은 IP를 한번 더 서브넷팅 할 수 있다. 이를 VLSM(Variable Length Subnet Mask)라 부른다. VPC가 ap-northeast-2a 가용영역의 서브넷에 10.10.1.0을 부여했다고 가정해보자. 해당 IP를 한번 더 쪼개는 것이다.
10.10.1.0/24는 서브넷 마스크 11111111 11111111 11111111 00000000 (1이 24개 )와 IP를 AND 연산했을 때 나오는 네트워크 주소를 cidr로 갖는다. 10.10.1.59를 AND 연산하면 10.10.1.0이 나오고 10.10.1.20을 AND 연산해도 10.10.1.0가 나온다. 다시 말하여, 네트워크 주소와 브로드캐스트 주소를 제와하고 10.10.1.1~10.10.1.254 범위의 IP를 부여할 수있는 네트워크가 형성된 것이다. 이를 서브넷(Subnet)이라 부른다.
위 그림을 보면, ap-northeast-2a 가용영역의 서브넷은 10.10.1.0 IP를 서브넷팅하여 네트워크 주소와 브로드캐스트 주소를 제외한 254개의 ip를 부여할 수 있다. ap-norteast-2b 가용역의 서브넷은 10.10.2.0 IP를 서브넷팅하여 네트워크 주소와 브로드캐스트 주소를 제외한 254개의 ip를 부여할 수 있다.
그런데 만약 네트워크 안에 호스트 개수가 10개 밖에 안된다면 나머지 244개 IP는 낭비된다. 그럼 서브넷마스크를 올려 할당할 수 있는 호스트 IP 개수를 줄여야 한다.
위 표는 서브넷마스크 비트수에 따른 부여 가능한 호스크 개수를 나타내었다. 10.10.1.0/24는 IP를 256개 부여할 수 있었다.( 네트워크 주소, 브로드캐스트 주소 포함 ). 그럼 24를 28로 올려보자.
서브넷마스크(28) : 11111111 11111111 11111111 11110000
끝에 8bit를 보면 11110000 앞의 IP에서 앞의 4bit가 무엇이든 간에 AND 연산을 하면 그대로 유지된다. 반면 뒤의 4bit는 AND연산으로 하면 모두 0으로 바뀐다. 그럼 할당 가능한 네트워크 주소는 총 16개이다.
10.10.1.0
10.10.1.16
10.10.1.32
10.10.1.48
10.10.1.64
10.10.1.80
10.10.1.96
10.10.1.112
10.10.1.128
10.10.1.144
10.10.1.160
10.10.1.176
10.10.1.192
10.10.1.208
10.10.1.224
10.10.1.240
16개 중 하나인 10.10.1.112/28을 서브넷의 cidr로 부여하면
네트워크 주소 : 10.10.1.112 ( 1개 )
브로드캐스트 주소 : 10.10.1.127 ( 1개 )
할당 가능한 IP주소 : 10.10.1.113 - 10.10.1.126 ( 14개 )
그럼 네트워크에 10개의 IP를 부여해도 4개만 남게되어 IP의 낭비를 줄 일 수 있다. 이렇듯 네트워크 주소와 호스트 주소가 고정되어 있지 않고 서브넷마스크에 bit 수에 따라 가변적으로 변하는 IP 할당 방식을 두고 CIDR( Classless Inter-Domain Routing )이라 부른다.
참고자료
'DevOps > AWS' 카테고리의 다른 글
[AWS] EKS에서 OIDC가 적용되는 원리 (0) | 2023.11.14 |
---|---|
[AWS] EKS에 ALB Ingress Controller 설치하기 (0) | 2023.11.08 |