Justin의 개발 로그
Published 2019. 3. 2. 09:32
1. VPC의 완벽 이해 AWS_NCP

Amazon VPC랑 무엇인가?



Amazon Virtual Private Cloud(VPC)는 사용자의 AWS 계정 전용 가상 네트워크입니다. VPC는 AWS 클라우드에서 다른 가상 네트워크와 논리적으로 분리되어 있습니다. Amazon EC2 인스턴스와 같은 AWS 리소스를 VPC에서 실행할 수 있습니다. IP 주소 범위와 VPC 범위를 설정하고 서브넷을 추가하고 보안 그룹을 연결한 다음 라우팅 테이블을 구성합니다.


서브넷은 VPC의 IP 주소 범위입니다. 지정된 서브넷으로 AWS 리소스를 시작할 수 있습니다. 인터넷에 연결되어야 하는 리소스에는 퍼블릭 서브넷을 사용하고, 인터넷에 연결되지 않는 리소스에는 프라이빗 서브넷을 사용하십시오. 퍼블릭 서브넷과 프라이빗 서브넷에 대한 자세한 정보는 VPC 및 서브넷 기본 사항을 참조하십시오.


인터넷 액세스

VPC에서 시작한 인스턴스가 VPC 외부의 리소스를 어떻게 액세스할지를 제어할 수 있습니다.

기본 VPC에는 인터넷 게이트웨이가 포함되며, 각각의 기본 서브넷은 퍼블릭 서브넷입니다. 기본 서브넷에서 시작한 각 인스턴스에는 프라이빗 IPv4 주소와 퍼블릭 IPv4 주소가 있습니다. 이러한 인스턴스는 인터넷 게이트웨이를 통해 인터넷과 통신할 수 있습니다. 인터넷 게이트웨이를 통해 인스턴스는 Amazon EC2 네트워크 엣지를 통해 인터넷에 연결할 수 있습니다.


						기본 VPC 사용
.... 생략...
자세한 설명은  Amazon VPC랑 무엇인가? 링크를 보세요.


여기서 부터는 인프라 엔지니어가 아닌 S/W 개발자가 VPC를 이해하는데 필요한 
핵심만 설명 합니다.


Pv4IPv6

형식은 32비트의 최대 3자리 숫자로 이루어진 그룹 4개입니다.

예)

10.0.0.0

255.255.255.0

형식은 128비트의 네 자리 16진수로 이루어진 그룹 8개입니다.
기본값이며 모든 VPC에 필요, 제거할 수 없음.옵트인 전용.

VPC CIDR 블록 크기는 /16에서 /28까지 가능합니다.

VPC CIDR 블록의 크기는 /56으로 고정되어 있습니다.
서브넷 CIDR 블록의 크기는 /16에서 /28까지 가능합니다.서브넷 CIDR 블록의 크기는 /64로 고정되어 있습니다.
VPC에 대해 프라이빗 IPv4 CIDR 블록을 선택할 수 있습니다.Amazon은 당사의 IPv6 주소 풀에서 VPC에 대한 IPv6 CIDR 블록을 선택합니다. 자신만의 고유한 범위를 선택할 수 없습니다.
프라이빗 및 퍼블릭 IP 주소는 서로 구분됩니다. 인터넷과 통신하기 위해 퍼블릭 IPv4 주소는 네트워크 주소 변환(NAT)을 통해 기본 프라이빗 IPv4 주소로 매핑됩니다.퍼블릭 및 프라이빗 IP 주소는 서로 구분되지 않습니다. IPv6 주소는 퍼블릭입니다.
모든 인스턴스 유형에서 지원.모든 현재 세대 인스턴스 유형과 C3, R3 및 I2 이전 세대 인스턴스 유형에서 지원됩니다. 자세한 정보는 인스턴스 유형 단원을 참조하십시오.
EC2-Classic, 그리고 ClassicLink를 통한 VPC와의 EC2-Classic 연결에서 지원됨.EC2-Classic에서 지원되지 않고, ClassicLink를 통한 VPC와의 EC2-Classic 연결에 대해 지원되지 않음.
모든 AMI에서 지원.DHCPv6에 맞게 구성된 AMI에서 자동으로 지원됨. Amazon Linux 2016.09.0 이상 버전과 Windows Server 2008 R2 이상 버전은 DHCPv6에 맞게 구성됩니다. 다른 AMI의 경우, 인스턴스를 수동으로 구성하여 할당된 IPv6 주소를 모두 인식해야 합니다.
인스턴스는 프라이빗 IPv4 주소에 상응하는 Amazon 제공 프라이빗 DNS 호스트 이름을 받고, 해당되는 경우, 퍼블릭 IPv4 또는 탄력적 IP 주소에 상응하는 퍼블릭 DNS 호스트 이름을 받습니다.Amazon 제공 DNS 호스트 이름은 지원하지 않습니다.
탄력적 IPv4 주소는 지원하지 않습니다.탄력적 IPv6 주소는 지원하지 않습니다.
연결 및 고객 게이트웨이, NAT 디바이스 및 VPC 엔드포인트 지원.연결 및 고객 게이트웨이, NAT 디바이스 및 VPC 엔드포인트 지원 안 함.

클래스 기반 주소 할당

아마도 네트워크를 공부하면 정석의 집합처럼 수도 없이 들었던 내용이 바로 클래스 기반 주소할당이다. 클래스 A~E까지 있고 몇개의 네트워크를 갖고, 호스트를 몇개를 갖을 수 있는지를 배운다.

