Cloud/GCP

VPC Network

달빛궁전- 2023. 1. 17. 10:28
🪧

VPC

Virtual Private Cloud는 Andromeda를 사용하여 Google의 프로덕션 네트워크 내에서 구현되는 물리적 네트워크의 가상 버전 Andromeda : 구글 네트워크 가상화 스택에 있는 기술

  • GCP 문서
VPC 네트워크 | Google Cloud
Virtual Private Cloud(VPC) 네트워크는 Andromeda 를 사용하여 Google의 프로덕션 네트워크 내에서 구현되는 물리적 네트워크의 가상 버전입니다. VPC 네트워크는 다음을 제공합니다. 프로젝트에는 여러 VPC 네트워크가 포함될 수 있습니다. 이를 금지하는 조직 정책을 만들지 않는 한, 새 프로젝트는 각 리전에 하나의 서브네트워크(서브넷)가 있는 기본 네트워크(자동 모드 VPC 네트워크)로 시작됩니다.
https://cloud.google.com/vpc/docs/vpc?hl=ko

CIDR/Subnet

CIDR : Classless Inter-Domain Routing IP주소를 할당하고 패킷을 라우팅 하는 것 원래 뜻은 이러하나 구글에서 표기해둔 것은 IP범위 둘 다 맞는 뜻이고, IP범위를 나누어 다른 범위의 IP대역과 통신을 한다는 뜻으로 이해 GCP에서 알아두어야 할 점은 글로벌 리전개념으로 사용하기 때문에 자동모드로 서브넷을 하면, 각 지역별 리전으로 IP범위가 정해져 있음 다만, 자동모드보다는 커스텀 모드를 사용하는 경우가 많음

  • 서브넷 종류

PRIVATE: VM 인스턴스에 사용할 서브넷입니다. 기본 서브넷 유형 외부에 노출되지 않는 IP대역 PRIVATE_SERVICE_CONNECT: Private Service Connect를 사용하여 관리형 서비스를 게시하는 데 사용할 서브넷입니다. 부하분산(L4)에서 서비스를 연결해주는 역활 REGIONAL_MANAGED_PROXY: 리전 Envoy 기반 부하 분산기와 함께 사용할 프록시 전용 서브넷입니다. envoy proxy : Envoy proxy는 그 자체로 메모리사용량이 적은 고성능의 서버

  • envoy proxy설명
envoy proxy란? (basic)
MSA시장이 커지면서 서비스들은 네트워크를 통해 서로 통신해야했고, 이러한 서비스에서 사용하는 핵심 네트워크 프로토콜은 HTTP, HTTP/2, gRPC, Kafka, MongoDB 등의 L7프로토콜입니다. L3,L4기반의 프록시들로는 다양한 요건들을 처리하기 어려워졌고, 그에 따라 L7기능을 갖춘 프록시 의 필요성이 부각되기 시작했습니다. 이번 포스팅에서는 추후에 기술할 ServiceMesh Architecture로 대표되는 Istio의 메인 프록시인 Envoy Proxy 에 대해서 기술하겠습니다.
https://gruuuuu.github.io/cloud/envoy-proxy/

  • GCP에서 설정 할 수 있는 IP범위

유효한 IPv4 범위

서브넷의 기본 및 보조 IPv4 주소 범위는 리전별 내부 IPv4 주소입니다. 다음 표에서는 유효한 범위를 설명합니다.

범위설명
비공개 IPv4 주소 범위
10.0.0.0/8172.16.0.0/12192.168.0.0/16비공개 IP 주소 RFC 1918
100.64.0.0/10공유 주소 공간 RFC 6598
192.0.0.0/24IETF 프로토콜 할당 RFC 6890
192.0.2.0/24 (TEST-NET-1)198.51.100.0/24 (TEST-NET-2)203.0.113.0/24 (TEST-NET-3)문서 RFC 5737
192.88.99.0/24IPv6-IPv4 릴레이(지원 중단됨) RFC 7526
198.18.0.0/15벤치마크 테스트 RFC 2544
240.0.0.0/4RFC 5735 및 RFC 1112에 명시된 대로 향후 사용을 위해 예약됨(클래스 E) 일부 운영체제는 이 범위의 사용을 지원하지 않으므로 이 범위를 사용하는 서브넷을 만들기 전에 OS가 이를 지원하는지 확인합니다.
비공개로 사용되는 공개 IP 주소 범위
비공개로 사용되는 공개 IPv4 주소비공개로 사용되는 공개 IPv4 주소: • 일반적으로 인터넷에서 라우팅할 수 있지만 VPC 네트워크에서 비공개로 사용되는 IPv4 주소 • 금지된 서브넷 범위에 속할 수 없습니다. 이러한 주소를 서브넷 범위로 사용하면 Google Cloud가 이러한 경로를 인터넷에 알리지 않으며 트래픽을 인터넷에서 이 범위로 라우팅하지 않습니다. 사용자 IP 사용(BYOIP)을 사용하여 공개 IP 주소를 Google에 가져온 경우 동일한 VPC 네트워크의 BYOIP 범위 및 비공개로 사용되는 공개 IP 주소 범위는 겹치지 않아야 합니다. VPC 네트워크 피어링의 경우 공개 IP 주소에 대한 서브넷 경로가 자동으로 교환되지 않습니다. 기본적으로 서브넷 경로가 자동으로 내보내지지 않지만 이를 사용하기 위해서는 경로를 가져오도록 피어 네트워크가 명시적으로 구성되어 있어야 합니다.

