사설망과 CIDR
사설망
![](https://velog.velcdn.com/images/ebab_1495/post/84bbe155-120c-428b-b24e-677f7706ffff/image.png)
- 한정된 IP주소를 최대한 활용하기 위해 IP주소를 분할하고자 만든 개념
- 하나의 퍼블릭 IP를 여러 기기가 공유할 수 있는 방법
- 하나의 망에는 프라이빗 IP를 부여받은 기기들과 NAT 기능을 갖춘 Gateway로 구성
- NAT(Network Address Translation) : 여러 IP주소의 트래픽을 교통정리 해주는 기능
- 각 기기는 인터넷과 통신시 Gateway를 통해 통신
- PrivateIP는 지정된 대역의 아이피만 사용 가능
![](https://velog.velcdn.com/images/ebab_1495/post/388065ad-60d9-4f3e-8f30-8e2f17be98e1/image.png)
CIDR (Classless Inter Domain Routing)
- 주소의 영역을 여러 네트워크 영역으로 나누기 위해 IP를 묶는 방식
- 여러 개의 사설망을 구축하기 위해 망을 나누는 방법
CIDR Notation
- IP 주소의 집합
- 네트워크 주소와 호스트 주소로 구성
- 각 호스트 주소 숫자만큼의 아이피를 가진 네트워크 망 형성 가능
- A.B.C.D/E의 형식
- A,B,C,D : 네트워크 주소 + 호스트 주소 표시
- E : 0~32를 가지고 네트워크 주소가 몇 bit인지 표시
- ex. 10.0.1.0/24 , 172.16.0.0/12
- CIDR Block
- 호스트 주소 비트만큼 IP 주소 보유 가능
- ex. 192.168.2.0/24 ⇒ 192.168.2.0~192.168.2.255 까지 IP 보유
서브넷
- 네트워크 안의 네트워크
- 큰 네트워크를 잘게 쪼갠 단위
- 일정 IP 주소의 범위를 보유
- 큰 네트워크에 부여된 IP범위를 조금씩 잘라 작은 단위로 나눈 후 각 서브넷에 할당
- 구조
![](https://velog.velcdn.com/images/ebab_1495/post/4e19263e-0ca5-4f18-b543-dc2fbbce9df5/image.png)
AWS 서브넷의 갯수
AWS의 사용 가능 IP 갯수는 5개를 제외하고 계산
ex. 10.0.0.0/24 일 때, 사용 가능한 IP는 256-5 = 251개
- 10.0.0.0 : 네트워크 어드레스
- 10.0.0.1 : VPC Router
- 10.0.0.2 : DNS Server
- 10.0.0.3 : 미래에 사용 가능성을 위해 남겨둠
- 10.0.0.255 : Network Broadcast Address (단 브로드캐스트는 지원하지 않음)
VPC와 서브넷
AWS 설명 : Virtual Private Cloud는 사용자의 AWS 계정 전용 가상 네트워크입니다. VPC는 AWS 클라우드에서 다른 가상 네트워크와 논리적으로 분리되어 있습니다. EC2 인스턴스와 같은 AWS 리소스를 VPC 에서 실행할 수 있습니다. IP 주소 범위와 VPC 범위를 설정하고 서브넷을 추가하고 보안 그룹을 연결한 다음 라우팅 테이블을 구성합니다.
![](https://velog.velcdn.com/images/ebab_1495/post/cce988af-0f8f-48ed-ae06-29e572a3bc3c/image.png)
VPC
- 가상의 데이터센터
- 원하는 대로 사설망을 구축 가능
- 리전 단윈
- 사용 사례
- EC2, RDS, Lambda 등의 AWS의 컴퓨팅 서비스 실행
- 다양한 서브넷 구성
- 보안 설정 (IP Block, 인터넷에 노출되지 않는 EC2 등 구성)
기본 VPC
- AWS 계정 생성시 자동으로 생성되어 있음
- 기본적으로 각 AZ마다 서브넷을 생성
- 모든 서브넷에 인터넷 접근이 가능함(= 퍼블릭 서브넷)
- 다양한 AWS 서비스가 기본 VPC를 이용하기 때문에, 삭제시 여러 AWS 서비스의 사용에 제약
커스텀 VPC
- 직접 생성
- 기본적으로 인터넷에 연결되어 있지 않음
- 인터넷 게이트웨이와 라우팅 설정 없이 퍼블릭 서브넷 생성 불가능
- 별도의 조치 없이 인터넷으로 연결 가능한 EC2 생성 불가능
VPC 구성요소
서브넷
- VPC의 하위 단위로 VPC에 할당된 IP를 더 작은 단위로 분할한 개념
- 하나의 서브넷은 하나의 AZ안에 위치
- 별도의 설정이 없다면 동일한 서브넷 IP끼리만 통신 가능
- 다른 서브넷과 소통하기 위해서는 라우팅 설정이 필요
- CIDR block range로 IP 주소 지정
- 종류
- 퍼블릭 서브넷 : 외부에서 인터넷을 통해 연결할 수 있는 서브넷
- 인터넷 게이트웨이(IGW)를 통해 외부의 인터넷과 연결되어 있음
- 안에 위치한 인스턴스에 퍼블릭 IP부여 가능
- 웹서버, 어플리케이션 서버 등 유저에게 노출되어야 하는 인프라
- 프라이빗 서브넷 : 외부에서 인터넷을 통해 연결할 수 없는 서브넷
- 외부 인터넷으로의 경로가 없음
- 퍼블릭 IP 부여 불가능
- 데이터베이스, 로직 서버 등 외부에 노출될 필요가 없는 인프라
인터넷 게이트웨이
NACL(Network Access Control List) / 보안 그룹
Route 테이블
- 트래픽이 어디로 가야할 지 알려주는 이정표
- VPC 생성시 기본으로 하나 제공
NAT Instance / NAT Gateway
Bastion Host
VPC Endpoint
VPC 흐름 로그
- VPC의 네트워크 인터페이스에서 전송되고 수신되는 IP트래픽에 대한 정보를 수집할 수 있는 기능
- 들어오고 나가는 IP주소
- 프로토콜
- 포트
- 패킷 사이즈 등
- S3나 CloudWatch에 저장 가능
NAT Gateway와 Bastion Host
NAT Gateway
NAT Gateway AWS 설명 : NAT 게이트웨이는 VPC의 프라이빗 서브넷에 있는 인스턴스에서 인터넷에 쉽게 연결할 수 있도록 지원하는 가용성이 높은 AWS 관리형 서비스입니다.
- Private 인스턴스가 외부의 인터넷과 통신하기 위한 통로
- NAT Instace : 단일 EC2 인스턴스
- NAT Gateway : AWS에서 제공하는 서비스
- NAT Instace/Gateway는 모두 서브넷 단위
- 구조
![](https://velog.velcdn.com/images/ebab_1495/post/7165de2d-65fe-4f48-b32c-c6f0ab8758b9/image.png)
Bastion Host
Bastion Host 설명 : 외부에서 사설 네트워크에 접속할 수 있도록 경로를 확보해주는 서버.
- Private 인스턴스에 접근하기 위한 EC2 인스턴스
![](https://velog.velcdn.com/images/ebab_1495/post/3557ef8f-7d3c-43fa-9341-a26163a35a69/image.png)
보안 그룹과 NACL(Network Access Control List)
구체적인 보안 그룹 설명 : 인스턴스에 대한 인바운드 및 아웃바운드 트래픽을 제어하는 가상 방화벽 역할을 합니다. VPC에서 인스턴스를 시작할 때 최대 5개의 보안 그룹에 인스턴스를 할당할 수 있습니다. 보안 그룹은 서브넷 수준이 아니라 인스턴스 수준에서 작동하므로 VPC에 있는 서브넷의 각 인스턴스를 서로 다른 보안 그룹 세트에 할당할 수 있습니다. 시작할 때 특정 그룹을 지정하지 않으면 인스턴스가 자동으로 VPC의 기본 보안 그룹에 할당됩니다.
보안그룹
- NACL과 함께 방화벽의 역할을 하는 서비스
- Port 허용
- 기본적으로 모든 포트는 비활성화
- 선택적으로 트래픽이 지나갈 수 있는 Prot와 Source를 설정 가능
- Deny는 불가능 → NACL로 가능
- 인스턴스 단위
- 하나의 인스턴스에 하나 이상의 SG설정 가능
- NACL의 경우 서브넷 단위
- 설정된 인스턴스는 설정한 모든 SG의 룰을 적용 받음
- 기본 5개, 최대 16개
보안 그룹의 Stateful
- 보안 그룹은 Stateful
- 인바운드로 들어온 트래픽이 별다른 아웃바운드 설정 없이 나갈 수 있음
- NACL은 Stateless
NACL
- 보안그룹처럼 방화벽 역할을 담당
- 서브넷 단위
- 포트 및 아이피를 직접 Deny 가능
- 외부 공격을 받는 상황 등 특정 아이피를 블록하고 싶을 때 사용
VPC 연결
VPC Peering
- AWS 설명 : VPC 피어링 연결은 프라이빗 IPv4 주소 또는 IPv6 주소를 사용하여 두 VPC간에 트래픽을 라우팅 할 수 있도록 하기 위한 두 VPC 사이의 네트워킹 연결입니다. 동일한 네트워크에 속하는 경우와 같이 VPC의 인스턴스가 서로 통신할 수 있습니다.
- 두 개의 다른 VPC를 연결하여 VPC안의 다른 리소스끼리 통신이 가능하도록 설정하는 것
- 다른 리전, 다른 계정의 VPC끼리 연결 가능
- CIDR Range의 중첩 불가능
- Transitice Peering 불가능
![](https://velog.velcdn.com/images/ebab_1495/post/1401bc6e-f413-4640-976a-caffff66f77d/image.png)
- 통신을 위해서는 직접 연결되어 있어야 함
- 혹은 Transit Gateway 이용
![](https://velog.velcdn.com/images/ebab_1495/post/faafca9c-8b65-4f24-a780-2c1bf31e3284/image.png)
VPN (Virtual Private Network)
- AWS 설명 : VPN 솔루션은 온프레미스 네트워크, 원격 사무실, 클라이언트 디바이스 및 AWS 글로벌 네트워크 사이에서 보안 연결을 설정합니다.
Site-to-Site VPN
- 데이터센터와 AWS를 연결하는 하드웨어-하드웨어 연결 (1:1 연결)
- IPSec 프로토콜 사용
Client VPN
- AWS 온프레미스/AWS VPN장비와 사용자의 PC를 연결하는 하드웨어-소프트웨어 연결 (1:N)
- PC가 네트워크 내부에 있는 것처럼 작동
- TLS 프로토콜 사용
![](https://velog.velcdn.com/images/ebab_1495/post/1ad1891e-a4ba-457e-b60c-4db5a76761fc/image.png)
AWS Direct Connect
- AWS 설명 : AWS Direct Connect 클라우드 서비스는 AWS 리소스에 대한 최단 경로입니다.
- AWS와 온프레미스간 DXLocation을 경유한 전용선을 통해 연결
- 외부 인터넷과 분리되어 있음
- 외부에서 접근이 불가능하기 때문에 높은 보안
- 인터넷 환경에 상관 없이 일정한 속도 보장
- Direct Connect gateway : 여러 리전의 VPC를 한번에 DIrect Connect로 연결할 수 있는 서비스
![](https://velog.velcdn.com/images/ebab_1495/post/f01546d2-8857-4aa9-b346-93bbdcbf9baf/image.png)
AWS Transit Gateway
- 중앙 허브를 통해 VPC들과 온프레미스 네트워크를 연결하는 서비스
- 복잡한 Peering 관계를 제거하여 간소화
- 리전 간에는 서로 다른 Transit Gateway끼리 연결
![](https://velog.velcdn.com/images/ebab_1495/post/0e6e4bbe-0493-4983-bce7-60449870448a/image.png)