개념 자료

클라우드 네트워크

클라우드에 서버를 띄우면 그 서버는 클라우드가 만들어 준 가상의 네트워크 안에 놓입니다. 이 네트워크의 주소를 정하고, 길을 내고, 문을 지키고, 트래픽을 나누고, 다른 네트워크와 잇는 것이 클라우드 네트워크의 전부입니다. 클라우드 프로바이더마다 이름과 세부는 다르지만 뼈대는 같습니다. 뼈대를 먼저 보고, 프로바이더마다 다른 점은 장마다 따로 봅니다.

Google Cloud 기준으로 보고 있습니다. 장마다 Google Cloud의 서비스 이름과 다른 프로바이더와 다른 점을 함께 보여 줍니다.

01

클라우드 안에 내 네트워크 만들기: 가상 네트워크와 IP 대역

클라우드 데이터센터에는 수많은 고객의 서버가 함께 돌아갑니다. 그래도 내 서버끼리만 통하고 다른 고객과는 갈라져 있어야 합니다. 그래서 클라우드는 고객마다 논리적으로 분리된 네트워크를 만들어 줍니다. 이것을 가상 네트워크라고 합니다. 실제 케이블과 스위치는 공유하지만, 주소와 경로와 규칙은 고객마다 따로입니다.

가상 네트워크를 만들 때 가장 먼저 정하는 것이 사용할 IP 주소의 범위(대역)입니다. 보통 인터넷에서 쓰지 않기로 약속된 사설 대역 안에서 고릅니다. 사설 대역은 회사마다, 집집마다 겹쳐 써도 되는 주소라서 인터넷으로 바로 나가지는 못합니다(어떻게 나가는지는 3장에서 봅니다).

사설 대역 (RFC 1918)주소 수흔한 쓰임
10.0.0.0/8약 1,677만 개클라우드 가상 네트워크, 큰 회사 사내망
172.16.0.0/12약 105만 개사내망, 컨테이너 기본 네트워크
192.168.0.0/1665,536개가정용 공유기, 작은 사무실

CIDR: 슬래시 뒤 숫자 읽기

IPv4 주소는 32비트입니다. 10.0.0.0/16은 "앞 16비트(10.0)는 고정하고 나머지 16비트를 이 네트워크가 쓴다"는 뜻입니다. 그래서 주소는 2^16 = 65,536개입니다. / 뒤 숫자가 클수록 고정하는 부분이 길어져 대역이 작아집니다. 이 표기를 CIDR이라고 합니다. 아래 그림에서 서브넷 크기를 바꿔 보세요.

서브넷 크기
/24 · 주소 256개
들어가는 개수
256개
서버에 줄 수 있는 주소
252개 (예약 4개)

10.0.0.0/16 대역(땅)을 같은 크기의 서브넷(칸)으로 나눈다 · 연두 칸 = 첫 서브넷

Google Cloud의 VPC 네트워크에는 대역이 없고, 서브넷마다 대역을 정합니다. 그림은 10.0.0.0/16 범위를 서브넷들에 나눠 주는 계획으로 보세요. /24는 앞 24비트가 네트워크, 나머지 8비트가 주소라는 뜻입니다. 서브넷 하나에 주소 2^8 = 256개. 서브넷마다 4개를 예약하니 서버에 줄 수 있는 주소는 252개입니다. / 뒤 숫자가 1 커질 때마다 칸은 절반으로 작아지고 개수는 두 배가 됩니다.

접두사주소 수/16 안에 들어가는 개수
/1665,5361
/204,09616
/24256256
/28164,096

가상 네트워크의 대역은 다시 서브넷으로 나눕니다. 서브넷은 같은 성격의 서버를 모아 두는 구역입니다. 인터넷에 보일 웹 계층, 숨겨 둘 DB 계층처럼 역할별로 나누고, 서브넷마다 다른 경로(2장)와 방화벽(4장)을 걸 수 있습니다.

