코드 실습: 스포크로 사용되는 NCC VPC

1. 소개

개요

이 실습에서는 VPC 스포크 지원을 통해 Network Connectivity Center(NCC)를 사용하여 규모에 맞게 VPC 간 연결을 설정하는 방법을 살펴봅니다. 사용자가 VPC를 VPC 스포크로 정의하면 NCC 허브를 통해 여러 VPC 네트워크에 함께 연결할 수 있습니다. VPC 스포크 구성이 있는 NCC는 중앙 집중식 연결 관리 모델을 대신 사용하여 VPC 피어링을 통한 쌍별 VPC 간 연결을 관리하는 데 따른 운영 복잡성을 줄여줍니다.

Network Connectivity Center (NCC)는 Google Cloud의 네트워크 연결 관리를 위한 허브 및 스포크 컨트롤 플레인 모델입니다. 허브 리소스는 스포크를 상호 연결하기 위한 중앙화된 연결 관리 모델을 제공합니다.

빌드할 항목

이 Codelab에서는 세 개의 서로 다른 VPC에서 완전히 메시로 연결된 VPC 연결 패브릭을 구현하는 NCC 허브를 사용하여 논리적 허브 및 스포크 토폴로지를 빌드합니다.

학습할 내용

  • NCC를 사용한 풀 메시 VPC 연결
  • VPC 간 Private NAT

필요한 항목

  • GCP VPC 네트워크에 대한 지식
  • Cloud Router 및 BGP 라우팅에 대한 지식
  • 두 개의 별도 GCP 프로젝트
  • 이 Codelab에는 VPC가 5개 필요합니다. 이러한 VPC 중 하나는 NCC 허브와 다른 프로젝트에 있어야 합니다.
  • 할당량: 네트워크를 확인하고 필요한 경우 네트워크를 추가로 요청합니다(아래 스크린샷 참고).

6bc606cb34bce7e8.png

목표

  • GCP 환경 설정
  • VPC를 스포크로 사용하여 Network Connectivity Center 구성
  • 데이터 경로 유효성 검사
  • NCC 서비스 가능성 기능 살펴보기
  • 사용된 리소스 정리

시작하기 전에

Google Cloud 콘솔 및 Cloud Shell

이 실습에서는 GCP와 상호작용하기 위해 Google Cloud Console과 Cloud Shell을 모두 사용합니다.

NCC 허브 프로젝트 Google Cloud 콘솔

Cloud 콘솔은 https://console.cloud.google.com에서 액세스할 수 있습니다.

Network Connectivity Center를 더 쉽게 구성할 수 있도록 Google Cloud에서 다음 항목을 설정합니다.

Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

Cloud Shell을 실행합니다. 이 Codelab에서는 Cloud Shell에서 gcloud 구성 구현을 지원하기 위해 $변수를 사용합니다.

gcloud auth list
gcloud config list project
gcloud config set project [HUB-PROJECT-NAME]
projectname=[HUB-PROJECT-NAME]
echo $projectname
gcloud config set compute/zone us-central1-a
gcloud config set compute/region us-central1

IAM 역할

NCC는 특정 API에 액세스하기 위해 IAM 역할이 필요합니다. 필요에 따라 NCC IAM 역할로 사용자를 구성해야 합니다.

역할/설명

권한

networkconnectivity.networkAdmin - 네트워크 관리자가 허브와 스포크를 관리할 수 있습니다.

networkconnectivity.hubs.networkconnectivity.spokes.

networkconnectivity.networkSpokeManager - 허브에서 스포크를 추가하고 관리할 수 있습니다. 호스트 프로젝트가 허브를 소유하지만 다른 프로젝트의 다른 관리자가 허브에 연결할 스포크를 추가할 수 있는 공유 VPC에서 사용됩니다.

networkconnectivity.spokes.**

networkconnectivity.networkUsernetworkconnectivity.networkViewer - 네트워크 사용자가 허브 및 스포크의 다양한 속성을 볼 수 있습니다.

networkconnectivity.hubs.getnetworkconnectivity.hubs.listnetworkconnectivity.spokes.getnetworkconnectivity.spokes.listnetworkconnectivity.spokes.aggregatedList

2. 네트워크 환경 설정

개요

이 섹션에서는 단일 프로젝트에 VPC 네트워크와 방화벽 규칙을 배포합니다. 논리 다이어그램은 이 단계에서 설정할 네트워크 환경을 보여줍니다.

프로젝트 간 스포크 지원을 보여주기 위해 이후 단계에서 다른 프로젝트에 VPC와 방화벽 규칙을 배포합니다.

dc4ed09dae1a0056.png

VPC 및 서브넷 만들기

VPC 네트워크에는 데이터 경로 검증을 위해 GCE VM을 설치할 서브넷이 포함되어 있습니다.

gcloud compute networks create vpc1-ncc --subnet-mode custom
gcloud compute networks create vpc2-ncc --subnet-mode custom
gcloud compute networks create vpc3-ncc --subnet-mode custom
gcloud compute networks create vpc4-ncc --subnet-mode custom

gcloud compute networks subnets create vpc1-ncc-subnet1 \
--network vpc1-ncc --range 10.1.1.0/24 --region us-central1

gcloud compute networks subnets create vpc1-ncc-subnet2 \
--network vpc1-ncc --range 10.1.2.0/25 --region us-central1

gcloud compute networks subnets create vpc1-ncc-subnet3 \
--network vpc1-ncc --range 10.1.2.128/25 --region us-central1

gcloud compute networks subnets create vpc2-ncc-subnet1 \
--network vpc2-ncc --range 10.2.2.0/24 --region us-central1

VPC 지원 서브넷 범위

NCC는 비공개로 사용되는 공개 IP 주소를 제외한 모든 유효한 IPv4 서브넷 범위를 지원합니다. 이 단계에서는 허브 경로 테이블로 가져올 유효한 IP 범위를 VPC4에 만듭니다.

gcloud compute networks subnets create benchmark-testing-rfc2544 \
--network vpc4-ncc --range 198.18.0.0/15 --region us-east1

gcloud compute networks subnets create class-e-rfc5735 \
--network vpc4-ncc --range 240.0.0.0/4 --region us-east1

gcloud compute networks subnets create ietf-protcol-assignment-rfc6890 \
--network vpc4-ncc --range 192.0.0.0/24 --region us-east1

gcloud compute networks subnets create ipv6-4-relay-rfc7526 \
--network vpc4-ncc --range 192.88.99.0/24 --region us-east1

gcloud compute networks subnets create pupi \
--network vpc4-ncc --range 50.50.50.0/24 --region us-east1

gcloud compute networks subnets create test-net-1-rfc5737 \
--network vpc4-ncc --range 192.0.2.0/24 --region us-east1

gcloud compute networks subnets create test-net-2-rfc5737 \
--network vpc4-ncc --range 198.51.100.0/24 --region us-east1

