[GCP-5] VPC

2022. 1. 14. 09:00카테고리 없음

0. 지난 글

[GCP-1] 구글 클라우드 기본 개념

https://ejtag.tistory.com/23

[GCP-2] 구글 클라우드 실습 준비

https://ejtag.tistory.com/24

[GCP-3] 구글 클라우드 IAM

https://ejtag.tistory.com/25

[GCP-4] Compute Engine

https://ejtag.tistory.com/26

 

6. VPC

6.1. VCP란

Virtual Private Cloud

VPC란 GCP 리소스를 위한 관리형 네트워킹 기능을 제공한다.

 

VPC 기능

- 네트워크와 인터페이스 및 IP 주소

- VPC 공유 및 피어링

- 하이브리드 클라우드 : VPN이나 인터커넥트를 사용하여 온프레미스 및 다른 벤더의 클라우드 서비스와 연결할 수 있는 하이브리드 클라우드 기능 제공한다.

- 부하 분산 : GCP 내 트래픽 및 작업 부하를 여러 VM인스턴스에 분산시키기 위해 사용한다. (http(s) 부하 분산, SSL 프록시, TCP 프록시 등)

 

VPC네트워크는 데이터센터의 지역 가상 서브넷으로 구성된다.

VPC를 이용하면 공개 인터넷을 통하지 않더라도 여러 리전으로 확장할 수 있다.