서브넷의 주소를 다 쓸 수는 없다

서브넷마다 클라우드가 미리 잡아 두는 주소가 있습니다. 서브넷의 첫 주소(네트워크 주소), 서브넷 밖으로 나가는 문인 게이트웨이, DNS 같은 것들입니다. 몇 개를 잡아 두는지는 클라우드 프로바이더마다 다릅니다. 그래서 /24 서브넷이라도 서버에 줄 수 있는 주소는 256개보다 조금 적습니다.

시험 단골 계산: "이 서브넷에 서버를 몇 대 둘 수 있나"는 2^(32 − 접두사) − 예약 주소 수입니다. 예약 주소 수는 프로바이더마다 다르니 문제에 나온 프로바이더 기준을 씁니다.

처음부터 넉넉하게, 겹치지 않게

대역은 만든 뒤 바꾸기 어렵습니다. 서버와 서비스가 늘 것을 생각해 넉넉하게 잡고, 사내망이나 다른 가상 네트워크와 겹치지 않게 나눠 둡니다. 사내망이 192.168.0.0/16을 쓰는데 클라우드도 같은 대역을 쓰면, 나중에 둘을 이으려 할 때 어느 쪽 192.168.1.10인지 가릴 수 없어 연결 자체가 안 됩니다(7장).

문제에 이런 표현이 나오면 → 이렇게 고른다

  • “10.0.0.0/16 네트워크를 /24 서브넷으로 나누면 몇 개”256개
  • “/28 서브넷에서 서버에 줄 수 있는 주소 수”16 − 그 프로바이더의 예약 주소 수
  • “사내망과 나중에 연결할 계획이 있다”사내망과 겹치지 않는 대역으로 설계
  • “인터넷에서 쓰지 않는 주소 범위”사설 대역 (10/8, 172.16/12, 192.168/16)
  • “서브넷마다 다른 접근 규칙을 걸고 싶다”역할(계층)별로 서브넷 나누기

대역을 나눠 서브넷을 만들었습니다. 그런데 서브넷의 서버가 보낸 패킷은 어디로 갈지 어떻게 알까요?

02

서브넷과 라우팅: 퍼블릭과 프라이빗을 가르는 것

서버가 패킷을 보내면 서브넷에 연결된 라우트 테이블이 갈 길을 정합니다. 라우트 테이블은 "이 대역으로 가는 패킷은 저 문으로 보낸다"는 줄의 목록입니다. 가상 네트워크에는 "네트워크 안의 주소는 네트워크 안에서 전달한다"는 기본 경로가 처음부터 있어서, 서브넷끼리는 따로 설정하지 않아도 통신합니다.

목적지            다음 홉(보낼 곳)
10.0.0.0/16       네트워크 안 (로컬)
172.16.0.0/12     VPN 연결 → 사내망
0.0.0.0/0         인터넷 게이트웨이

라우트 테이블은 패킷의 목적지 주소가 들어맞는 줄을 찾아 그 줄의 다음 홉으로 보냅니다. 예를 들어 웹 서버가 같은 네트워크에 있는 DB 서버(10.0.2.15)로 패킷을 보낸다고 해 봅시다. 10.0.2.15는 10.0.0.0/16 안의 주소이니 첫 줄에 맞습니다. 그런데 0.0.0.0/0은 "모든 주소"라서 마지막 줄에도 맞습니다.

이렇게 여러 줄이 맞을 때는 가장 구체적인 줄, 즉 / 뒤 숫자가 큰 줄이 이깁니다(최장 접두사 일치). /16이 /0보다 구체적이니 이 패킷은 네트워크 안에서 전달됩니다. 반면 인터넷의 웹사이트(203.0.113.10)는 앞의 두 줄에 맞지 않고 0.0.0.0/0에만 맞아 인터넷 게이트웨이로 갑니다. 그래서 0.0.0.0/0을 다른 어떤 줄에도 맞지 않는 주소가 마지막에 가는 곳, 기본 경로라고 부릅니다. 아래 그림에서 목적지와 서브넷 종류를 바꿔 보세요.