gcloud compute networks subnets create test-net-3-rfc5737 \
--network vpc4-ncc --range 203.0.113.0/24 --region us-east1

중복 서브넷 범위 만들기

NCC는 겹치는 IP 범위를 허브 경로 테이블로 가져오지 않습니다. 사용자는 이후 단계에서 이 제한사항을 해결합니다. 지금은 VPC2와 VPC3에 대해 중복되는 IP 범위 두 개를 만듭니다.

gcloud compute networks subnets create overlapping-vpc2 \
--network vpc3-ncc --range 10.3.3.0/24 --region us-central1

gcloud compute networks subnets create overlapping-vpc3 \
--network vpc2-ncc --range 10.3.3.0/24 --region us-central1

VPC 방화벽 규칙 구성

각 VPC에서 다음을 허용하도록 방화벽 규칙을 구성합니다.

  • SSH
  • 내부 IAP
  • 10.0.0.0/8 범위
gcloud compute firewall-rules create ncc1-vpc-internal \
--network vpc1-ncc \
--allow all \
--source-ranges 10.0.0.0/8

gcloud compute firewall-rules create ncc2-vpc-internal \
--network vpc2-ncc \
--allow all \
--source-ranges 10.0.0.0/8

gcloud compute firewall-rules create ncc3-vpc-internal \
--network vpc3-ncc \
--allow all \
--source-ranges 10.0.0.0/8

gcloud compute firewall-rules create ncc4-vpc-internal \
--network vpc4-ncc \
--allow all \
--source-ranges 10.0.0.0/8

gcloud compute firewall-rules create ncc1-vpc-iap \
--network vpc1-ncc \
--allow all \
--source-ranges 35.235.240.0/20

gcloud compute firewall-rules create ncc2-vpc-iap \
--network vpc2-ncc \
--allow=tcp:22 \
--source-ranges 35.235.240.0/20

gcloud compute firewall-rules create ncc3-vpc-iap \
--network vpc3-ncc \
--allow=tcp:22  \
--source-ranges 35.235.240.0/20

gcloud compute firewall-rules create ncc4-vpc-iap \
--network vpc4-ncc \
--allow=tcp:22  \
--source-ranges 35.235.240.0/20

각 VPC에서 GCE VM 구성

'vm1-vpc1-ncc'에 패키지를 설치하려면 임시 인터넷 액세스가 필요합니다.

가상 머신 4개를 만듭니다. 각 VM은 이전에 만든 VPC 중 하나에 할당됩니다.

gcloud compute instances create vm1-vpc1-ncc \
--subnet vpc1-ncc-subnet1 \
--metadata=startup-script='#!/bin/bash
  apt-get update
  apt-get install apache2 -y
  apt-get install tcpdump -y
  service apache2 restart
  echo "
<h3>Web Server: www-vm1</h3>" | tee /var/www/html/index.html'


gcloud compute instances create vm2-vpc2-ncc \
--zone us-central1-a \
--subnet vpc2-ncc-subnet1 \
--no-address 

gcloud compute instances create pnat-vm-vpc2 \
--zone us-central1-a \
--subnet overlapping-vpc3 \
--no-address 


gcloud compute instances create vm1-vpc4-ncc \
--zone us-east1-b \
--subnet class-e-rfc5735 \
--no-address

3. Network Connectivity Center 허브

개요

이 섹션에서는 gcloud 명령어를 사용하여 NCC 허브를 구성합니다. NCC 허브는 각 VPC 스포크 간의 라우팅 구성을 빌드하는 역할을 하는 컨트롤 플레인으로 작동합니다.

860347511de47cea.png

API 서비스 사용 설정

아직 사용 설정되지 않은 경우 네트워크 연결 API를 사용 설정합니다.

gcloud services enable networkconnectivity.googleapis.com

NCC 허브 만들기

gCloud 명령어를 사용하여 NCC 허브 만들기

gcloud network-connectivity hubs create ncc-hub

출력 예

Create request issued for: [ncc-hub]
Waiting for operation [projects/user-3p-dev/locations/global/operations/operation-1668793629598-5edc24b7ee3ce-dd4c765b-5ca79556] to complete...done.     
Created hub [ncc-hub]

새로 만든 NCC 허브를 설명합니다. 이름과 연결된 경로를 기록해 둡니다.

gcloud network-connectivity hubs describe ncc-hub
gcloud network-connectivity hubs describe ncc-hub
createTime: '2023-11-02T02:28:34.890423230Z'
name: projects/user-3p-dev/locations/global/hubs/ncc-hub
routeTables:
- projects/user-3p-dev/locations/global/hubs/ncc-hub/routeTables/default
state: ACTIVE
uniqueId: de749c4c-0ef8-4888-8622-1ea2d67450f8
updateTime: '2023-11-02T02:28:48.613853463Z'

NCC 허브는 데이터 연결을 만들기 위한 컨트롤 플레인을 정의하는 라우팅 테이블을 도입했습니다. NCC 허브의 라우팅 테이블 이름 찾기

 gcloud network-connectivity hubs route-tables list --hub=ncc-hub
NAME: default
HUB: ncc-hub
DESCRIPTION:

NCC 기본 경로 테이블의 URI를 찾습니다.

gcloud network-connectivity hubs route-tables describe default --hub=ncc-hub
createTime: '2023-02-24T17:32:58.786269098Z'
name: projects/user-3p-dev/locations/global/hubs/ncc-hub/routeTables/default
state: ACTIVE
uid: eb1fdc35-2209-46f3-a8d6-ad7245bfae0b
updateTime: '2023-02-24T17:33:01.852456186Z'

NCC 허브의 기본 라우팅 테이블의 콘텐츠를 나열합니다. 참고* 스포크가

gcloud network-connectivity hubs route-tables routes list --hub=ncc-hub --route_table=default

NCC 허브의 경로 테이블은 비어 있어야 합니다.

4. VPC 스포크가 있는 NCC

개요

이 섹션에서는 gCloud 명령어를 사용하여 VPC 3개를 NCC 스포크로 구성합니다.

b367b1659d2df694.png

VPC를 NCC 스포크로 구성

다음 VPC를 이 순서대로 NCC 스포크로 구성합니다.

  • VPC4
  • VPC1
  • VPC2
  • VPC3

VPC4를 NCC 스포크로 구성하고 이전에 만든 NCC 허브에 할당합니다. NCC spoke API 호출에는 위치를 지정해야 합니다. '–global' 플래그를 사용하면 새 NCC 스포크를 구성할 때 사용자가 전체 URI 경로를 지정하지 않아도 되므로 gcloud 구문이 간소화됩니다.

gcloud network-connectivity spokes linked-vpc-network create vpc4-spoke4 \
--hub=ncc-hub \
--vpc-network=vpc4-ncc \
--global