네트워크의 설계시 IP주소 변경은 많은 리소스, 그리고 서비스 중단까지 고려해야 하므로 처음부터 서비스 확장을 염두에 두고 고려가 필요하다. 특히 요즘처럼 타CSP, 온프레미스와 연결시에 동일 IP대역이 있다면, 설계변경이 필요하므로 염두해 둘 것

  • GCP문서
서브넷 | VPC | Google Cloud
Virtual Private Cloud(VPC) 네트워크는 전역 리소스입니다. 각 VPC 네트워크는 서브넷 이라는 하나 이상의 IP 주소 범위로 구성됩니다. 서브넷은 리전 리소스이며 서브넷과 연결된 IP 주소 범위가 있습니다. Google Cloud에서 서브넷과 서브네트워크 라는 용어는 동의어입니다. Google Cloud 콘솔, Google Cloud CLI 명령어, API 문서에서는 서로 바꿔서 사용됩니다. 네트워크를 사용하려면 네트워크에 한 개 이상의 서브넷이 있어야 합니다.
https://cloud.google.com/vpc/docs/subnets?hl=ko

Firewall Rules

방화벽 정책 → 방화벽 규칙 여러개의 방화벽 규칙을 그룹화 한 것이 방화벽 정책 GCP 방화벽 규칙은 온프레미스 방화벽과 정책설정이 비슷함 VPC 네트워크는 분산형 방화벽으로 작동하며, 방화벽 규칙은 네트워크 수준에서 정의되지만 연결은 인스턴스별로 허용되거나 거부할 수 있음 GCP 방화벽 규칙은 Stateful (스테이트풀) 상태 기반의 방화벽임 즉 예를들어 웹서버에서 사용시 서비스에 대한 80포트를 허용했을때 statless(상태 비저장)은 내부에서 외부로 나가는 응답에 대해도 허용을 해주어야 하지만, Statful은 헤더를 까보고, 해당 패킷에 대한 syn, ack응답이라면 자동으로 허용을 해준다.

  • 특이사항

묵시적인 규칙

모든 VPC 네트워크에는 두 가지 묵시적인 IPv4 방화벽 규칙이 있습니다. IPv6가 VPC 네트워크에서 사용 설정된 경우 네트워크에는 2개의 묵시적 IPv6 방화벽 규칙도 있습니다. 이러한 규칙은 Google Cloud 콘솔에 표시되지 않습니다.

네트워크가 생성되는 방법 및 자동 모드 또는 커스텀 모드 VPC 네트워크인지 여부와 관계없이 모든 VPC 네트워크에는 묵시적인 IPv4 방화벽 규칙이 있습니다. 기본 네트워크에는 동일한 묵시적 규칙이 적용됩니다.

  • 묵시적 IPv4 이그레스 허용 규칙 작업이 allow, 목적지가 0.0.0.0/0, 우선순위가 가장 낮은(65535) 이그레스 규칙을 사용하면 모든 인스턴스가 Google Cloud에서 차단하는 트래픽을 제외한 모든 목적지에 트래픽을 전송할 수 있습니다. 우선순위가 더 높은 방화벽 규칙은 아웃바운드 액세스를 제한할 수 있습니다. 아웃바운드 트래픽을 거부하는 다른 방화벽 규칙이 없고 인스턴스에 외부 IP 주소가 있거나 Cloud NAT 인스턴스를 사용하는 경우 인터넷 액세스가 허용됩니다. 자세한 내용은 인터넷 액세스 요구 사항을 참조하세요.
  • 묵시적 IPv4 인그레스 거부 규칙 작업이 deny, 소스가 0.0.0.0/0, 우선순위가 가장 낮은(65535) 인그레스 규칙은 모든 인스턴스로 수신되는 연결을 차단하여 보호합니다. 우선순위가 더 높은 규칙은 수신 액세스를 허용할 수도 있습니다. 기본 네트워크에는 이 규칙을 재정의하는 추가 규칙이 포함되어 있어 특정 유형의 수신 연결을 허용합니다.