목적지
출발 서버
출발
외부 IP가 있는 VM
목적지
인터넷의 웹사이트 (203.0.113.10)
결과
default-internet-gateway

서버가 보낸 패킷이 표지판(VPC 네트워크 경로 (모든 VM))에서 길을 고른다 · 연두 줄 = 이긴 경로, 하늘 글씨 = 맞지만 진 경로

203.0.113.10에 맞는 경로는 0.0.0.0/0 하나뿐이라 default-internet-gateway로 나갑니다. 이때 출발지 주소는 서버의 사설 IP 10.0.1.20가 아니라 공인 IP 198.51.100.20로 바뀌어 보입니다. 사설 IP는 인터넷에서 쓸 수 없기 때문입니다.

퍼블릭 서브넷과 프라이빗 서브넷

인터넷 쪽으로 가는 경로(0.0.0.0/0 → 인터넷)가 있는 서브넷을 퍼블릭 서브넷, 없는 서브넷을 프라이빗 서브넷이라고 부릅니다. 서브넷에 붙인 이름이 아니라 경로가 정합니다. 퍼블릭 서브넷이라도 서버가 인터넷과 직접 주고받으려면 서버에 공인 IP가 있어야 합니다. 사설 IP만 가진 서버는 퍼블릭 서브넷에 있어도 인터넷에서 찾아올 수 없습니다.

흔한 웹 서비스는 이렇게 나눕니다.

계층두는 곳이유
로드 밸런서퍼블릭 서브넷인터넷에서 요청을 받아야 한다
웹·앱 서버프라이빗 서브넷로드 밸런서를 통해서만 요청을 받는다
데이터베이스프라이빗 서브넷앱 서버 외에는 닿을 이유가 없다
"이 서브넷은 퍼블릭인가?"의 답은 서브넷 이름이 아니라 라우트 테이블에 있습니다. 서버가 인터넷에 안 나간다는 문제가 나오면 경로, 공인 IP, 방화벽(4장)을 차례로 의심합니다.

문제에 이런 표현이 나오면 → 이렇게 고른다

  • “서브넷의 서버가 인터넷에 직접 닿지 않게”프라이빗 서브넷 (인터넷 경로 없음)
  • “같은 목적지에 맞는 경로가 두 개”더 구체적인 (접두사가 긴) 경로가 이긴다
  • “같은 네트워크의 서브넷끼리 통신”기본 로컬 경로 — 따로 설정할 것 없음
  • “DB를 인터넷에서 접근하지 못하게”프라이빗 서브넷에 둔다
  • “퍼블릭 서브넷인데 서버가 인터넷에서 안 보인다”서버에 공인 IP가 있는지 확인

DB와 앱 서버를 프라이빗 서브넷에 숨겼습니다. 그런데 이 서버들도 보안 업데이트는 받아야 하고, 같은 클라우드의 저장소 서비스에도 접근해야 합니다. 인터넷 경로가 없는데 어떻게 나갈까요?

광고

03

프라이빗 서브넷에서 밖으로 나가기: NAT와 사설 엔드포인트

NAT(Network Address Translation, 주소 변환)는 프라이빗 서버의 대리인입니다. 서버가 인터넷으로 보낸 패킷의 출발지 주소를 NAT 자신의 공인 IP로 바꿔 내보내고, 응답이 오면 누가 보낸 요청이었는지 기억해 둔 대로 원래 서버에게 돌려줍니다.

상황
상황
서버 → 인터넷 (업데이트 받기)

프라이빗 서브넷의 앱 서버가 밖과 주고받는 길 · 연두 = 나가는 패킷, 하늘 = 돌아오는 패킷