VPC1을 NCC 스포크로 구성합니다.

관리자는 VPC 스포크에서 NCC 허브의 경로 테이블로 서브넷 경로가 내보내지지 않도록 제외할 수 있습니다. 이 Codelab 파트에서는 요약 접두사를 기반으로 내보내기 제외 규칙을 만들어 VPC1의 서브넷이 NCC 허브 경로 테이블로 내보내지지 않도록 합니다.

이 gcloud 명령어를 사용하여 VPC1에 속하는 모든 서브넷을 나열합니다.

gcloud config set accessibility/screen_reader false
gcloud compute networks subnets list --network=vpc1-ncc

설정 섹션에서 이전에 만든 /25 서브넷 쌍을 확인합니다.

NAME              REGION       NETWORK   RANGE          STACK_TYPE  
vpc1-ncc-subnet1  us-central1  vpc1-ncc  10.1.1.0/24    IPV4_ONLY
vpc1-ncc-subnet2  us-central1  vpc1-ncc  10.1.2.0/25    IPV4_ONLY
vpc1-ncc-subnet3  us-central1  vpc1-ncc  10.1.2.128/25  IPV4_ONLY

VPC1을 NCC 스포크로 구성하고 'export-exclude-ranges' 키워드를 사용하여 해당 범위에서 /24 요약 경로를 필터링하여 /25 서브넷 쌍이 허브 라우팅 테이블로 가져오지 않도록 제외합니다.

gcloud network-connectivity spokes linked-vpc-network create vpc1-spoke1 \
--hub=ncc-hub \
--vpc-network=vpc1-ncc \
--exclude-export-ranges=10.1.2.0/24 \
--global 

참고* 사용자는 NCC 스포크당 최대 16개의 고유한 IP 범위를 필터링할 수 있습니다.

NCC 허브의 기본 라우팅 테이블의 콘텐츠를 나열합니다. NCC 허브의 라우팅 테이블에 있는 /25 서브넷 쌍은 어떻게 되었나요?

gcloud network-connectivity hubs route-tables routes list --hub=ncc-hub --route-table=default --filter="NEXT_HOP:vpc1-ncc"
IP_CIDR_RANGE  STATE   TYPE                  NEXT_HOP  HUB      ROUTE_TABLE
10.1.1.0/24    ACTIVE  VPC_PRIMARY_SUBNET    vpc1-ncc  ncc-hub  default

VPC2를 NCC 스포크로 구성

gcloud network-connectivity spokes linked-vpc-network create vpc2-spoke2 \
--hub=ncc-hub \
--vpc-network=vpc2-ncc \
--global

VPC3을 NCC 스포크로 구성하고 이전에 만든 NCC 허브에 할당합니다.

gcloud  network-connectivity spokes linked-vpc-network create vpc3-spoke3 \
--hub=ncc-hub \
--vpc-network=vpc3-ncc \
--global

어떻게 된 것일까요?

ERROR: (gcloud.network-connectivity.spokes.linked-vpc-network.create) Invalid resource state for "https://www.googleapis.com/compute/v1/projects/xxxxxxxx/global/networks/vpc3-ncc": 10.3.3.0/24 (SUBNETWORK) overlaps with 10.3.3.0/24 (SUBNETWORK) from "projects/user-3p-dev/global/networks/vpc2-ncc" (peer)

NCC 허브에서 VPC2와 겹치는 IP 범위를 감지했습니다. VPC2와 VPC3는 모두 동일한 10.3.3.0/24 IP 서브넷으로 설정되었습니다.

내보내기 제외를 사용하여 중복되는 IP 범위 필터링

이 Codelab을 작성할 당시에는 사용자가 내보내기 필터를 구성하려면 NCC 스포크를 삭제하고 다시 만들어야 하는 알려진 문제가 있었습니다.

gcloud network-connectivity spokes delete vpc2-spoke2 --global --quiet

참고: 특정 VPC와 연결된 VPC 스포크를 삭제한 후 동일한 VPC를 참조하는 새 스포크를 다시 만들려면 10분의 대기 기간이 지나야 합니다.

gcloud  network-connectivity spokes linked-vpc-network create vpc2-spoke2 \
--hub=ncc-hub \
--vpc-network=vpc2-ncc \
--exclude-export-ranges=10.3.3.0/24 \
--global

VPC3을 NCC 스포크로 구성하고 이전에 만든 NCC 허브에 할당합니다. NCC에 VPC3를 스포크로 추가하는 시도는 성공해야 합니다.

gcloud network-connectivity spokes linked-vpc-network create vpc3-spoke3 \
--hub=ncc-hub \
--vpc-network=vpc3-ncc \
--exclude-export-ranges=10.3.3.0/24 \
--global

NCC 허브의 기본 라우팅 테이블의 콘텐츠를 나열하고 출력을 검사합니다.

gcloud network-connectivity hubs route-tables routes list --hub=ncc-hub --route_table=default

VPC2와 VPC3의 겹치는 IP 범위는 제외됩니다. NCC 허브 라우팅 테이블은 비공개로 사용되는 공개 IP 주소 (PUPI)를 제외한 모든 유효한 IPv4 유효 범위 유형을 지원합니다.

5. 프로젝트 간 스포크가 있는 NCC

개요

지금까지 허브와 동일한 프로젝트에 속하는 NCC 스포크를 구성했습니다. 이 섹션에서는 gCloud 명령어를 사용하여 NCC 허브가 아닌 별도의 프로젝트에서 VPC를 NCC 스포크로 구성합니다.

이를 통해 자체 VPC를 관리하는 프로젝트 소유자가 NCC 허브와의 네트워크 연결에 참여할 수 있습니다.

a90b3185e30832e8.png

교차 프로젝트: Google Cloud Console 및 Cloud Shell

이 실습에서는 GCP와 상호작용하기 위해 Google Cloud Console과 Cloud Shell을 모두 사용합니다.

교차 프로젝트 스포크 Google Cloud 콘솔

Cloud 콘솔은 https://console.cloud.google.com에서 액세스할 수 있습니다.

Network Connectivity Center를 더 쉽게 구성할 수 있도록 Google Cloud에서 다음 항목을 설정합니다.

Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

Cloud Shell을 실행합니다. 이 Codelab에서는 Cloud Shell에서 gcloud 구성 구현을 지원하기 위해 $변수를 사용합니다.

gcloud auth list
gcloud config list project
gcloud config set project [YOUR-CROSSPROJECT-NAME]
xprojname=[YOUR-CROSSPROJECT-NAME]
echo $xprojname
gcloud config set compute/zone us-central1-a
gcloud config set compute/region us-central1

IAM 역할

NCC는 특정 API에 액세스하기 위해 IAM 역할이 필요합니다. 필요에 따라 NCC IAM 역할로 사용자를 구성해야 합니다.

