Lab: VPC NCC sebagai Spoke

Tentang codelab ini
schedule7 menit
subjectTerakhir diperbarui 28 Maret 2025
account_circleDitulis oleh Eric Yu, David Tu

Dalam lab ini, pengguna akan mempelajari cara Network Connectivity Center(NCC) dapat digunakan untuk membangun konektivitas Antar-VPC dalam skala besar melalui dukungan untuk Spoke VPC. Jika pengguna menentukan VPC sebagai spoke VPC, mereka dapat menghubungkannya ke beberapa jaringan VPC secara bersamaan melalui Hub NCC. NCC dengan konfigurasi spoke VPC mengurangi kompleksitas operasional pengelolaan konektivitas antar-VPC berpasangan melalui peering VPC, bukan menggunakan model pengelolaan konektivitas terpusat.

Ingat bahwa Network Connectivity Center (NCC) adalah model bidang kontrol hub-and-spoke untuk pengelolaan konektivitas jaringan di Google Cloud. Resource hub menyediakan model pengelolaan konektivitas terpusat untuk menghubungkan spoke.

Yang akan Anda bangun

Dalam codelab ini, Anda akan membuat topologi hub dan spoke logis dengan hub NCC yang akan menerapkan fabric konektivitas VPC mesh penuh di tiga VPC yang berbeda.

Yang akan Anda pelajari

  • Konektivitas VPC Mesh Penuh dengan NCC
  • Private NAT di seluruh VPC

Yang Anda butuhkan

  • Pengetahuan tentang jaringan VPC GCP
  • Pengetahuan tentang Cloud Router dan perutean BGP
  • Dua project GCP terpisah
  • Codelab ini memerlukan 5 VPC. Salah satu VPC tersebut harus berada di project yang terpisah dari hub NCC
  • Periksa Quota:Networks dan minta Jaringan tambahan jika diperlukan, screenshot di bawah:

6bc606cb34bce7e8.png

Tujuan

  • Menyiapkan Lingkungan GCP
  • Mengonfigurasi Network Connectivity Center dengan VPC sebagai spoke
  • Memvalidasi Jalur Data
  • Mempelajari fitur kemampuan servis NCC
  • Membersihkan resource yang digunakan

Sebelum memulai

Konsol Google Cloud dan Cloud Shell

Untuk berinteraksi dengan GCP, kita akan menggunakan Konsol Google Cloud dan Cloud Shell di seluruh lab ini.

Project NCC Hub Konsol Google Cloud

Konsol Cloud dapat diakses di https://console.cloud.google.com.

Siapkan item berikut di Google Cloud untuk mempermudah konfigurasi Network Connectivity Center:

Di Konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

Luncurkan Cloud Shell. Codelab ini menggunakan $variables untuk membantu penerapan konfigurasi gcloud di Cloud Shell.

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

Peran IAM

NCC memerlukan peran IAM untuk mengakses API tertentu. Pastikan untuk mengonfigurasi pengguna dengan peran IAM NCC sesuai kebutuhan.

Peran/Deskripsi

Izin

networkconnectivity.networkAdmin - Mengizinkan administrator jaringan mengelola hub dan spoke.

networkconnectivity.hubs.networkconnectivity.spokes.

networkconnectivity.networkSpokeManager - Memungkinkan penambahan dan pengelolaan spoke di hub. Untuk digunakan di VPC Bersama dengan project host yang memiliki Hub, tetapi admin lain di project lain dapat menambahkan spoke untuk lampiran mereka ke Hub.

networkconnectivity.spokes.**

networkconnectivity.networkUsernetworkconnectivity.networkViewer - Memungkinkan pengguna jaringan melihat berbagai atribut hub dan spoke.

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

2. Menyiapkan Lingkungan Jaringan

Ringkasan

Di bagian ini, kita akan men-deploy jaringan VPC dan aturan firewall dalam satu project. Diagram logis mengilustrasikan lingkungan jaringan yang akan disiapkan pada langkah ini.

Untuk menunjukkan dukungan spoke lintas project, pada langkah berikutnya, kita akan men-deploy VPC dan aturan firewall di project lain.