GCP에서 기본으로 생성되는 Firewall Rule은 아래와 같다.

기본 네트워크에 미리 입력된 규칙

기본 네트워크에는 인스턴스로 들어오는 연결을 허용하는 방화벽 규칙이 미리 입력됩니다. 이러한 규칙은 필요에 따라 삭제하거나 수정할 수 있습니다.

규칙 이름Direction우선순위소스 범위작업프로토콜 및 포트설명
default-allow-internalingress6553410.128.0.0/9allowtcp:0-65535udp:0-65535icmp동일한 VPC 네트워크 내의 다른 인스턴스에서 VM 인스턴스로 들어오는 연결을 허용합니다.
default-allow-sshingress655340.0.0.0/0allowtcp:22sshscpsftp 등의 도구를 사용하여 인스턴스에 연결할 수 있습니다.
default-allow-rdpingress655340.0.0.0/0allowtcp:3389Microsoft 원격 데스크톱 프로토콜을 사용하여 인스턴스에 연결할 수 있습니다.
default-allow-icmpingress655340.0.0.0/0allowicmpping 등의 도구를 사용할 수 있습니다.
  • GCP문서
VPC 방화벽 규칙 | Google Cloud
Virtual Private Cloud(VPC) 방화벽 규칙이 특정 프로젝트 및 네트워크에 적용됩니다. 조직의 여러 VPC 네트워크에 방화벽 규칙을 적용하려면 방화벽 정책 을 참조하세요. 이 페이지의 나머지 부분에서는 VPC 방화벽 규칙만 다룹니다. VPC 방화벽 규칙을 사용하면 지정한 구성을 기준으로 가상 머신(VM) 인스턴스 간의 연결을 허용하거나 거부할 수 있습니다.
https://cloud.google.com/vpc/docs/firewalls?hl=ko

Routes

GCP에서 정의하는 Routes 네트워크 트래픽이 가상 머신(VM) 인스턴스에서 다른 대상 위치로 이동하는 경로 온프레미스와 특별히 차이나는 기능은 없음

VPC네트워크에서 기본적으로 생성되는 경로는 다음과 같음 기본경로 0.0.0.0/0 → 기본설정된 Gateway A서브넷 ↔ B서브넷 : 각 서브넷끼리 연결을 위해 서브넷 생성시 자동생성

기본적인 다음 라우팅 홉을 지정해 주는 정적 경로가 기본으로 설정 가능 동적경로는 HA VPN, 전용선(Interconnect), 동적 라우팅을 사용하는 VPN HA VPN : 기본 VPN을 99.99% 가용성 SLA를 제공하는 게이트웨이를 사용하여 하는 즉 두개의 인터페이스에 IP를 각각 할당하여 가용성을 보장하는 것

경로 유형

Google Cloud가 VPC 네트워크의 경로를 분류하는 방법

유형 및 대상다음 홉참고
시스템 생성 경로
시스템 생성 기본 경로IPv4의 경우 0.0.0.0/0IPv6의 경우 ::/0default-internet-gateway전체 VPC 네트워크에 적용삭제 또는 교체 가능
서브넷 경로각 서브넷 IP 주소 범위에 대해 자동으로 생성됩니다.VPC 네트워크VM 및 내부 부하 분산기로 패킷을 전달합니다.전체 VPC 네트워크에 적용사용자가 서브넷 또는 보조 IP 주소 범위를 생성, 수정 또는 삭제할 때 Google Cloud에서 자동으로 생성, 업데이트, 삭제합니다.
커스텀 경로
정적 경로다양한 대상 위치를 지원합니다.패킷을 정적 경로 다음 홉으로 전달합니다.각 정적 경로 다음 홉에 대한 상세 설명은 다음을 참조하세요. • 인스턴스 및 내부 TCP/UDP 부하 분산기다음 홉 인스턴스내부 TCP/UDP 부하 분산기 다음 홉기본 VPN 터널 다음 홉
동적 경로서브넷 경로 또는 정적 경로와 충돌하지 않는 대상 위치Cloud Router의 BGP 세션 피어VPC 네트워크의 Cloud Router에서 자동으로 경로를 추가하고 삭제합니다.VPC 네트워크의 동적 라우팅 모드에 따라 VM에 경로가 적용됩니다.
피어링 경로
피어링 서브넷 경로VPC 네트워크 피어링을 사용하여 연결된 네트워크의 서브넷 IP 주소 범위를 나타냅니다.피어 VPC 네트워크피어 네트워크의 VM 및 내부 부하 분산기로 패킷을 전달합니다.전체 VPC 네트워크에 적용됩니다.피어 네트워크에서 서브넷이 생성, 수정 또는 삭제되면 Google Cloud에서 자동으로 생성, 업데이트, 삭제합니다.
피어링 커스텀 경로VPC 네트워크 피어링을 사용하여 연결된 네트워크의 커스텀 정적 경로 또는 커스텀 동적 경로피어 VPC 네트워크의 다음 홉피어 네트워크의 정적 경로가 지원하는 피어링 커스텀 경로는 다음과 같이 적용됩니다. • 네트워크 태그를 사용하는 피어 네트워크의 정적 경로는 피어링 커스텀 경로로 가져오지 않습니다. • 기본 인터넷 게이트웨이 다음 홉을 사용하는 피어 네트워크의 정적 경로는 피어링 커스텀 경로로 가져오지 않습니다. • 내부 TCP/UDP 부하 분산기 다음 홉을 사용하는 피어 네트워크의 정적 경로는 전역 액세스 사용 설정 여부에 따라 하나의 리전 또는 모든 리전에 적용될 수 있습니다. 자세한 내용은 내부 TCP/UDP 부하 분산기 다음 홉에 대한 고려사항을 참조하세요.피어 네트워크의 동적 경로가 지원하는 피어링 커스텀 경로는 경로를 가져오는 VPC 네트워크의 동적 라우팅 모드에 따라 적용됩니다.

  • GCP문서