최소한 교차 프로젝트 스포크 관리자에게는 'networkconnectivity.networkSpokeManager' IAM 역할이 부여되어야 합니다. "

아래 표에는 NCC 허브 및 스포크 관리에 필요한 IAM 역할이 참고용으로 나열되어 있습니다.

역할/설명

권한

networkconnectivity.networkAdmin - 네트워크 관리자가 허브와 스포크를 관리할 수 있습니다.

networkconnectivity.hubs.networkconnectivity.spokes.

networkconnectivity.networkSpokeManager - 허브에서 스포크를 추가하고 관리할 수 있습니다. 호스트 프로젝트가 허브를 소유하지만 다른 프로젝트의 다른 관리자가 허브에 연결할 스포크를 추가할 수 있는 공유 VPC에서 사용됩니다.

networkconnectivity.spokes.**

networkconnectivity.networkUsernetworkconnectivity.networkViewer - 네트워크 사용자가 허브 및 스포크의 다양한 속성을 볼 수 있습니다.

networkconnectivity.hubs.getnetworkconnectivity.hubs.listnetworkconnectivity.spokes.getnetworkconnectivity.spokes.listnetworkconnectivity.spokes.aggregatedList

크로스 프로젝트에서 VPC 및 서브넷 만들기

VPC 네트워크에는 데이터 경로 검증을 위해 GCE VM을 설치할 서브넷이 포함되어 있습니다.

gcloud compute networks create xproject-vpc \
--subnet-mode custom

gcloud compute networks subnets create xprj-net-1 \
--network xproject-vpc \
--range 10.100.1.0/24 \
--region us-central1

gcloud compute networks subnets create xprj-net-2 \
--network xproject-vpc \
--range 10.100.2.0/24 \
--region us-central1

NCC 허브 프로젝트 URI

다음 gcloud 명령어를 사용하여 NCC 허브 URI를 찾습니다. 다음 단계에서 교차 프로젝트 NCC 스포크를 구성하려면 URI 경로가 필요합니다.

gcloud network-connectivity hubs describe ncc-hub

프로젝트 간 스포크 VPC

VPC가 NCC 허브 프로젝트에 속하지 않는 다른 프로젝트에 로그인합니다. Cloud Shell에서 다음 명령어를 사용하여 VPC를 NCC 스포크로 구성합니다.

  • HUB_URI는 다른 프로젝트에 있는 허브의 URI여야 합니다.
  • VPC_URI는 스포크와 동일한 프로젝트에 있어야 합니다.
  • VPC-network는 이 교차 프로젝트의 VPC가 다른 프로젝트의 NCC 허브에 조인됨을 지정합니다.
gcloud network-connectivity spokes linked-vpc-network create xproj-spoke \
--hub=projects/[YOUR-PROJECT-NAME]/locations/global/hubs/ncc-hub \
--global \
--vpc-network=xproject-vpc

.

Create request issued for: [xproj-spoke]
Waiting for operation [projects/xproject/locations/global/operations/operation-1689790411247-600dafd351158-2b862329-19b747f1] to complete...done.                           
Created spoke [xproj-spoke].
createTime: '2023-07-19T18:13:31.388500663Z'
hub: projects/[YOUR-PROJECT-NAME]/locations/global/hubs/ncc-hub
linkedVpcNetwork:
  uri: https://www.googleapis.com/compute/v1/projects/xproject/global/networks/xproject-vpc
name: projects/xproject/locations/global/spokes/xproj-spoke
reasons:
- code: PENDING_REVIEW
  message: Spoke is Pending Review
spokeType: VPC_NETWORK
state: INACTIVE
uniqueId: 46b4d091-89e2-4760-a15d-c244dcb7ad69
updateTime: '2023-07-19T18:13:38.652800902Z'

크로스 프로젝트 NCC 스포크의 상태는 무엇인가요? 왜냐하면

6. 크로스 프로젝트 스포크 거부 또는 수락

개요

NCC 허브 관리자는 허브에 참여하는 교차 프로젝트 스포크를 명시적으로 수락해야 합니다. 이렇게 하면 프로젝트 소유자가 NCC 전역 라우팅 테이블에 잘못된 NCC 스포크를 연결할 수 없습니다. 스포크가 수락되거나 거부된 후에는 위의 명령어를 실행하여 원하는 횟수만큼 거부하거나 수락할 수 있습니다.

Cloud Shell에 로그인하여 NCC 허브가 있는 프로젝트로 돌아갑니다.

검토할 교차 프로젝트 스포크 식별

gcloud network-connectivity hubs list-spokes ncc-hub \
 --filter="reason:PENDING_REVIEW"

스포크 수락하기

gcloud network-connectivity hubs accept-spoke ncc-hub --spoke=xproj-spoke

선택사항: 스포크 거부하기

gcloud network-connectivity spokes reject-spoke ncc-hub --spoke=xproj-spoke 
--details="some reason to reject"

허브의 활성 스포크 나열

gcloud network-connectivity hubs list-spokes ncc-hub \
 --filter="state:ACTIVE"
NAME            PROJECT          LOCATION  TYPE         STATE   STATE REASON
Xproj-spoke     xproj            global    VPC_NETWORK  ACTIVE
vpc4-spoke4     user-3p-dev      global    VPC_NETWORK  ACTIVE
vpc1-spoke1     user-3p-dev      global    VPC_NETWORK  ACTIVE
vpc2-spoke2     user-3p-dev      global    VPC_NETWORK  ACTIVE
vpc3-spoke3     user-3p-dev      global    VPC_NETWORK  ACTIVE

허브의 서브넷 경로 나열

출력에서 교차 VPC 스포크의 서브넷 경로를 확인할 수 있나요?

gcloud network-connectivity hubs route-tables routes list \
--route_table=default \
--hub=ncc-hub \
--filter="NEXT_HOP:xprj-vpc"
IP_CIDR_RANGE  STATE   TYPE                NEXT_HOP  HUB      ROUTE_TABLE
10.100.1.0/24  ACTIVE  VPC_PRIMARY_SUBNET  xprj-vpc  ncc-hub  default

Include-Export 필터를 사용하여 교차 프로젝트 스포크 VPC 업데이트

VPC가 NCC 허브 프로젝트에 속하지 않는 프로젝트에 로그인합니다. Cloud Shell에서 다음 명령어를 사용하여 VPC를 NCC 스포크로 구성합니다.

  • HUB_URI는 다른 프로젝트에 있는 허브의 URI여야 합니다.
  • VPC_URI는 스포크와 동일한 프로젝트에 있어야 합니다.
  • VPC-network는 이 교차 프로젝트의 VPC가 다른 프로젝트의 NCC 허브에 조인됨을 지정합니다.
  • 서브넷 범위 10.100.2.0/24만 NCC 허브 라우팅 테이블로 가져옵니다.
  • 출력에서 'ETAG' 값을 기록해 둡니다. 이 값은 NCC에서 생성되며 NCC 허브 관리자에게 이 값을 제공해야 합니다. NCC 허브 관리자는 교차 프로젝트 스포크의 허브 조인 요청을 수락할 때 이 값을 참조해야 합니다.
