01. VPC [Virtual Private Cloud]
1.1 VPC란?
1.1.1 VPC 정의
: VPC는 Virtual Private Cloud의 약자로 AWS 클라우드 내 논리적으로 독립된 섹션을 제공하여, 사용자가 정의한 가상 네트워크상에서 다양한 AWS 리소스를 실행할 수 있게 지원한다. 한마디로 독립된 가상의 클라우드 네트워크라 볼 수 있다.
AWS 클라우드 서비스는 사용자에 따라 네트워크 환경을 직접 설계를 할 수 있다는 특징을 가지고 있다.
사용자는 VPC 내에 IP 대역, 인터페이스, 서브넷, 라우팅 테이블, 인터넷 게이트웨이, 보안그룹, 네트워크 ACL 등을 생성하고 제어할 수 있다.
1.1.2 VPC 종류
: VPC는 사용자의 관여에 따라 기본 VPC(Default VPC)와 사용자 VPC(Custom VPC)로 니누어 질 수 있다.
- 기본 VPC는 리전별로 1개씩 생성이 되어 있으며 기본 VPC 내에 AWS 리소스가 미리 정해져 있다.
- 반면에 사용자 VPC는 사용자 정의에 의해 수동으로 AWS 리소스를 생성하고 제어할 수 있다.
구분 | 기본 VPC | 사용자 VPC |
생성 주체 | AWS | 사용자 |
AWS 리소스 | 정해진 리소스 미리 생성 | 수동으로 생성 |
리전 별 생성 수 | 1개 | 최대 5개 (기본값) |
1.2 VPC 특징
▶ 확장성
: 클라우드 기반에 손쉽게 VPC 자원을 생성하고 삭제가 가능하며, 설정 및 관리에 편의성을 제공한다.
▶ 보안
: 인스턴스 레벨과 서브넷 레벨에서 인바운드(Inbound) 및 아웃바운드(Outbound) 필터링을 수행할 수 있도록 보안 그룹과 네트워크 ACL을 제공하여 보안을 강화할 수 있다.
▶ 사용자 중심
: VPC 내 리소스에 대해 사용자가 원하는 대로 손쉽게 제어할 수 있으며, 네트워크 지표 및 모니터링 툴을 활용하여 사용자에게 높은 가시성을 제공한다.
▶ 제약 사항
: 전통적인 네트워크 환경에서 사용가능 했던 기능이 제한되어 있거나 일부분만 사용 가능하여 기술적 제약(브로드 캐스트, 멀티 캐스트, IP 기반 Failover 프로토콜{VRRP, HSRP} 등)이 따르게 된다.
02. 기본 네트워크 개념 이해
AWS의 가상 클라우드 네트워크인 VPC에 대한 리소스 소개에 앞서 기본적인 네트워크 개념을 이해한다.
2.1 OSI 7 Layer Model
2.1.1 OSI 7 Layer Model 개념
: OSI 7 계층 모델은 네트워크 동작 과정을 7개의 계층으로 나누어 네트워크 통신 흐름을 한눈에 알아보고 이해할 수 있게 도와주는 역할을 한다. 계층별로 하위 계층의 기능을 이용하고 상위 계층으로 기능을 제공하는 상화 관계를 맺는다.
TCP/IP 프로토콜이란 네트워크를 통해 통신하는데 쓰이는 통신 규약의 모음을 말한다.
▶ 1 Layer - Physical 계층
: Physical 계층은 물리 계층으로 네트워크의 하드웨어 전송 기술을 말한다. 물리적인 링크의 연결, 유지, 해제를 담당한다.
▶ 2 Layer - Data Link 계층
: Data Link 계층은 Physical 계층에서 송수신되는 정보의 오류와 흐름을 관리하여 데이터의 전달을 수행하는 역할을 한다.
OSI 1계층과 2계층을 TCP/IP 프로토콜 상 Network Interface 계층으로 분류한다.
▶ 3 Layer - Network 계층
: Network 계층의 핵심은 데이터를 목적지까지 빠르고 안전하게 전달(라우팅)하기 위한 것으로 여러 노드를 거칠 때마다 최적의 경로를 찾아주는 역할을 한다.
OSI 3계층을 TCP/IP 프로토콜 상 Internet 계층으로 분류하며, 해당 계층에는 IP, ARP, ICMP 등 프로토콜 포함된다.
▶ 4 Layer - Transport 계층
: Transport 계층은 전송 계층으로 종단의 사용자 간 데이터를 통신을 다루는 최상위 계층으로 데이터 전달의 유효성과 효율성을 보장 받는다.
OSI 4계층을 TCP/IP 프로토콜 상에서도 Transport 계층으로 분류하며, 해당 계층에는 TCP, UDP 등의 프로토콜이 포함된다.
▶ 5 Layer - Session 계층
: 종단의 사용자 간의 응용 프로세스 통신을 관리하기 위한 방법을 제공한다. 데이터의 통신을 위한 논리적인 연결을 말한다.
▶ 6 Layer - Presentation 계층
: 데이터의 형식상 차이에 대해 송수신자간 이해할 수 있는 형태로 데이터를 표현하는 기능을 담당한다. 데이터의 암호화 및 압축 등을 수행한다.
▶ 7 Layer - Application 계층
: 응용 프로세스와 직접 연계하여 실제 응용 프로그램을 사용하게 하는 계층이다.
OSI 5~7계층을 TCP/IP 프로토콜 상 Application 계층으로 분류하며, 해당 계층에는 HTTP, SSH, FTP, DHCP 등이 포함된다.
2.2 IP와 서브넷 마스크
2.2.1 IP 개념
: IP는 Internet Protocol 약자로 인터넷 상의 네트워크 자원들을 구분하는 고유한 주소이다. OSI 3 계층이다. IPv4 / IPv6으로 구분된다.
2.2.2 퍼블릭 IP와 프라이빗 IP
▶ 퍼블릭 IP (공인 IP)
: 인터넷 구간의 통신 대상을 식별하기 위해 ISP[Internet Service Provider]에서 제공하는 IP 주소이다. 해당 퍼블릭 IP는 전 세계의 인터넷 구간에서 유일한 주소를 갖는다.
▶ 프라이빗 IP (사설 IP)
: 일반 가정이나 회사 등의 독립된 네트워크에서 사용하는 내부 IP 주소이다. 하당 프라이빗 IP는 프라이빗 네트워크 관리자에 의해 할당되며, 독립된 네트워크 상에서 유일한 주소를 갖는다. 그리고 프라이빗 IP 주소를 통해 외부 인터넷 구간과 통신이 불가능하다.
- Class A : 10.0.0.0 ~ 10.255.255.255
- Class B : 172.16.0.0 ~ 172.31.255.255
- Class C : 192.168.0.0 ~ 192.168.255.255
2.3 TCP와 UDP 그리고 포트 번호
2.3.1 TCP와 UDP
: TCP와 UDP는 OSI 4 Layer에 사용되는 대표적인 전송 프로토콜이다. TCP와 UDP는 신뢰성 있는 전송의 여부에 따라 차이를 두고 있다
구분 |
TCP | UDP |
OSI 모델 | 4계층 (전송 계층) | 4계층 (전송 계층) |
연결 | 연결 지향성 | 비연결 지향성 |
신뢰성 | 신뢰성 보장 | 신뢰성 보장하지 않음 |
순서 | 데이터 순서 보장 | 데이터 순서 보장하지 않음 |
제어 | 혼잡 제어, 흐름 제어 제공 | 혼잡 제어, 흐름 제어 제공하지 않음 |
속도 | 상대적으로 느림 | 상대적으로 빠름 |
서비스 | HTTP, SSH, FTP etc.. | DNS, DHCP etc.. |
2.3.2 포트 번호
: 위 설명과 같이 TCP와 UDP의 특성에 따라 제공되는 응용 프로그램 서비스가 있다. 이런 서비스를 구분할 때 포트 번호를 통해 구분할 수 있다. TCP와 UDP의 포트 번호 범위를 정의하고 있으며, 범위에 따라 크게 3가지로 구분 지을 수 있다.
- Well Known Port : 0 ~ 1023
- Registered Port : 1024 ~ 49151
- Dynamic Port : 49152 ~ 65535
에를 들어 TCP의 포트 번호 80은 HTTP 서비스로 예약된 잘 알려진 포트이다.
2.4 DHCP [Dynamic Host Configuration Protocol]
2.4.1 DHCP
: DHCP는 동적으로 IPv4 주소를 일정 기간 임대를 하는 프로토콜이다. 해당 DHCP는 UDP를 사용하며, 포트 번호 67과 68을 사용한다.
네트워크 호스트가 IPv4 주소를 할당할 때 수동으로 지정할 수도 있고, DHCP를 통해 자동으로 지정할 수 있다.
IP주소를 임대하는 개념하에 임대 시간이 존재하며 임대 시간이 만료되면 반환하거나 갱신을 수행한다.
2.4.2 DHCP 절차
: DHCP는 중앙집중형 서버/클라이언트 방식으로 동작한다. 즉, DHCP 서버가 존재하고 네트워크 호스트가 클라이언트가 되어 서버에게 IP 할당을 요청하는 구조이다.
- DHCP Discover : DHCP 클라이언트에서 DHCP 서버를 찾기 위한 메시지
- DHCP Offer : DHCP 서버에서 할당할 IP 주소와 임대 시간을 알림
- DHCP Request : DHCP 클라이언트에서 DHCP 서버로 할당받은 IP를 요청
- DHCP Ack : DHCP 서버에서 최종적으로 할당 IP를 승인하여 알림
03. VPC 리소스 소개
3.1 서브넷 (Subnet)
3.1.1 서브넷 개념
: 서브넷의 일반적인 개념은 네트워크 영역을 부분적으로 나눈 망으로 정의할 수 있다. 클라우드 환경의 VPC에서도 서브넷을 통해 네트워크를 분리하여 나눌 수 있다.
위 그림과 같이 VPC 내에 서브넷을 통해 네트워크 망을 분리하고 있는 모습이다. 추가로 알아야 할 것은 서브넷의 IP 대역은 VPC의 IP 대역에 속해 있어야 하며, 서브넷은 1개의 가용 영역에 종속되어야 한다. AWS에서는 서브넷에 할당할 수 있는 IP 대역에서 미리 예약 되어 있는 IP 주소가 있다. 이러한 예약된 IP 주소들은 AWS 자원에게 할당할 수 없다.
▶ AWS에서 서브넷의 IP 대역마다 예약된 IP 주소
: 서브넷 IP 대역에서 첫번째에서 네번째까지 IP 주소는 예약되어있다. 그리고 마지막 IP 주소도 예약되어 있다.
예를 들어 서브넷에 할당할 IP 대역이 10.0.0.0/24이라면 10.0.0.0 ~ 10.0.0.255 중에서
- 첫 번째 주소 : 10.0.0.0 → 네트워크 주소
- 두 번째 주소 : 10.0.0.1 → AWS VPC 가상 라우터 주소
- 세 번째 주소 : 10.0.0.2 → AWS DNS 서버 주소
- 네 번째 주소 : 10.0.0.3 → 향후 새로운 기능에 활용할 주소
- 마지막 주소 : 10.0.0.255 → 네트워크 브로드 캐스트 주소
3.1.2 퍼블릭 서브넷과 프라이빗 서브넷
: 서브넷은 크게 두 가지로 나뉜다. 퍼블릭 서브넷은 공인 네트워크 개념으로 외부 인터넷 구간과 직접적으로 통신을 할 수 있는 공공 네트워크이다. 반면에 프라이빗 서브넷은 사설 네트워크 개념으로 외부 인터넷 구간과 직접적인 통신을 할 수 없는 페쇄적인 네트워크이다.
위 그림과 같이 퍼블릭 서브넷은 퍼블릭 IP를 가지고 인터넷 게이트웨이를 통해 외부 인터넷 구간의 사용자와 통신이 가능하나, 프라이빗 서브넷은 프라이빗 IP 만 가지고 있어 자체적으로 외부 인터넷 구간의 사용자와 통신이 불가능하다.
※ 프라이빗 IP를 퍼블릭 IP로 변환해 주는 NAT 게이트웨이가 있으면 통신이 가능하다.
3.2 가상 라우터와 라우팅 테이블
VPC를 생성하면 자동으로 가상 라우터가 생성된다. 이 가상 라우터는 라우팅 테이블을 가지고 있어 목적지 네트워크로 라우팅하여 통신한다.
- 위 그림과 같이 10.0.0.0/16 대역의 VPC를 생성하면, 자동으로 가상 라우터가 생성된다.
- 가상 라우터는 최초에 기본 라우팅 테이블을 보유하고 있으며 로컬 네트워크에 대한 라우팅 경로만 잡혀있다.
- 여기서 로컬 네트워크는 VPC의 자체 대역으로 VPC 내에 생성된 서브넷은 라우팅 테이블의 로컬 네트워크에 의해 통신이 가능하다
3.3 인터넷 게이트웨이
- 인터넷 게이트웨이는 VPC와 인터넷 간의 논리적인 연결이다.
- 간략하게 VPC에서 인터넷 구간으로 나가는 관문으로 생각할 수 있다.
- 이러한 인터넷 게이트웨이는 VPC 당 1개만 연결이 가능하다.
- 인터넷 게이트웨이를 통해 외부 인터넷 구간으로 통신할 수 있는 대상은 퍼블릭 IP를 사용하는 퍼블릭 서브넷 내의 자원이다.
- 이러한 퍼블릭 서브넷은 자신의 라우팅 테이블에 외부 인터넷 구간으로 나가는 타깃을 인터넷 게이트웨이로 지정해 주어야 한다.
- 위 그림처럼 퍼블릭 서브넷 내의 인스턴스(T2)가 외부 인터넷 구간과 통신하기 위하여 인터넷 게이트웨이가 관문이 되어 이를 통해 통신되고 있다.
- 인터넷 게이트웨이는 양방향으로 연결을 지원하기에 외부 인터넷 구간에서 퍼블릭 서브넷의 퍼블릭 IP로도 정상적인 통신이 가능하다.
3.4 NAT 게이트웨이
: NAT 게이트웨이도 인터넷 게이트웨이처럼 외부 인터넷 구간과 연결하는 관문 역할을 하고 있다.
차이점은 NAT 이라는 명칭에서 알 수 있듯 Network Address Translation의 약자로 네트워크 주소, 즉 IP 주소를 변환해주는 기술이다.
인터넷 구간은 공공 네트워크 구간으로 퍼블릭 IP를 통해 통신이 이루어진다. 프라이빗 IP는 인터넷 구간으로 넘어올 수가 없는데, 이때 NAT 게이트웨이가 프라이빗 IP를 퍼블릭 IP로 변환하여 통신을 도울 수 있다.
- 인터넷 게이트웨이는 퍼블릭 서브넷의 외부 인터넷 구간을 연결하는 반면에 NAT 게이트웨이는 위 그림과 같이 프라이빗 서브넷 인스턴스의 프라이빗 IP를 퍼블릭 IP로 변환하여 외부 인터넷 구간으로 연결할 수 있다.
- 추가로 NAT 게이트웨이는 한쪽 방향으로만 동작한다.
- 즉, 프라이빗 서브넷에서 외부 인터넷으로 통신이 가능하지만 반대로 외부 인터넷에서 프라이빗 서브넷으로 통신은 불가능하다.
3.5 보안 그룹과 네트워크 ACL
: VPC는 인스턴스 레벨과 서브넷 레벨 상에서 대상을 필터링 할 수 있는 보안 기술을 사용할 수 있다. 인스턴스 레벨에서의 보안 기술은 보안 그룹[Security Group]이며, 서브넷 레벨에서의 보안 기술은 ACL[Access Control List]이다.
- 위 그림과 같이 보안 그룹은 인스턴스 별로 지정하는 보안 기술이며, 네트워크 ACL은 서브넷 별로 지정하는 보안 기술로 구분 지어 볼 수 있다.
- 이러한 보안 기술은 인바운드 및 아웃바운드되는 데이터에 대해 허용 규칙과 거부 규칙을 수립하여, 원하는 데이터만 수용할 수 있게 필터링 할 수 있다.
'CS > aws 네트워크' 카테고리의 다른 글
[AWS 네트워크 보안] 보안그룹과 네트워크 ACL, VPC 플로우 로그, AWS WAF (0) | 2023.08.22 |
---|---|
[AWS 부하분산] ELB, Route 53, CloudFront, Global Accelerator (0) | 2023.08.11 |
[AWS 네트워크 인터넷 연결] AWS의 인터넷 연결, 인터넷 게이트웨이, NAT 디바이스, Proxy 인스턴스 (0) | 2023.08.10 |
[AWS 네트워크 VPC 고급] VPC 엔드포인트, 배치 그룹 (0) | 2023.08.10 |
AWS 소개 및 용어 정리 (0) | 2023.08.08 |