dc4ed09dae1a0056.png

Membuat VPC dan Subnet

Jaringan VPC berisi subnet tempat Anda akan menginstal VM GCE untuk validasi jalur data

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

Rentang Subnet yang Didukung VPC

NCC mendukung semua rentang subnet IPv4 yang valid, kecuali alamat IP publik yang digunakan secara pribadi. Pada langkah ini, buat rentang IP yang valid di VPC4 yang akan diimpor ke tabel rute hub.

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

Membuat Rentang Subnet yang Tumpang-Tindih

NCC tidak akan mengimpor rentang IP yang tumpang-tindih ke dalam tabel rute hub. Pengguna akan mengatasi batasan ini pada langkah berikutnya. Untuk saat ini, buat dua rentang IP yang tumpang-tindih untuk VPC2 dan VPC3.

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

Mengonfigurasi Aturan Firewall VPC

Konfigurasikan aturan firewall di setiap VPC untuk mengizinkan

  • SSH
  • IAP Internal
  • Rentang 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

Mengonfigurasi VM GCE di Setiap VPC

Anda memerlukan akses internet sementara untuk menginstal paket di "vm1-vpc1-ncc".

Buat empat virtual machine, setiap VM akan ditetapkan ke salah satu VPC yang dibuat sebelumnya

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. Hub Network Connectivity Center

Ringkasan

Di bagian ini, kita akan mengonfigurasi Hub NCC menggunakan perintah gcloud. Hub NCC akan berfungsi sebagai bidang kontrol yang bertanggung jawab untuk membuat konfigurasi perutean di antara setiap spoke VPC.

860347511de47cea.png

Mengaktifkan Layanan API

Aktifkan network connectivity API jika belum diaktifkan:

gcloud services enable networkconnectivity.googleapis.com

Membuat Hub NCC

Membuat hub NCC menggunakan perintah gCloud

gcloud network-connectivity hubs create ncc-hub

Contoh output

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]

Jelaskan Hub NCC yang baru dibuat. Perhatikan nama dan jalur terkait.

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 Hub memperkenalkan tabel perutean yang menentukan bidang kontrol untuk membuat konektivitas data. Menemukan nama tabel pemilihan rute NCC Hub

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

Temukan URI tabel rute default NCC.

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'

Cantumkan konten tabel pemilihan rute default NCC Hub. Catatan* Tabel rute Hub NCC akan kosong hingga spoke

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

Tabel rute Hub NCC harus kosong.

4. NCC dengan Spoke VPC

Ringkasan

Di bagian ini, Anda akan mengonfigurasi tiga VPC sebagai Spoke NCC menggunakan perintah gCloud.

b367b1659d2df694.png

Mengonfigurasi VPC sebagai Spoke NCC

Konfigurasikan VPC berikut sebagai Spoke NCC dalam urutan ini

  • VPC4
  • VPC1
  • VPC2
  • VPC3

Konfigurasikan VPC4 sebagai spoke NCC dan tetapkan ke hub NCC yang dibuat sebelumnya. Panggilan API spoke NCC memerlukan lokasi yang ditentukan. Flag "–global" menyederhanakan sintaksis gcloud dengan memungkinkan pengguna menghindari penentuan jalur URI lengkap saat mengonfigurasi spoke NCC baru.

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

Konfigurasikan VPC1 sebagai spoke NCC.

Administrator dapat mengecualikan rute subnet agar tidak diekspor dari spoke VPC ke tabel rute hub NCC. Di bagian codelab ini, buat aturan ekspor pengecualian berdasarkan awalan ringkasan untuk mencegah subnet VPC1 diekspor ke tabel rute NCC Hub.

Gunakan perintah gcloud ini untuk menampilkan daftar semua subnet yang termasuk dalam VPC1.

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

Perhatikan pasangan subnet /25 yang sebelumnya dibuat di bagian penyiapan.

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