gcloud network-connectivity spokes linked-vpc-network update xproj-spoke \
--hub=projects/[YOUR-PROJECT-NAME]/locations/global/hubs/ncc-hub \
--global \
--include-export-ranges=10.100.2.0/24
Update request issued for: [xprj-vpc]
Waiting for operation [projects]/xproject/locations/global/operations/operation-1742936388803-6313100521cae-020ac5d2-58
52fbba] to complete...done.                                                                                                 
Updated spoke [xprj-vpc].
createTime: '2025-02-14T14:25:41.996129250Z'
etag: '4'
fieldPathsPendingUpdate:
- linked_vpc_network.include_export_ranges
group: projects/xxxxxxxx/locations/global/hubs/ncc-hub/groups/default
hub: projects/xxxxxxxx/locations/global/hubs/ncc-hub
linkedVpcNetwork:
  includeExportRanges:
  - 10.100.2.0/24
  uri: https://www.googleapis.com/compute/v1/projects/xproject/global/networks/vpc1-spoke
name: projects/xproject/locations/global/spokes/xprj-vpc
reasons:
- code: UPDATE_PENDING_REVIEW
  message: Spoke update is Pending Review
spokeType: VPC_NETWORK
state: ACTIVE
uniqueId: 182e0f8f-91cf-481c-a081-ea6f7e40fb0a
updateTime: '2025-03-25T20:59:51.995734879Z'

검토할 업데이트된 교차 프로젝트 스포크 식별

NCC 허브를 호스팅하는 프로젝트에 로그인합니다. Cloud Shell에서 이 명령어를 사용하여 교차 프로젝트 VPC 스포크 업데이트의 상태를 확인합니다.

  • ETAG 값은 무엇인가요? 이 값은 VPC 스포크 업데이트의 출력과 일치해야 합니다.
gcloud network-connectivity hubs list-spokes ncc-hub \ 
--filter="reasons:UPDATE_PENDING_REVIEW" \
--format=yaml

크로스 프로젝트 스포크에서 업데이트된 변경사항 수락

명령어를 사용하여 교차 프로젝트 스포크의 NCC 허브 조인 요청을 수락합니다.

gcloud network-connectivity hubs accept-spoke-update ncc-hub \
 --spoke=https://www.googleapis.com/networkconnectivity/v1/projects/xproject/locations/global/spokes/xproj-spoke \
 --spoke-etag={etag value}

원하는 경우 교차 프로젝트 스포크에서 업데이트된 변경사항 거부

명령어를 사용하여 교차 프로젝트 스포크의 NCC 허브 가입 요청을 거부합니다.

gcloud network-connectivity hubs reject-spoke-update ncc-hub  \
--spoke=https://www.googleapis.com/networkconnectivity/v1/projects/xproject/locations/global/spokes/xproj-spoke  \
--details="not today" \
--spoke-etag={etag value} 

크로스 프로젝트 스포크가 NCC 허브에 가입했는지 확인

gcloud network-connectivity hubs list-spokes ncc-hub \ --filter="name:xproj-spoke"

7. VPC 간 Private NAT

개요

이 섹션에서는 두 VPC 간에 겹치는 서브넷 범위에 대해 Private NAT를 구성합니다. VPC 간 Private NAT에는 NCC가 필요합니다.

이전 섹션에서는 VPC2와 VPC3가 '10.3.3.0/24'의 중복 서브넷 범위로 구성되어 있습니다. 두 VPC 모두 중복 서브넷이 NCC 허브 라우팅 테이블에 삽입되지 않도록 NCC 스포크로 구성되어 있습니다. 즉, 해당 서브넷에 있는 호스트에 연결되는 레이어 3 데이터 경로가 없습니다.

NCC 허브 프로젝트에서 다음 명령어를 사용하여 중복되는 서브넷 범위를 찾습니다.

gcloud compute networks subnets list --network vpc2-ncc

gcloud compute networks subnets list --network vpc3-ncc

vpc2-ncc에서 중복되는 IP 범위를 포함하는 서브넷 이름은 무엇인가요?

*서브넷 이름을 기록하고 저장합니다. 이 범위에 대해 소스 NAT를 구성합니다.

Private NAT 구성

라우팅 가능한 서브넷 범위를 VPC2의 중복 서브넷에서 NAT 트래픽을 소싱하는 데 전용으로 사용합니다. '–purpose=PRIVATE_NAT' 플래그를 사용하여 겹치지 않는 서브넷 범위를 구성합니다.

gcloud beta compute networks subnets create ncc2-spoke-nat \
--network=vpc2-ncc \
--region=us-central1 \
--range=10.10.10.0/29 \
--purpose=PRIVATE_NAT

전용 Cloud Router를 만들어 비공개 NAT 실행

gcloud compute routers create private-nat-cr \
--network vpc2-ncc \
--region us-central1

vpc2-ncc에서 중복되는 10.3.3.0/24 범위를 소스 NAT하도록 클라우드 라우터를 구성합니다. 아래 예시 구성에서 'overlapping-vpc3'는 중복 서브넷의 이름입니다. 'ALL' 키워드는 서브넷의 모든 IP 범위가 소스 NAT된다고 지정합니다.

gcloud beta compute routers nats create ncc2-nat \
--router=private-nat-cr \
--type=PRIVATE \
--nat-custom-subnet-ip-ranges=overlapping-vpc3:ALL \
--router-region=us-central1

이전 단계에서는 NAT IP 범위 풀과 변환될 특정 서브넷을 만들었습니다. 이 단계에서는 대상 네트워크가 NCC 허브 라우팅 테이블의 경로를 사용하는 경우 중복 서브넷 범위에서 소싱된 트래픽과 일치하는 네트워크 패킷을 변환하는 NAT 규칙 '1'을 만듭니다.

gcloud beta compute routers nats rules create 1 \
--router=private-nat-cr \
--region=us-central1 \
--match='nexthop.hub == "//networkconnectivity.googleapis.com/projects/$projectname/locations/global/hubs/ncc-hub"' \
--source-nat-active-ranges=ncc2-spoke-nat \
--nat=ncc2-nat

Private NAT의 데이터 경로 확인

gcloud beta compute routers nats describe ncc2-nat --router=private-nat-cr

출력 예

enableDynamicPortAllocation: true
enableEndpointIndependentMapping: false
endpointTypes:
- ENDPOINT_TYPE_VM
name: ncc2-nat
rules:
- action:
    sourceNatActiveRanges:
    - https://www.googleapis.com/compute/beta/projects/xxxxxxxx/regions/us-central1/subnetworks/ncc2-spoke-nat
  match: nexthop.hub == "//networkconnectivity.googleapis.com/projects/xxxxxxxx/locations/global/hubs/ncc-hub"
  ruleNumber: 1