호스트가 폭발적으로 늘어나면서 이를 다 수용할 수 없게 되자, 라우터를 통해 segment를 쪼개기 시작 했다. 그런데 같은 segment에 있는 호스트는 IP나 물리적 주소를 아는 것만으로도 통신이 가능하다. 하지만 라우터 너머에 있는 호스트와 통신을 하기 위해서는 IP나 물리적 주소만으로는 불가능하다. 라우터가 source가 전송 요청을 하면 destination의 segment의 호스트들인것 처럼하는 것이다. 이것이 proxy ARP (Address Resolution Protocol)이다.

ARP는 IP를 통해 물리적 주소를 알아낼 때 사용한다. ARP 요청은 Broadcast를 하지만, 대상 IP만 응답하여 자신의 물리적 주소를 알려주게된다. 이때 라우너터 너머에 있는 경우, 목적지 호스트와 직접 통신을 할 수 없으니, 라우터가 이를 대신해준다.

그리고 이런 라우터로 불리된 segment들은 각각의 네트워크 ID를 사용하게 된다.

subnet mask

이렇게 segment를 나누다보니 어떤것들이 서로 다른 것인지 구분이 필요하다. 그래서 나온것이 subnet mask다. subnet mask를 통해 subnet 부분의 IP값이 다르면 나와 다른 segment를 같는 네트워크임을 알 수 있다.

예를들어 class B네트워크가 있다고 하자. 그리고 상위 16비트는 네트워크 ID이다. 하위 16비트는 호스트 ID이다. 그런데 이 호스트 ID를 subnet을 이용해 호스트ID의 상위 8비트를 가린다고 하자. 그럼 subnet은 255.255.255.0이 된다.  네트워크 ID가 190.50.0.0이라 한다면 190.50.0.1과 190.50.1.1은 라우터 너머에 존재하는 것이다.

이제 실제 전송과정을 살펴보자. 190.50.0.1에서 190.50.1.1로 전송하려 한다. subnet mask를 통해 AND 연산하면 두 개의 IP의 값이 다르다. 따라서 다른 네트워크라는 것을 알 수 있다. 따라서 라우팅 테이블을 검색하여 190.50.1.1로 갈 수 있는 라우터를 찾는다. 190.50.0.1은 라우터의 IP/물리주소로 패킷을 전달한다. 그리고 라우터는 190.50.1.1 IP가 존재하는것을 확인하고 1.1의 IP/물리주소로 패킷을 전송한다.

CIDR (사이더)

class 네트워크 개념에서는 네트워크 ID부분이 class별로 정해진다. 이럴 경우 class에 따라서 호스트 수가 제한적으로 정해져버린다. 그렇다고 무작정 상위 클래스를 쓸 수 도 없다. 경국 네트워크 ID의 비트 수에 대한 유동적 사용이 필요해졌고, 이를 통해 내부망의 분리를 통해 IP 고갈을 해결하는 방식으로 현재까지 이용되고 있다.



IP Address는 5가지의 class로 나눠집니다.
A,B,C,D,E 클래스로, 아래의 사진과 같이 나눠져 있습니다.
우리가 대부분 쓰는 클래스는 A-C 클래스로, 이제부터 이 클래스들에 대해 설명하도록 하겠습니다.

IP 주소의 클래스들

일단 아래 그림의 A-C 클래스들의 주소를 외워야 합니다..
이거는 많이 쓰기 때문에 저절로 외워질.. 거에요!

A,B,C 클래스들이 갖는 주소 대역



A클래스 먼저 설명하자면, 4개의 옥텟 중 첫번째 옥텟만 네트워크,
나머지 부분은 호스트 부분으로 이루어져 있습니다.
고로 A 클래스는 1 - 126 대역의 네트워크 주소를 갖습니닷
또한 이것이 A클래스의 서브넷 마스크가 됩니다.
11111111 . 00000000 . 00000000 . 00000000
= 255.0.0.0
1.0.0.0 - 126.255.255.255의 네트워크를 가지므로
대략 16,777,214 개의 호스트를 가집니다.

B클래스는 4개 중 앞 2개의 옥텟이 네트워크 부분입니다.
그러니까 B클래스는 128.0 - 191.255 의 네트워크 주소를 갖습니다.
그럼 B클래스의 서브넷 마스크가 255.255.0.0 이고 대략 65,534의 호스트를 갖습니다.

고로, C클래스는 3개의 옥텟의 네트워크를 가지며, 192.0.0 ~ 223.255.255의 대역을 갖습니다.
C클래스의 서브넷 마스크는 255.255.255.0 이며, 대략 256의 호스트를 갖습니다. 

[출처]
 네트워크 공부 #1. IP 주소, A-E 클래스|작성자 etoile2014

VPC CIDR (Classless Inter-Domain Routing)

IP 주소 할당 방법의 하나로, 기존 8비트 단위로 통신망부와 호스트부를 구획하지 않는 방법. 인터넷 접속 시 IP 주소는 A·B·C·D·E 등 5종의 등급이 있는데, 등급 C의 주소 공간을 기본 단위로 할당한다. 상세한 사항은 RFC 1519에 규정되어 있으며, 한정된 자원인 IP 주소를 쓸데없이 사용하는 것을 방지하거나 라우터의 처리 부하를 경감시킬 목적으로 개발되었다.

[네이버 지식백과] CIDR [classless inter-domain routing] (IT용어사전, 한국정보통신기술협회)



이론은 여기까지 다음 글에서는  AWS에서 VPC와 Subnet을 만드는 실습을 할 예정 입니다.

감사합니다.




profile

Justin의 개발 로그

@라이프노트

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!