프라이빗 서브넷의 서버는 공인 IP가 없어 혼자서는 인터넷에 나갈 수 없습니다. NAT가 출발지 주소를 자기 공인 IP로 바꿔 내보내고, 돌아온 응답을 기억해 둔 서버에게 돌려줍니다. Cloud NAT는 서브넷 안의 장비가 아니라 리전 단위 설정이고, Cloud Router 위에 구성합니다.

핵심은 방향입니다. NAT는 안에서 시작한 연결만 대신해 줍니다. 밖에서 먼저 들어오려는 연결은 누구에게 보낼지 모르니 받지 않습니다. 그래서 "서버가 업데이트는 받아야 하지만 인터넷에서 접속되면 안 된다"는 문제의 답이 NAT입니다. 반대로 인터넷에서 서버로 요청을 받으려면 로드 밸런서(5장)나 서버의 공인 IP가 필요합니다.

NAT는 대개 클라우드가 관리해 주는 서비스로 씁니다. 서버 한 대를 NAT로 직접 꾸미는 방법도 있지만, 그 서버가 죽으면 프라이빗 서브넷 전체가 밖으로 못 나가니 고가용성과 관리 부담을 따로 챙겨야 합니다. 관리형 NAT를 어느 범위(영역 하나, 리전 전체)에 두는지는 프로바이더마다 다릅니다.

인터넷을 거치지 않고 클라우드 서비스에 닿기: 사설 엔드포인트

저장소, 큐, 키 관리 같은 클라우드의 관리형 서비스는 보통 인터넷 쪽 공개 주소를 가집니다. 프라이빗 서버가 그냥 부르면 NAT를 지나 인터넷 쪽으로 나갔다가 들어옵니다. 사설 엔드포인트를 두면 그 길이 네트워크 안에서 끝납니다. 방식은 두 가지입니다.

방식어떻게특징
경로형라우트 테이블에 "그 서비스 대역 → 엔드포인트" 경로를 넣는다서비스의 공개 주소를 그대로 쓴다. 대상 서비스가 적고, 추가 요금이 없는 경우가 많다
인터페이스형내 서브넷에 그 서비스용 사설 IP를 하나 꽂는다사설 IP로 부른다. VPN·전용선으로 이어진 사내망에서도 쓸 수 있다. 시간·데이터 요금이 붙는다
NAT는 "인터넷 아무 데나 나가기", 사설 엔드포인트는 "특정 클라우드 서비스에 인터넷 없이 닿기"입니다. 같은 리전의 저장소로 대량의 데이터를 옮기는데 NAT 비용이 많이 나온다면, 사설 엔드포인트로 그 트래픽을 NAT에서 빼는 것이 정답입니다.

문제에 이런 표현이 나오면 → 이렇게 고른다

  • “프라이빗 서버가 패치를 받되 인터넷에서 접속은 막기”NAT
  • “인터넷을 거치지 않고 저장소 서비스에 접근”사설 엔드포인트
  • “같은 클라우드 저장소로 대량 전송 중 NAT 비용이 크다”저장소용 사설 엔드포인트
  • “사내망에서 클라우드 서비스를 사설 IP로 부르기”인터페이스형 엔드포인트
  • “인터넷에서 프라이빗 서버로 요청을 받아야 한다”NAT가 아니라 로드 밸런서

이제 패킷이 갈 길은 정해졌습니다. 하지만 길이 있다고 아무나 지나가게 둘 수는 없습니다. 어떤 패킷을 들여보내고 막을지 정하는 문지기가 필요합니다.

Pro 전용

여기까지 무료로 읽을 수 있어요

나머지 5개 장은 Pro 구독자에게 열려 있어요. 장마다 3D 그림과 "문제에 이런 표현이 나오면" 정리가 이어지고, 마지막 장에서는 직접 풀어 보며 확인합니다.

  1. 04방화벽 두 겹 (상태 저장·비저장)
  2. 05로드 밸런서와 헬스 체크
  3. 06DNS와 엣지 (CDN·WAF)
  4. 07네트워크끼리 잇기 (피어링·VPN·전용선)
  5. 08연결이 안 될 때