sourceSubnetworkIpRangesToNat: LIST_OF_SUBNETWORKS
subnetworks:
- name: https://www.googleapis.com/compute/beta/projects/xxxxxxxx/regions/us-central1/subnetworks/overlapping-vpc3
  sourceIpRangesToNat:
  - ALL_IP_RANGES
type: PRIVATE

선택적으로

  • 웹 콘솔로 전환
  • '네트워크 서비스 > Cloud NAT > ncc2-nat'로 이동합니다.

동적 포트 할당이 기본적으로 사용 설정되어 있는지 확인합니다.

7317d3cfb7e9468b.png

다음으로 VPC2에 구성된 비공개 NAT 경로를 사용하는 데이터 경로를 확인합니다.

444d45616f1d0cae.png

'vm1-vpc1-ncc'에 SSH 세션을 열고 아래 tcpdump 명령어를 사용하여 NAT 풀 범위 '10.10.10.0/29'에서 소싱된 패킷을 캡처합니다.

vm1-vpc1-ncc

sudo tcpdump -i any net 10.10.10.0/29 -n

이 Codelab을 작성하는 시점에는 비공개 NAT가 ICMP 패킷을 지원하지 않습니다. 'pNat-vm-vpc2'에 SSH 세션을 설정하고 아래와 같이 curl 명령어를 사용하여 TCP 포트 80에서 'vm1-vpc1-ncc'에 연결합니다.

pnat-vm-vpc2

curl 10.1.1.2 -v 

'vm1-vpc1-ncc.'에서 tcpdump의 출력을 검사합니다. vm1-vpc1-ncc의 웹 서버에 대한 TCP 세션을 시작한 소스 IP 주소는 무엇인가요?

tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
19:05:27.504761 ens4  In  IP 10.10.10.2.1024 > 10.1.1.2:80: Flags [S], seq 2386228656, win 65320, options [mss 1420,sackOK,TS val 3955849029 ecr 0,nop,wscale 7], length 0
19:05:27.504805 ens4  Out IP 10.1.1.2:80 > 10.10.10.2.1024: Flags [S.], seq 48316785, ack 2386228657, win 64768, options [mss 1420,sackOK,TS val 1815983704 ecr 3955849029,nop,wscale 7], length 0
<output snipped>

8. IPv6 서브넷에 대한 NCC 지원

Network Connectivity Center는 NCC VPC 스포크와 하이브리드 스포크 간의 IPv6 서브넷 교환 및 동적 경로 교환을 지원합니다. 이 섹션에서는 IPv6 전용 및 이중 스택 IPv4 및 IPv6 서브넷 경로 교환 모드를 지원하도록 NCC를 구성합니다.

57282c3276d50671.png

NCC-Hub에 VPC 스포크로 조인될 IPv6용 새 VPC를 만듭니다. GCP는 fd20::/20 범위의 모든 ULA 주소를 자동으로 할당합니다.

gcloud compute networks create vpc5-ncc \
--subnet-mode custom \
--enable-ula-internal-ipv6 

gcloud compute networks subnets create vpc5-ext-ipv6 \ --network=vpc5-ncc \ 
--stack-type=IPV6 \ 
--ipv6-access-type=EXTERNAL \ 
--region=us-central1

gcloud compute networks subnets create vpc5-ipv4-subnet1 \
--network vpc5-ncc \
--range 10.5.5.0/24 \
--region us-central1

이 명령어를 사용하여 VPC5를 NCC 스포크로 구성하고 IPv4 서브넷 경로가 허브 경로 테이블로 내보내지지 않도록 제외합니다. IPv6 ULA 네트워크를 NCC 허브 경로 테이블로 내보냅니다.

gcloud network-connectivity spokes linked-vpc-network create vpc5-spoke5 \
--hub=ncc-hub \
--vpc-network=vpc5-ncc \
--exclude-export-ranges=10.5.5.0/24
--global

비공개 IPv6 고유 로컬 주소 (ULA)에 대해 VPC1 및 VPC4를 사용 설정합니다. GCP는 fd20::/20 범위의 모든 ULA 주소를 자동으로 할당합니다.

gcloud compute networks update vpc-ncc4 \
    --enable-ula-internal-ipv6

gcloud compute networks update vpc-ncc1 \
    --enable-ula-internal-ipv6

VPC1에 네이티브 ipv6 및 이중 스택 ipv4_v6 서브넷 만들기

gcloud compute networks subnets create vpc1-ipv6-sn1 \
    --network=vpc-ncc1 \
    --stack-type=IPV6_ONLY \
    --ipv6-access-type=INTERNAL \
    --region=us-central1

gcloud compute networks subnets create vpc1-ipv64-sn2 \
    --network=vpc-ncc1 \
    --range=10.10.10.0/24 \
    --stack-type=IPV4_IPV6 \
    --ipv6-access-type=INTERNAL \
    --region=us-east1

VPC4에서 네이티브 ipv6 및 이중 스택 ipv4_v6 서브넷 만들기

gcloud compute networks subnets create vpc4-ipv6-sn1 \
    --network=vpc-ncc4 \
    --stack-type=IPV6_ONLY \
    --ipv6-access-type=INTERNAL \
    --region=us-central1

gcloud compute networks subnets create vpc4-ipv64-sn2 \
    --network=vpc-ncc4 \
    --range=10.40.40.0/24 \
    --stack-type=IPV4_IPV6 \
    --ipv6-access-type=INTERNAL \
    --region=us-east1

VPC1에서 IPv6 ULA 범위에서 시작된 트래픽을 허용하는 IPv6 VPC 방화벽 규칙을 만듭니다.

gcloud compute firewall-rules create allow-icmpv6-ula-ncc1 \
    --network=vpc-ncc1 \
    --action=allow \
    --direction=ingress \
    --rules=all \
    --source-ranges=fd20::/20

VPC4에서 IPv6 ULA 범위에서 시작된 트래픽을 허용하는 IPv6 VPC 방화벽 규칙을 만듭니다.

gcloud compute firewall-rules create allow-icmpv6-ula-ncc4 \
    --network=vpc-ncc4 \
    --action=allow \
    --direction=ingress \
    --rules=all \
    --source-ranges=fd20::/20

다음 섹션에서 데이터 경로 연결을 확인하기 위해 GCE IPv6 인스턴스 3개를 만듭니다. 참고: vpc1-dualstack-vm은 네이티브 IPv6 GCE VM에 대역 외 액세스 권한을 얻기 위한 배스천 호스트로 사용됩니다.