Konfigurasikan VPC1 sebagai spoke NCC dan kecualikan pasangan subnet /25 agar tidak diimpor ke tabel perutean hub menggunakan kata kunci "export-exclude-ranges" untuk memfilter rute ringkasan /24 dari rentang spesifik tersebut.

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 

Catatan* Pengguna dapat memfilter hingga 16 rentang IP unik per spoke NCC.

Cantumkan konten tabel pemilihan rute default NCC Hub. Apa yang terjadi pada pasangan subnet /25 di tabel perutean NCC Hub?

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

Mengonfigurasi VPC2 sebagai spoke NCC

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

Konfigurasikan VPC3 sebagai spoke NCC dan tetapkan ke hub NCC yang dibuat sebelumnya.

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

Apa yang terjadi?

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 Hub mendeteksi rentang IP yang tumpang-tindih dengan VPC2. Ingat bahwa VPC2 dan VPC3 disiapkan dengan subnet IP 10.3.3.0/24 yang sama.

Memfilter Rentang IP yang Tumpang-Tindih dengan Mengekspor Pengecualian

Pada saat menulis codelab ini, masalah yang diketahui adalah pengguna harus menghapus dan membuat ulang spoke NCC untuk membuat perubahan konfigurasi pada filter ekspor.

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

Catatan: Menghapus spoke VPC yang terkait dengan VPC tertentu memerlukan periode tunggu 10 menit agar berakhir untuk membuat ulang spoke baru yang mereferensikan VPC yang sama.

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

Konfigurasikan VPC3 sebagai spoke NCC dan tetapkan ke hub NCC yang dibuat sebelumnya. Upaya untuk menambahkan VPC3 sebagai spoke ke NCC akan berhasil.

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

Cantumkan konten tabel pemilihan rute default NCC Hub dan periksa output-nya.

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

Rentang IP yang tumpang-tindih dari VPC2 dan VPC3 dikecualikan. Tabel perutean NCC Hub mendukung semua jenis rentang IPv4 yang valid, kecuali untuk alamat IP publik yang digunakan secara pribadi (PUPI).

5. NCC dengan Spoke Lintas Project

Ringkasan

Sejauh ini, Anda telah mengonfigurasi spoke NCC yang berada dalam project yang sama dengan Hub. Di bagian ini, Anda akan mengonfigurasi VPC sebagai Spoke NCC dari project terpisah selain Hub NCC menggunakan perintah gCloud.

Hal ini memungkinkan pemilik project yang mengelola VPC mereka sendiri untuk berpartisipasi dalam konektivitas jaringan dengan NCC Hub.

a90b3185e30832e8.png

Lintas Project: Konsol Google Cloud dan Cloud Shell

Untuk berinteraksi dengan GCP, kita akan menggunakan Konsol Google Cloud dan Cloud Shell di seluruh lab ini.

Konsol Google Cloud Spoke Lintas Project

Cloud Console dapat diakses di https://console.cloud.google.com.

Siapkan item berikut di Google Cloud untuk mempermudah konfigurasi Network Connectivity Center:

Di Konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

Luncurkan Cloud Shell. Codelab ini menggunakan $variables untuk membantu penerapan konfigurasi gcloud di Cloud Shell.

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

Peran IAM

NCC memerlukan peran IAM untuk mengakses API tertentu. Pastikan untuk mengonfigurasi pengguna dengan peran IAM NCC sesuai kebutuhan.

Minimal, administrator spoke lintas project harus diberi peran IAM: "networkconnectivity.networkSpokeManager. "

Tabel di bawah ini mencantumkan peran IAM yang diperlukan untuk admin Hub dan Spoke NCC sebagai referensi.

Peran/Deskripsi

Izin

networkconnectivity.networkAdmin - Mengizinkan administrator jaringan mengelola hub dan spoke.

networkconnectivity.hubs.networkconnectivity.spokes.

networkconnectivity.networkSpokeManager - Memungkinkan penambahan dan pengelolaan spoke di hub. Untuk digunakan di VPC Bersama dengan project host yang memiliki Hub, tetapi admin lain di project lain dapat menambahkan spoke untuk lampiran mereka ke Hub.

networkconnectivity.spokes.**