Routes | VPC | Google Cloud
Google Cloud routes define the paths that network traffic takes from a virtual machine (VM) instance to other destinations. These destinations can be inside your Google Cloud Virtual Private Cloud (VPC) network (for example, in another VM) or outside it. In a VPC network, a route consists of a single destination prefix in CIDR format and a single next hop.
https://cloud.google.com/vpc/docs/routes

VPC Peering

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

VPC(A) ↔  VPC(B) 통신시에는 외부 public 망을 통해 통신을 해야하나 VPC Peering을 사용한다면, Traffic를 내부에서 해결할 수 있다는 점 두가지 점에서 이득이 있다. Traffic를 외부로 보내지 않으므로, 보안상의 이점 GCP내부 → 외부로는 네트워크 비용이 발생되는데, VPC Perring을 사용하면 좀 더 저렴한 비용으로 해결이 가능한 점 레이턴스(지연) 부분도 이득이 있음

제한사항 Peering된 네트워크끼리는 서브넷이 동일하면 안됨 Peering된 네트워크에서 태그 및 서비스 계정을 사용할 수 없다.

  • GCP문서
VPC Network Peering | Google Cloud
Google Cloud VPC Network Peering connects two Virtual Private Cloud (VPC) networks so that resources in each network can communicate with each other: All subnets can communicate using internal IPv4 addresses. Dual-stack subnets can also communicate using internal or external IPv6 addresses.
https://cloud.google.com/vpc/docs/vpc-peering

Shared VPC

👉
여러 프로젝트가 공유해서 사용하는 VPC network 같은 조직(organization)하위의 프로젝트들이 VPC를 공유할 수 있는 것 Host Project를 지정한 후 Service Project A, B를 각각 설정 후 VPC는 Host Project를 사용하는 것

Shared VPC의 큰 특징은 효율과 보안성 Shared VPC 내부의 리소스들은 서로 같은 네트워크 안의 internal IP address로 통신하기 때문에 외부로 통신되지 않기에 효율과 비용을 절감할 수 있음

  • GCP문서
Shared VPC | Google Cloud
Shared VPC allows an organization to connect resources from multiple projects to a common Virtual Private Cloud (VPC) network, so that they can communicate with each other securely and efficiently using internal IPs from that network. When you use Shared VPC, you designate a project as a host project and attach one or more other service projects to it.
https://cloud.google.com/vpc/docs/shared-vpc

👉
VPC Peering와 Shared가 다른점 Peering은 VPC들을 연결 하는 것 즉 서브넷이 중복되지 않도록 네트워크 디자인에 신경을 써야한다. Shared는 Host Project 내 VPC를 타 Project에서 사용하는 것

Uploaded by N2T

'Cloud > GCP' 카테고리의 다른 글

Compute Engine  (0) 2023.01.20
GCP 키 관리(KMS, EKM, CMEK)  (0) 2023.01.17
CloudShell  (0) 2023.01.17
Network Services  (0) 2023.01.17
APIs_Services 기초  (0) 2022.12.31
GCP - Billing  (0) 2022.12.31
Cloud Shell  (0) 2022.12.31