gcloud compute instances create vpc4-ipv6-vm \
    --zone us-central1-a \
    --subnet=vpc4-ipv6-sn1 \
    --stack-type=IPV6_ONLY

gcloud compute instances create vpc1-ipv6-vm \
    --zone us-central1-a \
    --subnet=vpc1-ipv6-sn1 \
    --stack-type=IPV6_ONLY

gcloud compute instances create vpc1-dual-stack-vm \
    --zone us-east1-b \
    --network=vpc-ncc1 \
    --subnet=vpc2-ipv64-sn2 \
    --stack-type=IPV4_IPV6

NCC 허브에서 IPv6 서브넷 확인

NCC 허브 경로 테이블에서 IPv6 ULA 서브넷을 확인합니다.

gcloud network-connectivity hubs route-tables routes list --route_table=default \
--hub=ncc-hub \
--filter="IP_CIDR_RANGE:fd20"

위 명령어의 출력에는 IPv6 서브넷이 나열되지 않았습니다. 기본적으로 VPC 스포크의 IPv6 서브넷은 NCC 허브 라우팅 테이블로 내보내기에 포함되지 않습니다.

Listed 0 items.

아래 gcloud 명령어를 사용하여 VPC1 및 VPC4 스포크를 업데이트하여 IPv6 서브넷을 NCC 허브 라우팅 테이블로 내보냅니다.

gcloud network-connectivity spokes linked-vpc-network update vpc1-spoke1 \
  --global \
  --include-export-ranges=ALL_IPV6_RANGES

gcloud network-connectivity spokes linked-vpc-network update vpc4-spoke4 \
  --global \
  --include-export-ranges=ALL_IPV6_RANGES

gcloud network-connectivity spokes linked-vpc-network update vpc5-spoke5 \
  --global \
  --include-export-ranges=ALL_IPV6_RANGES

NCC 허브 경로 테이블에서 IPv6 ULA 서브넷을 다시 확인합니다.

gcloud network-connectivity hubs route-tables routes list --route_table=default \
--hub=ncc-hub \
--filter="IP_CIDR_RANGE:fd20"

출력 예

IP_CIDR_RANGE                  PRIORITY  LOCATION     STATE   TYPE                SITE_TO_SITE  NEXT_HOP  HUB            ROUTE_TABLE
fd20:c95:95d2:1000:0:0:0:0/64            us-east1     ACTIVE  VPC_PRIMARY_SUBNET  N/A           vpc-ncc4  ncc-hub  default
fd20:c95:95d2:1:0:0:0:0/64               us-central1  ACTIVE  VPC_PRIMARY_SUBNET  N/A           vpc-ncc4  ncc-hub  default
fd20:670:3823:0:0:0:0:0/64               us-central1  ACTIVE  VPC_PRIMARY_SUBNET  N/A           vpc-ncc5  ncc-hub  default
fd20:90:6768:1000:0:0:0:0/64             us-east1     ACTIVE  VPC_PRIMARY_SUBNET  N/A           vpc-ncc2  ncc-hub  default
fd20:90:6768:0:0:0:0:0/64                us-central1  ACTIVE  VPC_PRIMARY_SUBNET  N/A           vpc-ncc2  ncc-hub  default

NCC VPC 스포크로 IPv6 서브넷 필터링

NCC 허브 경로 테이블에서 외부 IPv6 서브넷 경로 확인

gcloud network-connectivity hubs route-tables routes list --route_table=default \
--hub=ncc-hub \
--filter="NEXT_HOP:vpc-ncc5"

출력 예시: ncc 허브 경로 테이블에서 외부 IPv6 범위를 학습했습니다.

IP_CIDR_RANGE                  PRIORITY  LOCATION     STATE   TYPE                SITE_TO_SITE  NEXT_HOP  HUB            ROUTE_TABLE
10.5.5.0/24                              us-central1  ACTIVE  VPC_PRIMARY_SUBNET  N/A           vpc-ncc5  ncc-hub  default
2600:1900:4001:ce6:0:0:0:0/64            us-central1  ACTIVE  VPC_PRIMARY_SUBNET  N/A           vpc-ncc5  ncc-hub  default
fd20:670:3823:0:0:0:0:0/64               us-central1  ACTIVE  VPC_PRIMARY_SUBNET  N/A           vpc-ncc5  ncc-hub  default
10.50.10.0/24                            us-central1  ACTIVE  VPC_PRIMARY_SUBNET  N/A           vpc-ncc5  ncc-hub  default

아래 gcloud 명령어를 사용하여 NCC 허브 라우팅 테이블에 삽입되지 않도록 두 개의 특정 내부 IPv6 서브넷과 하나의 외부 IPv6 서브넷을 제외하도록 VPC5 스포크를 업데이트합니다.

gcloud network-connectivity spokes linked-vpc-network update vpc5-spoke5 \
 --global \
 --include-export-ranges=fd20:670:3823:0:0:0:0:0/48 \
 --exclude-export-ranges=fd20:670:3823:1::/64,fd20:670:3823:2::/64  

gcloud 명령어를 사용하여 VPC5 스포크의 내보내기 필터 확인

gcloud network-connectivity spokes linked-vpc-network update vpc5-spoke5 \
 --global \
 --include-export-ranges=fd20:670:3823:0:0:0:0:0/48 \
 --exclude-export-ranges=fd20:670:3823:1::/64,fd20:670:3823:2::/64  

NCC 허브 경로 테이블에서 외부 IPv6 서브넷 경로 확인

gcloud network-connectivity hubs route-tables routes list --route_table=default \
--hub=ncc-hub \
--filter="NEXT_HOP:vpc-ncc5"

출력 예시: ncc 허브 경로 테이블에서 외부 IPv6 범위를 학습했습니다.

IP_CIDR_RANGE               PRIORITY  LOCATION     STATE   TYPE                SITE_TO_SITE  NEXT_HOP  HUB            ROUTE_TABLE
fd20:670:3823:0:0:0:0:0/64            us-central1  ACTIVE  VPC_PRIMARY_SUBNET  N/A           vpc-ncc5  demo-mesh-hub  default

9. 데이터 경로 연결 확인

IPv4 데이터 경로 연결

다이어그램을 참고하여 각 가상 머신 간의 IPv4 데이터 경로를 확인합니다.

27c61b09f2bf2d02.png

vm1-vpc1-ncc에 SSH로 연결하고 TCP 덤프를 시작하여 vm2-vpc2-ncc의 ICMP 패킷을 추적합니다. 이 VM은 VPC2에 있습니다.

vm1-vpc1-ncc

sudo tcpdump -i any icmp -v -e -n

'vm1-vpc2-ncc'에 SSH 세션을 설정하고 'vm1-vpc1-ncc'의 IP 주소를 'ping'합니다.

vm1-vpc2-ncc

ping 10.1.1.2