networkconnectivity.networkUsernetworkconnectivity.networkViewer - Memungkinkan pengguna jaringan melihat berbagai atribut hub dan spoke.

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

Membuat VPC dan Subnet di Project Lintas

Jaringan VPC berisi subnet tempat Anda akan menginstal VM GCE untuk validasi jalur data

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

URI Project Hub NCC

Gunakan perintah gcloud ini untuk menemukan URI Hub NCC. Anda memerlukan jalur URI untuk mengonfigurasi spoke NCC lintas project di langkah berikutnya.

gcloud network-connectivity hubs describe ncc-hub

VPC Spoke Lintas Project

Login ke project lain tempat VPC BUKAN bagian dari project NCC Hub. Di cloudshell, gunakan perintah ini untuk mengonfigurasi VPC sebagai spoke NCC.

  • HUB_URI harus berupa URI hub di project yang berbeda.
  • VPC_URI harus berada dalam project yang sama dengan spoke
  • VPC-network menentukan VPC dalam project lintas ini akan bergabung dengan NCC Hub di project lain
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'

Apa status spoke NCC lintas project? Mengapa?

6. Menolak atau Menerima Spoke Lintas Project

Ringkasan

Admin NCC Hub harus menerima spoke lintas project secara eksplisit untuk bergabung dengan hub. Hal ini mencegah pemilik project memasang spoke NCC yang tidak sah ke tabel perutean global NCC. Setelah diterima atau ditolak, spoke dapat ditolak atau diterima sebanyak yang diinginkan dengan menjalankan perintah di atas.

Kembali ke project tempat hub NCC berada dengan login ke cloud shell.

Mengidentifikasi Spoke Lintas Project yang Akan Ditinjau

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

Menerima spoke

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

Opsional: Menolak spoke

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

Mencantumkan Spoke Aktif di Hub

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

Mencantumkan rute subnet di Hub

Dari output, dapatkah Anda melihat rute subnet dari spoke lintas 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

Memperbarui VPC Spoke Lintas Project dengan filter Include-Export

Login ke project tempat VPC BUKAN bagian dari project NCC Hub. Di cloudshell, gunakan perintah ini untuk mengonfigurasi VPC sebagai spoke NCC.

  • HUB_URI harus berupa URI hub di project yang berbeda.
  • VPC_URI harus berada dalam project yang sama dengan spoke
  • VPC-network menentukan VPC dalam project lintas ini akan bergabung dengan NCC Hub di project lain
  • Hanya impor rentang subnet 10.100.2.0/24 ke Tabel Rute Hub NCC
  • Perhatikan nilai "ETAG" dari output. Nilai ini dihasilkan oleh NCC dan Anda harus memberikan nilai ini kepada administrator hub NCC. Admin hub NCC harus mereferensikan nilai ini saat menerima permintaan spoke lintas project untuk bergabung ke hub.
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'

Mengidentifikasi Spoke Lintas Project yang Diperbarui untuk Ditinjau

Login ke project yang menghosting hub NCC. Di cloudshell, gunakan perintah ini untuk memeriksa status update spoke VPC lintas project.

  • Apa nilai ETAG? Nilai ini harus cocok dengan output dari pembaruan spoke vpc.
gcloud network-connectivity hubs list-spokes ncc-hub \ 
--filter="reasons:UPDATE_PENDING_REVIEW" \
--format=yaml

Menyetujui perubahan yang diperbarui dari spoke lintas project

Gunakan perintah untuk menyetujui permintaan spoke lintas project untuk bergabung ke NCC Hub

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}

Secara opsional, tolak perubahan yang diperbarui dari spoke lintas project

Gunakan perintah untuk menolak permintaan spoke lintas project untuk bergabung ke Hub 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} 

Memverifikasi spoke lintas project telah bergabung dengan hub NCC

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

7. Private NAT Antara VPC

Ringkasan

Di bagian ini, Anda akan mengonfigurasi NAT pribadi untuk rentang subnet yang tumpang-tindih di antara dua VPC. Perhatikan bahwa NAT pribadi antar-VPC memerlukan NCC.