VPC는 서비스에 공개 IP주소를 지정할 필요 없이 구글서비스(repository, 데이터베이스 등에 비공개로 엑세스 가능하다.

 

6.2. VPC 네트워크

VPC 네트워크는 네트워크의 가상화 버전이다.

프로젝트에서 별도로 네트워크 설정을 하지 않으면 새로운 프로젝트를 생성 시 각 리전에 하나의 서브넷이 있는 'default 네트워크'로 시작된다.

 

6.2.1 VPC 네트워크 특징

- VPC 네트워크는 연결된 라우터와 방화벽 규칙을 포함한 전역 리소스이다.

- 서브넷은 지역 리소스로, 각 서브넷은 *CIDR을 이용하여 IP 주소 범위를 정의한다.

============================================================================

* CIDR란?

사이더는 위 Intra-Domain과 같이 각 네트워크 대역을 구분 짓고 Inter-Domain 과 같이 구분된 네트워크간 통신을 위한 주소 체계라고 이해하면 쉬울 것 같네요.

혹시 IP뒤에 192.168.10.0/24 이런식으로 "/24"를 보신적이 있으신가요? 바로 이것이 사이더 표기법입니다.

참고 : https://kim-dragon.tistory.com/9

 

[네트워크] CIDR이란?(사이더 란?)

오늘은 CIDR에 대해서 설명해보도록 하겠습니다. 네트워크 설계를 하면서 가장 많이 접하게 될 개념이 CIDR입니다. 사이더라고 부릅니다. CIDR의 full name은 Classless Inter-Domain Routing 으로 클래스 없는

kim-dragon.tistory.com

============================================================================

- 인스턴스에서 송수신되는 트래픽은 방화벽 규칙으로 제어할 수 있다.

- 내부 IP 주소가 있는 인스턴스는 google API 및 서비스와 통신할 수 있다.

- 네트워크 관리는 IAM을 사용하여 관리할 수 있다.

- 공유 VPC를 사용하면, VPC 네트워크를 공용 호스트 프로젝트에 유지할 수 있다.

- *VPC 네트워크 피어링으로 VPC 네트워크를 다른 프로젝트 또는 조직의 다른 VPC 네트워크에 연결할 수 있다.

============================================================================

* 네트워크 피어링이란?

Google Cloud VPC 네트워크 피어링은 동일한 프로젝트에 속하는지 또는 동일한 조직에 속하는지에 관계없이 두 개의 Virtual Private Cloud(VPC) 네트워크에서 내부 IP 주소 연결을 허용합니다.

VPC 네트워크 피어링을 사용하면 여러 VPC 네트워크의 워크로드가 내부적으로 통신할 수 있도록 VPC 네트워크를 연결할 수 있습니다. 트래픽은 Google 네트워크에 그대로 머무르며 공개 인터넷을 거치지 않습니다.

참고 : https://cloud.google.com/vpc/docs/vpc-peering?hl=ko 

============================================================================

- cloud VPN이나 cloud interconnect를 사용하면 온프레미스 환경이나 타 벤더의 클라우드 서비스를 연결할 수 있는 하이브리드 환경을 지원한다.

- VPC 네트워크는 IPv4 유니 캐스트 트래픽만 지원한다. (네트워크 내의 브로드 캐스트, 멀티캐스트 또는 IPv4는 지원하지 않는다.)

- 각 프로젝트는 사전 정의된 default 네트워크로 시작하며, 커스텀을 통한 네트워크를 선택 가능하다.

 

6.2.2 네트워크와 서브넷

개별 VPC 네트워크는 하나 이상의 서브넷을 가지게 된다.

Google VPC에서 서브넷은 크게 2가지 모드가 있다.

- 자동 모드 : 네트워크가 생성될 때 각 지역마다 서브넷이 하나씩 자동 생성된다. (IP범위가 겹치지 않음)

- 커스텀 모드 : 네트워크가 생성될 때 자동으로 서브넷이 만들어지지 않기 떄문에 개발자가 직접 서브넷과 IP범위를 설정해야한다.(IP범위가 겹칠 수 있음)

서브넷은 리전 객체이므로 선택한 리전에 따라 사용할 수 있는 서브넷이 결정된다.

 

서브넷 생성시 기본 IP 주소 범위 지정 (최대 5개까지 정의 가능함)

- 기본 IP 주소 범위 : 서브넷의 기본 IP 주소 범위에 대한 비공개 *RFC 1918 CIDR 블록을 선택할 수 있으며, 이러한 IP 주소는VM 내부 IP 주소, VM 별칭 IP 주소, 내부 부하 분산기의 IP 주소에 사용 가능하다.

- 보조 IP 주소 범위 : 별도의 RFC 1918 CIDR 블록인 보조 IP주소를 최대 5개까지 정의할 수 있으며 이는 별칭 IP 주소에만 사용된다.

============================================================================

* RFC 1918 CIDR 블록?

인터넷을 사용하는 도메인이라면 IP가 있고, 그 IP가 중복이 되면 서로 구분할 수 없다. 따라서 각 IP가 유일하도록 관리하고 분배하는 주체가 있다. ICANN을 필두로 그 권한을 이어받아 ISP가 내가 사용하는 IP를 설정해준다. 하지만 회사나 네트워크에서는 모든 도메인에 공인 IP를 줄 순 없으니 여러 네트워크에서는 앞단에 라우터 하나를 두고 안쪽에서는 private network로 구성해서 사용한다. 그러면 공인 IP와 사설 IP를 구분할 기준이 필요한데 국제 인터넷 표준화 기구(IETF)에서 그 대역을 정했다. 권고 사항이긴 하지만 어길 경우에 이를 해석하는 과정에서 충돌이 일어날 수 있기 때문에 지켜야 한다.

 

RFC1918

IP 대역 CIDR
10.0.0.0 – 10.255.255.255 10.0.0.0/8
172.16.0.0 – 172.31.255.255 172.16.0.0/12
192.168.0.0 – 192.168.255.255 192.168.0.0/16

 

여기에 정의된 대역은 사설 네트워크로 사용해도 된다.

가까운 예로 AWS에서 VPC 구성을 할 때 CIDR 블록을 설정해야 하는데 이때 RFC1918에서 정의한 사설 대역으로 구성해야 한다.

참고 : https://ohgym.tistory.com/25

============================================================================

 

6.2.3 예약된 IP

모든 서브넷은 기본 IP 범위에 4개의 예약된 IP 주소가 있다.

예약된 주소 설명 예시
네트워크 서브넷의 기본 IP 범위에서 첫 번째 주소 10.1.2.0/24의 10.1.2.0
기본 게이트웨이 서브넷의 기본 IP 범위에서 두 번째 주소 10.1.2.0/24의 10.1.2.1
끝에서 두번째 예약 서브넷의 기본 IP 범위에서 끝에서 두 번째 주소 10.1.2.0/24의 10.1.2.254
브로드캐스트 서브넷의 기본 IP 범위에서 마지막 주소 10.1.2.0/24의 10.1.2.255

6.2.4 자동 모드 IP 범위

자동모드 VPC 네트워크는 생성 리전에 따라 사용가능한 주소 범위 내에 하나의 서브넷을 받는다.

https://cloud.google.com/vpc/docs/vpc?hl=ko

 

6.3 방화벽 규칙

각 VPC  네트워크는 가상 방화벽을 구현한다.

방화벽 규칙을 사용해 패킷을 허용하거나 거부할 수 있다.

방화벽 규칙의 특성

- 방화벽 규칙은 VPC 네트워크 수준에서 정의되며, 규칙 자체는 네트워크 간에 공유될 수 없다.

- 방화벽 규칙은 IPv4만 지원하며, 대상을 지정할 때는 CIDR 표기법 이용한다.

- 방화벽 규칙에 의해 수행되는 작업은 허용 또는 거부 중 하나이다.

- 방화벽 규칙은 수신 또는 송신 트래픽 모두에 적용되도록 정의한다.

 

6.3.1 방화벽 규칙의 구성 요소

- 우선순위 : 0~65535 사이의 정수, 낮을수록 우선순위 높다.

- 트래픽 방향 : 송신(egress) / 수신(ingress)

- 작업 : 허용(allow) / 거부(deny)

- 적용 : 방화벽 규칙 적용(enable) / 미적용(disable)

- 대상 : 네트워크의 모든 인스턴스, 대상 태그별 인스턴스, 대상 서비스 계정별 인스턴스

- 소스(source) : (수신에만 적용) 소스 IP 범위, 소스 태그, 소스 서비스 계정, 소스 IP 범위 default는 all(0.0.0.0/0) 

- 목적지(destination) : (송신에만 적용) IP 범위, default는 all(0.0.0.0/0) 

- 프로토콜 : 특정 프로토콜과 포트를 지정 가능(tcp, udpp, tcp:3000)

 

6.4 경로(routing)

경로는 VM 인스턴스 및 VPC 네트워크에 인스턴스에서 내부 또는 외부로 트래픽을 보내는 방법을 알려준다.

각 VM 인스턴스에는 라우팅 테이블에 적용 가능한 경로에 대한 정보를 유지하는 컨트롤러가 있어서 VM에서 나가는 각 패킷은 라우팅 순서에 따라 적절한 다음 홉으로 전달된다. 경로를 추가하거나 삭제하면 변경 사항이 컨트롤러를 통해서 전파되어 최신 상태를 유지한다.

경로의 종류

- 시스템이 자동으로 생성하는 경로 : 사용자가 네트워크를 만들거나, 서브넷을 추가하거나, 서브넷의 보조 IP범위를 수정할 때 시스템에서 자동으로 생성되는 경로

- 커스텀 경로 : 커스텀 경로는 사용자가 직접 또는 클라우드 라우터를 사용하여 만들고 유지 및 관리하는 경로

https://cloud.google.com/vpc/docs/routes

6.4.1 기본 경로

VPC 네트워크를 만들면 GCP 시스템에서 자동으로 기본 경로를 만든다.

기본 경로는 VPC 네트워크에서 나가는 경로를 정의한다.

 

6.4.2 서브넷 경로

서브넷 경로는 VPC 네트워크 서브넷으로 가는 경로이다.

 

6.4.3 커스텀 정적 경로

커스텀 정적 경로는 사용자가 수동으로 만든 정적 경로이거나

하나이상의 클라우드 라우터에서 자동으로 유지되는 동적 경로이다.

 

6.4.4. 커스텀 동적 경로

커스텀 동적 경로는 Dynamic Routing Porocol인 BGP를 통해 경로 생성이 가능하다.

커스텀 동적 경로는 하나 이상이 cloud router에서 관리된다.

이 경로의 대상 위치는 항상 VPC 네트워크 외부의 IP 범위를 나타내며 다음 홉은 항상 BGP 피어 주소이다.

 

6.6. IP 주소

GCP에서는 특정 리소스(ex 특정 규칙 등)에 IP주소를 할당할 수 있다.

 

개별 VM 인스턴스는 

- 기본 내부 IP 주소 1개 : 동일한 VPC 네트워크 상 인스턴스 간 통신에 사용한다.

- 하나 이상의 보조 IP 주소(별칭 IP)

- 외부 IP 주소 1개 : 인터넷으로 통신하기 위한 주소이다.

를 보유할 수 있다.

 

6.6.1 외부 IP 주소

외부 IP 주소를 사용하여 외부 리소스와 통신할 때 발신자가 동일한 VPC 네트워크에 있더라도, 추가 청구 요금이 발생할 수 있다.

외부 IP 주소 종류

- 고정 외부 IP 주소 : 명시적으로 해제될 때까지 프로젝트에 무기한으로 할당된다. 자동으로 생성되지 않아 직접 설정해야 한다.

- 임시 외부 IP 주소 : 리소스를 중지 및 삭제할 때 임시 IP 주소가 리소스에서 해제되고 시작이나 생성을 하면 새로운 임시 외부 IP가 다시 할당된다.

 

6.6.2 내부 IP 주소

내부 IP주소는 인스턴스 생성 시 자동으로 할당된다.

동일한 VPC 네트워크 내에서 통신할 때 사용한다.

- 고정 내부 IP 주소 : 명시적으로 해제될 때까지 프로젝트에 무기한으로 할당된다. 

- 임시 내부 IP 주소

 

6.7 별칭 IP 범위

하나의 VM에서 여러 서비스를 실행하고 있어서 각 서비스에 서로 다른 IP 주소를 할당하고자 할 때 유용하다.

 

6.8 다중 네트워크 인터페이스

VM 인스턴스에 여러 네트워크 인터페이스를 추가할 수 있다.

여러 네트워크 인터페이스를 통해 네트워크 VM이 다른 VPC 네트워크 간 또는 인터넷 간 트래픽을 보호하는 게이트웨이 역할을 한다.

 

6.9 공유 VPC

공유 VPC를 사용하면 조직에서 여러 프로젝트의 리소스를 공통 VPC 네트워크에 연결할 수 있다. 때문에 해당 네트워크의 내부 IP를 사용하여 서로 안전하고 효율적으로 통신할 수 있다.

조직 내 중심이 되는 하나의 프로젝트를 '호스트 프로젝트'로 지정하고 이후 하나 이상의 다른 서비스 프로젝트를 여기에 연결한다. 이때, 호스트 프로젝트의 VPC 네트워크를 공유 VPC 네트워크라고 하며 공유 VPC 네트워크에 연결된 다른 프로젝트들은 '서비스 프로젝트'라고 한다.

이렇게 공유 VPC를 사용하면 조직 관리자가 서브넷, 경로, 방화벽 같은 네트워크 리소스를 중앙에서 제어 가능하다.

공유 VPC

6.10 VPC 네트워크 피어링

VPC 네트워크 피어링을 사용하면 모든 통신이 개인 RFC 1918 IP 주소를 사용하여 이루어진다.

방화벽 규칙에 따라 페어링 된 각 네트워크의 VM 인스턴스는 외부 IP주소를 사용하지 않고도 서로 통신할 수 있다.

VPC Peering

6.11 Cloud VPN

하이브리드 클라우드 서비스 중 하나

VPN은 가상의 사설 네트워크를 통해 물리적 온프레미스 네트워크 또는 다른 벤더의 클라우드 서비스와 연결할 수 있다.

 

6.12 Cloud Interconnect(Interconnect)

하이브리드 클라우드 서비스 중 하나

인터커넥트는 고속의 물리적 연결을 사용하여 VPC 네트워크를 온프레미스 네트워크에 연결할 수 있다.

 

인터커넥트의 옵션

- 조직 내부 네트워크와 구글 네트워크 간의 실제 연결

- 서비스 제공업체를 통해 조직 내부 네트워크와 VPC 네트워크를 연결

두 가지 모두 공개 인터넷을 거치치 않아 홉 수가 감소하므로 트래픽 손실이나 중단, 장애 가능성이 낮아지고 빠른 속도를 제공한다.

 

6.13 Cloud Load Balancing

Cloud Load Balancing을 이용하면 작업이나 트래픽이 발생하는 경우 여러 리소스로 작업을 분산시켜서 가용성 및 확장성 있는 서비스를 만들 수 있도록 한다.

 

[실습 6.1 - VPC 네트워크 설정]

메뉴 > VPC 네트워크 > VPC 네트워크 에서 VPC 네트워크 만들기 클릭

VPC 네트워크 설정값

- 이름 : my-vpc-network

- 설명

- 서브넷 : 자동

- 방화벽 규칙 : 조작안함

- 동적 라우팅 모드 : 지역 선택하고 만들기 버튼 클릭함

my-vpc-network가 생성됨

이제 VM 인스턴스 만들때 default 뿐만 아니라 방금 생성한 'my-vpc-network'도 선택 가능하다.

 

[실습 6.2 - 방화벽 규칙 만들기]

태그를 이용해 방화벽 규칙을 적용하는 법을 알아보자

메뉴 > VPC 네트워크 > 방화벽 에서 방화벽 규칙 만들기 클릭한다.

이제 node 서버에서 사용할 3000번 포트 수신을 열겠다.

- 이름 : allow-node-server

- 설명 : for node server

- 로그 : tkdyd dksgka

- 네트워크 : default

- 우선순위 : 1000

- 트래픽 방향 : 수신

- 일치 시 작업 : 허용

- 대상 : 지정된 대상 태그

- 대상 태그 : node-server

- 소스 필터 : IP 범위

- 소스 IP 범위 : 0.0.0.0/0

- 보조 소스 필터 : 없음

- 프로토콜 및 포트 : tcp:3000

설정 후 만들기를 클릭한다.

 

방화벽 규칙이 생긴걸 확인할 수 있다.

[실습 6.3 - 외부 고정 IP 만들기]

GCP에서 VM을 만들때 외부IP는 임시로 설정되며, VM이 재시작할떄마다 바뀐다. 

이를 방지하기 위해 설정을 몇가지 해야 한다.

VPX 네트워크 > 외부 IP 주소 에서 고정 주소 예약 버튼 클릭하여 위와 같이 입력하고 예약 버튼을 누른다.
맨 아래에 고정 IP 설정이 된것을 확인할 수 있다.

이렇게 고정 외부 IP가 설정되면, VM 생성시 네트워킹 설정 부분에서 외부 IP를 지정된 외부 IP로 사용할 수 있다.

지정된 외부 IP는 VM이 재시작되더라도 변하지 않고 계속  사용이 가능하다.