'vm1-vpc2-ncc'에 SSH를 설정하고 'vm1-vpc4-ncc'의 IP 주소를 'ping'합니다.

vm1-vpc2-ncc

ping 240.0.0.2

IPv6 데이터 경로 연결

다이어그램을 참고하여 각 가상 머신 간의 IP64 데이터 경로를 확인합니다.

3afe67968317a16d.png

gcloud 명령어를 사용하여 IPv6 지원 인스턴스별 IP 주소를 나열합니다.

 gcloud compute instances list --filter="INTERNAL_IP:fd20"

샘플 출력

NAME                ZONE           MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP                   EXTERNAL_IP      STATUS
vpc1-ipv6-vm        us-central1-a  n1-standard-1               fd20:90:6768:0:0:1:0:0/96                      RUNNING
vpc4-ipv6-vm        us-central1-a  n1-standard-1               fd20:c95:95d2:1:0:1:0:0/96                     RUNNING
vpc1-dual-stack-vm  us-east1-b     n1-standard-1               10.10.10.3                    XXX.196.137.107  RUNNING
                                                               fd20:90:6768:1000:0:1:0:0/96

'vpc1-dualstack-vm'에 SSH 세션을 설정하고 'vpc1-ipv6-vm'의 IPv6 주소를 'ping'하여 전역 VPC 내에서 IPv6 연결을 검증합니다.

ping fd20:90:6768:1000:0:1::

'vpc1-dualstack-vm'에 SSH 세션을 설정하고 'vpc4-ipv6-vm'의 IPv6 주소를 'ping'하여 NCC 연결을 통한 IPv6 연결을 검증합니다.

ping fd20:c95:95d2:1:0:1::

10. 삭제

Cloud Shell에 로그인하고 허브 및 지점 사이트 네트워크에서 VM 인스턴스를 삭제합니다.

비공개 VPC NAT 구성 삭제

gcloud beta compute routers nats rules delete 1 \
--nat=ncc2-nat \
--router=private-nat-cr \
--region=us-central1 \
--quiet

gcloud beta compute routers nats delete ncc2-nat \
--router=private-nat-cr \
--router-region=us-central1 \
--quiet

gcloud compute routers delete private-nat-cr \
--region=us-central1 \
--quiet

ncc 스포크 삭제

gcloud network-connectivity spokes delete vpc1-spoke1 --global --quiet

gcloud network-connectivity spokes delete vpc2-spoke2 --global --quiet

gcloud network-connectivity spokes delete vpc3-spoke3 --global --quiet

gcloud network-connectivity spokes delete vpc4-spoke4 --global --quiet

프로젝트 간 스포크 거부

NCC 허브에서 프로젝트 간 VPC 스포크를 거부합니다.

gcloud network-connectivity spokes reject projects/$xprojname/locations/global/spokes/xproj-spoke \--details="cleanup" \
--global

NCC 허브 삭제

gcloud network-connectivity hubs delete ncc-hub --quiet

방화벽 규칙 삭제

gcloud compute firewall-rules delete ncc1-vpc-internal --quiet
gcloud compute firewall-rules delete ncc2-vpc-internal --quiet
gcloud compute firewall-rules delete ncc3-vpc-internal --quiet
gcloud compute firewall-rules delete ncc4-vpc-internal --quiet
gcloud compute firewall-rules delete ncc1-vpc-iap --quiet
gcloud compute firewall-rules delete ncc2-vpc-iap --quiet
gcloud compute firewall-rules delete ncc3-vpc-iap --quiet
gcloud compute firewall-rules delete ncc4-vpc-iap --quiet
gcloud compute firewall-rules delete allow-icmpv6-ula-ncc1 
gcloud compute firewall-rules delete allow-icmpv6-ula-ncc4 

GCE 인스턴스 삭제

gcloud compute instances delete vm1-vpc1-ncc --zone=us-central1-a --quiet
gcloud compute instances delete vm2-vpc2-ncc --zone=us-central1-a --quiet
gcloud compute instances delete pnat-vm-vpc2 --zone=us-central1-a --quiet
gcloud compute instances delete vm1-vpc4-ncc --zone=us-east1-b --quiet
gcloud compute instances delete vpc4-ipv6-vm  --zone us-central1-a --quiet
gcloud compute instances delete vpc2-dual-stack-vm --zone us-east1-b --quiet
gcloud compute instances delete vpc2-ipv6-vm --zone us-central1-a --quiet

VPC 서브넷 삭제

gcloud compute networks subnets delete ncc2-spoke-nat --region us-central1 --quiet
gcloud compute networks subnets delete vpc1-ncc-subnet1 --region us-central1 --quiet
gcloud compute networks subnets delete vpc1-ncc-subnet2 --region us-central1 --quiet
gcloud compute networks subnets delete vpc1-ncc-subnet3 --region us-central1 --quiet
gcloud compute networks subnets delete vpc2-ncc-subnet1 --region us-central1 --quiet
gcloud compute networks subnets delete overlapping-vpc2 --region us-central1 --quiet 
gcloud compute networks subnets delete overlapping-vpc3 --region us-central1 --quiet

gcloud compute networks subnets delete benchmark-testing-rfc2544 --region us-east1 --quiet
gcloud compute networks subnets delete class-e-rfc5735 --region us-east1 --quiet
gcloud compute networks subnets delete ietf-protcol-assignment-rfc6890 --region us-east1 --quiet
gcloud compute networks subnets delete ipv6-4-relay-rfc7526 --region us-east1 --quiet
gcloud compute networks subnets delete pupi --region us-east1 --quiet
gcloud compute networks subnets delete test-net-1-rfc5737 --region us-east1 --quiet
gcloud compute networks subnets delete test-net-2-rfc5737 --region us-east1 --quiet
gcloud compute networks subnets delete test-net-3-rfc5737 --region us-east1 --quiet
gcloud compute networks subnets delete vpc1-ipv64-sn2 --region=us-east1 --quiet
gcloud compute networks subnets delete vpc1-ipv6-sn1 --region=us-central1 --quiet
gcloud compute networks subnets delete vpc4-ipv64-sn2 --region=us-east1 --quiet
gcloud compute networks subnets delete vpc4-ipv6-sn1 --region=us-central1 --quiet
gcloud compute networks subnets delete vpc5-ext-ipv6 --region=us-central1 --quiet

VPC 삭제

gcloud compute networks delete vpc1-ncc vpc2-ncc vpc3-ncc vpc4-ncc, vpc5-ncc --quiet 

11. 축하합니다.

Network Connectivity Center 실습을 완료했습니다.

학습한 내용

  • NCC 허브로 전체 메시 VPC 피어링 네트워크를 구성했습니다.
  • NCC 스포크 제외 필터
  • 교차 프로젝트 스포크 지원
  • VPC 간 Private NAT

다음 단계

©Google, LLC 또는 그 계열사 All rights reserved. 배포 금지.