Di bagian sebelumnya, VPC2 dan VPC3 dikonfigurasi dengan rentang subnet yang tumpang-tindih "10.3.3.0/24". Kedua VPC dikonfigurasi sebagai spoke NCC untuk mengecualikan subnet yang tumpang-tindih agar tidak disisipkan ke dalam tabel rute hub NCC, yang berarti tidak ada jalur data lapisan 3 untuk menjangkau host yang berada di subnet tersebut.

Gunakan perintah ini di project hub NCC untuk menemukan rentang subnet yang tumpang-tindih.

gcloud compute networks subnets list --network vpc2-ncc

gcloud compute networks subnets list --network vpc3-ncc

Di vpc2-ncc, apa nama subnet yang berisi Rentang IP yang tumpang-tindih?

*Catat dan simpan nama subnet di suatu tempat. Anda akan mengonfigurasi NAT sumber untuk rentang ini.

Mengonfigurasi Private NAT

Dedikasikan rentang subnet yang dapat dirutekan untuk memicu traffic NAT dari subnet VPC2 yang tumpang-tindih. Dengan mengonfigurasi rentang subnet yang tidak tumpang-tindih menggunakan flag "–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

Membuat router cloud khusus untuk melakukan NAT pribadi

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

Konfigurasikan cloud router untuk NAT sumber rentang 10.3.3.0/24 yang tumpang-tindih dari vpc2-ncc. Dalam contoh konfigurasi di bawah, "overlapping-vpc3" adalah nama subnet yang tumpang-tindih. Kata kunci "ALL" menentukan bahwa semua rentang IP di subnet akan di-NAT sumber.

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

Langkah sebelumnya membuat kumpulan rentang IP NAT dan subnet tertentu yang akan diterjemahkan. Pada langkah ini, buat Aturan NAT "1" yang menerjemahkan paket jaringan yang cocok dengan traffic yang berasal dari rentang subnet yang tumpang-tindih jika jaringan tujuan mengambil jalur dari tabel perutean hub NCC.

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

Memverifikasi Jalur Data untuk Private NAT

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

Contoh output

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

Secara opsional,

  • Beralih ke konsol web
  • buka "Network Services > Cloud NAT > ncc2-nat"

Pastikan alokasi port dinamis diaktifkan secara default.

7317d3cfb7e9468b.png

Selanjutnya, Anda akan memverifikasi jalur data yang menggunakan jalur NAT pribadi yang dikonfigurasi untuk VPC2.

444d45616f1d0cae.png

Buka sesi SSH ke "vm1-vpc1-ncc" dan gunakan perintah tcpdump di bawah untuk mengambil paket yang berasal dari rentang kumpulan NAT "10.10.10.0/29".

vm1-vpc1-ncc

sudo tcpdump -i any net 10.10.10.0/29 -n

Pada saat menulis codelab ini, NAT pribadi tidak mendukung paket ICMP. Sesi SSH ke "pNat-vm-vpc2" dan gunakan perintah curl seperti yang ditunjukkan di bawah untuk terhubung ke "vm1-vpc1-ncc" di port TCP 80.

pnat-vm-vpc2

curl 10.1.1.2 -v 

Periksa output tcpdump di "vm1-vpc1-ncc". Apa alamat IP sumber yang memulai sesi TCP ke server web kami di "vm1-vpc1-ncc"?

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. Dukungan NCC untuk Subnet IPv6

Network Connectivity Center mendukung pertukaran subnet IPv6 dan pertukaran rute dinamis antara Spoke VPC NCC dan Spoke Hybrid. Di bagian ini, konfigurasikan NCC untuk mendukung mode pertukaran rute subnet IPv6 saja dan dual-stack IPv4-dan-IPv6.

57282c3276d50671.png

Membuat VPC baru untuk IPv6 yang akan bergabung dengan NCC-Hub sebagai spoke VPC

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

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

Gunakan perintah ini untuk mengonfigurasi VPC5 sebagai spoke NCC dan mengecualikan rute subnet IPv4 agar tidak diekspor ke tabel rute hub. Ekspor jaringan ULA IPv6 ke tabel rute hub NCC.

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

Aktifkan VPC1 dan VPC4 untuk Alamat Lokal Unik (ULA) IPv6 pribadi. GCP akan otomatis menetapkan semua alamat ULA dari rentang fd20::/20.

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

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

Membuat subnet ipv6 native dan subnet ipv4_v6 stack ganda di VPC1

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

Membuat subnet ipv6 native dan ipv4_v6 stack ganda di VPC4

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

Di VPC1, buat aturan firewall VPC IPv6 untuk mengizinkan traffic yang berasal dari rentang ULA IPv6.

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

Di VPC4, buat aturan firewall VPC IPv6 untuk mengizinkan traffic yang berasal dari rentang ULA IPv6.

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

Buat tiga instance IPv6 GCE untuk memverifikasi konektivitas jalur data di bagian berikutnya

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

Memeriksa NCC Hub untuk subnet IPv6

Periksa tabel rute hub NCC untuk subnet ULA IPv6.

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

Perhatikan bahwa output dari perintah di atas tidak mencantumkan subnet IPv6. Secara default, subnet IPv6 dari spoke VPC TIDAK disertakan untuk diekspor ke tabel rute hub NCC.

Listed 0 items.

Gunakan perintah gcloud di bawah untuk memperbarui spoke VPC1 dan VPC4 guna mengekspor subnet IPv6 ke tabel rute hub 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

Sekali lagi, periksa tabel rute hub NCC untuk subnet ULA IPv6.

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

Contoh output

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

9. Memverifikasi Konektivitas Jalur Data

Konektivitas Jalur data IPv4

Lihat diagram, verifikasi jalur data IPv4 di antara setiap virtual machine.

27c61b09f2bf2d02.png

Lakukan SSH ke "vm1-vpc1-ncc" dan mulai dump TCP untuk melacak paket ICMP dari " vm2-vpc2-ncc". Sebagai pengingat, VM ini berada di VPC2.

vm1-vpc1-ncc

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

Buat sesi SSH ke "vm1-vpc2-ncc" dan "ping" alamat IP "vm1-vpc1-ncc".

vm1-vpc2-ncc

ping 10.1.1.2

Buat SSH ke "vm1-vpc2-ncc" dan "ping" alamat IP "vm1-vpc4-ncc".

vm1-vpc2-ncc

ping 240.0.0.2

Konektivitas Jalur Data IPv6

Lihat diagram, verifikasi jalur data IP64 di antara setiap virtual machine.

3afe67968317a16d.png

Gunakan perintah gcloud untuk mencantumkan alamat IP untuk setiap instance yang mengaktifkan IPv6.

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

Contoh output

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

Buat sesi SSH ke "vpc1-dualstack-vm" dan "ping" alamat IPv6 "vpc1-ipv6-vm" untuk memvalidasi konektivitas IPv6 dalam VPC global

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

Buat sesi SSH ke "vpc1-dualstack-vm" dan "ping" alamat IPv6 "vpc4-ipv6-vm" untuk memvalidasi konektivitas IPv6 di seluruh koneksi NCC.

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

10. Pembersihan

Login ke Cloud Shell dan hapus instance VM di jaringan situs hub dan cabang

Menghapus konfigurasi Nat VPC pribadi

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

Menghapus spoke 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

Menolak spoke lintas project

Menolak spoke VPC lintas project dari hub NCC.

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

Menghapus Hub NCC

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

Menghapus Aturan Firewall

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 

Menghapus Instance 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

Menghapus Subnet 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

Menghapus VPC

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

11. Selamat!

Anda telah menyelesaikan Lab Network Connectivity Center.

Yang telah Anda pelajari

  • Jaringan Peering VPC Mesh Penuh yang dikonfigurasi dengan Hub NCC
  • Filter Pengecualian Spoke NCC
  • Dukungan Spoke Lintas Project
  • Private NAT antar-VPC

Langkah Berikutnya

©Google, LLC atau afiliasinya. Semua hak dilindungi undang-undang. Jangan didistribusikan.