1. Introduzione
Panoramica
In questo lab, gli utenti esploreranno come Network Connectivity Center(NCC) può essere utilizzato per stabilire la connettività tra VPC su larga scala tramite il supporto degli spoke VPC. Quando gli utenti definiscono un VPC come spoke VPC, possono connetterlo a più reti VPC tramite l'hub NCC. NCC con la configurazione degli spoke VPC riduce la complessità operativa della gestione della connettività pairwise tra VPC tramite il peering VPC, utilizzando invece un modello di gestione della connettività centralizzato.
Ricorda che Network Connectivity Center (NCC) è un modello di control plane hub and spoke per la gestione della connettività di rete in Google Cloud. La risorsa hub fornisce un modello di gestione della connettività centralizzato per interconnettere gli spoke.
Cosa creerai
In questo codelab, creerai una topologia logica hub e spoke con l'hub NCC che implementerà un tessuto di connettività VPC completamente mesh in tre VPC distinti.
Cosa imparerai a fare
- Connettività VPC full mesh con NCC
- Private NAT tra VPC
Che cosa ti serve
- Conoscenza della rete VPC di GCP
- Conoscenza del router Cloud e del routing BGP
- Due progetti Google Cloud separati
- Questo codelab richiede 5 VPC. Uno di questi VPC deve trovarsi in un progetto separato dall'hub NCC
- Controlla Quota:reti e richiedi reti aggiuntive, se necessario. Vedi lo screenshot di seguito:
Obiettivi
- Configura l'ambiente GCP
- Configura Network Connectivity Center con VPC come spoke
- Convalida del percorso dei dati
- Esplorare le funzionalità di manutenzione di NCC
- Esegui la pulizia delle risorse utilizzate
Prima di iniziare
Google Cloud Console e Cloud Shell
Per interagire con GCP, utilizzeremo sia la console Google Cloud che Cloud Shell durante questo lab.
Progetto hub NCC Console Google Cloud
Puoi accedere alla console Cloud all'indirizzo https://console.cloud.google.com.
Configura i seguenti elementi in Google Cloud per semplificare la configurazione di Network Connectivity Center:
Nella console Google Cloud, nella pagina di selezione del progetto, seleziona o crea un progetto Google Cloud.
Avvia Cloud Shell. Questo Codelab utilizza le variabili $per facilitare l'implementazione della configurazione gcloud in 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
Ruoli IAM
NCC richiede ruoli IAM per accedere ad API specifiche. Assicurati di configurare l'utente con i ruoli IAM NCC in base alle esigenze.
Ruolo/Descrizione | Autorizzazioni |
networkconnectivity.networkAdmin: consente agli amministratori di rete di gestire hub e spoke. | networkconnectivity.hubs.networkconnectivity.spokes. |
networkconnectivity.networkSpokeManager: consente di aggiungere e gestire gli spoke in un hub. Da utilizzare nel VPC condiviso in cui il progetto host è proprietario dell'hub, ma altri amministratori di altri progetti possono aggiungere spoke per i relativi allegati all'hub. | networkconnectivity.spokes.** |
networkconnectivity.networkUsernetworkconnectivity.networkViewer: consente agli utenti di rete di visualizzare diversi attributi di hub e spoke. | networkconnectivity.hubs.getnetworkconnectivity.hubs.listnetworkconnectivity.spokes.getnetworkconnectivity.spokes.listnetworkconnectivity.spokes.aggregatedList |
2. Configurare l'ambiente di rete
Panoramica
In questa sezione, eseguiremo il deployment delle reti VPC e delle regole firewall in un unico progetto. Il diagramma logico illustra l'ambiente di rete che verrà configurato in questo passaggio.
Per dimostrare il supporto degli spoke tra progetti, in un passaggio successivo implementeremo un VPC e regole firewall in un progetto diverso.
Crea i VPC e le subnet
La rete VPC contiene le subnet in cui installerai la VM GCE per la convalida del percorso dei dati
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
Intervalli di subnet supportati da VPC
NCC supporta tutti gli intervalli di subnet IPv4 validi, ad eccezione degli indirizzi IP pubblici utilizzati privatamente. In questo passaggio, crea intervalli IP validi in VPC4 che verranno importati nella tabella di routing 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
Crea intervalli di subnet sovrapposti
NCC non importerà intervalli IP sovrapposti nella tabella di route hub. Gli utenti aggireranno questa limitazione in un passaggio successivo. Per ora, crea due intervalli IP sovrapposti per VPC2 e 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
Configura le regole firewall VPC
Configura le regole firewall su ogni VPC per consentire
- SSH
- IAP interno
- Intervallo 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
Configura la VM GCE in ogni VPC
Per installare i pacchetti su "vm1-vpc1-ncc", devi disporre di un accesso temporaneo a internet.
Crea quattro macchine virtuali, a ognuna delle quali verrà assegnato uno dei VPC creati in precedenza
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
Panoramica
In questa sezione configureremo un hub NCC utilizzando i comandi gcloud. L'hub NCC fungerà da control plane responsabile della creazione della configurazione di routing tra ogni spoke VPC.
Abilita i servizi API
Abilita l'API Network Connectivity nel caso in cui non sia ancora abilitata:
gcloud services enable networkconnectivity.googleapis.com
Crea hub NCC
Crea un hub NCC utilizzando il comando gcloud
gcloud network-connectivity hubs create ncc-hub
Output di esempio
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]
Descrivi l'hub NCC appena creato. Prendi nota del nome e del percorso associato.
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'
L'hub NCC ha introdotto una tabella di routing che definisce il control plane per la creazione della connettività dei dati. Trovare il nome della tabella di routing dell'hub NCC
gcloud network-connectivity hubs route-tables list --hub=ncc-hub
NAME: default
HUB: ncc-hub
DESCRIPTION:
Trova l'URI della tabella di routing predefinita di 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'
Elenca i contenuti della tabella di routing predefinita dell'hub NCC. Nota*: la tabella delle route dell'hub NCC sarà vuota finché gli spoke non saranno
gcloud network-connectivity hubs route-tables routes list --hub=ncc-hub --route_table=default
La tabella delle route dell'hub NCC deve essere vuota.
4. NCC con spoke VPC
Panoramica
In questa sezione configurerai tre VPC come spoke NCC utilizzando i comandi gcloud.
Configura VPC come spoke NCC
Configura i seguenti VPC come spoke NCC in questo ordine
- VPC4
- VPC1
- VPC2
- VPC3
Configura VPC4 come spoke NCC e assegnalo all'hub NCC creato in precedenza. Le chiamate API NCC richiedono la specifica di una località. Il flag "–global" semplifica la sintassi di gcloud consentendo all'utente di evitare di specificare un percorso URI completo durante la configurazione di un nuovo spoke NCC.
gcloud network-connectivity spokes linked-vpc-network create vpc4-spoke4 \
--hub=ncc-hub \
--vpc-network=vpc4-ncc \
--global
Configura VPC1 come spoke NCC.
Gli amministratori possono escludere le route di subnet dall'esportazione da uno spoke VPC nella tabella di route dell'hub NCC. In questa parte del codelab, crea una regola di esclusione dell'esportazione basata su un prefisso di riepilogo per impedire l'esportazione della subnet di VPC1 nella tabella di routing dell'hub NCC.
Utilizza questo comando gcloud per elencare tutte le subnet appartenenti a VPC1.
gcloud config set accessibility/screen_reader false
gcloud compute networks subnets list --network=vpc1-ncc
Prendi nota della coppia di subnet /25 create in precedenza nella sezione di configurazione.
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
Configura VPC1 come spoke NCC ed escludi la coppia di subnet /25 dall'importazione nella tabella di routing hub utilizzando la parola chiave "export-exclude-ranges" per filtrare la route di riepilogo /24 da questo intervallo specifico.
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
Nota*: gli utenti possono filtrare fino a 16 intervalli IP univoci per ogni spoke NCC.
Elenca i contenuti della tabella di routing predefinita dell'hub NCC. Che cosa è successo alla coppia di subnet /25 nella tabella di routing dell'hub NCC?
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
Configura VPC2 come spoke NCC
gcloud network-connectivity spokes linked-vpc-network create vpc2-spoke2 \
--hub=ncc-hub \
--vpc-network=vpc2-ncc \
--global
Configura VPC3 come spoke NCC e assegnalo all'hub NCC creato in precedenza.
gcloud network-connectivity spokes linked-vpc-network create vpc3-spoke3 \
--hub=ncc-hub \
--vpc-network=vpc3-ncc \
--global
Che cosa è successo?
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)
L'hub NCC ha rilevato un intervallo IP sovrapposto a VPC2. Ricorda che VPC2 e VPC3 sono stati configurati con la stessa subnet IP 10.3.3.0/24.
Filtrare intervalli IP sovrapposti con Escludi esportazione
Utilizza il comando gcloud per aggiornare lo spoke VPC2 in modo da escludere l'intervallo IP sovrapposto.
gcloud network-connectivity spokes linked-vpc-network update vpc2-spoke2 \
--hub=ncc-hub \
--vpc-network=vpc2-ncc \
--exclude-export-ranges=10.3.3.0/24 \
--global
Utilizza il comando gcloud per aggiornare lo spoke NCC per VPC3 in modo da escludere l'intervallo di subnet sovrapposto.
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
Elenca i contenuti della tabella di routing predefinita dell'hub NCC ed esamina l'output.
gcloud network-connectivity hubs route-tables routes list --hub=ncc-hub --route_table=default
Gli intervalli IP sovrapposti di VPC2 e VPC3 sono esclusi. La tabella di routing dell'hub NCC supporta tutti i tipi di intervalli IPv4 validi, ad eccezione degli indirizzi IP pubblici utilizzati privatamente (PUPI).
5. NCC con spoke tra progetti
Panoramica
Finora hai configurato gli spoke NCC che appartengono allo stesso progetto dell'hub. In questa sezione configurerai VPC come spoke NCC da un progetto separato dall'hub NCC utilizzando i comandi gCloud.
Ciò consente ai proprietari dei progetti che gestiscono le proprie reti VPC di partecipare alla connettività di rete con l'hub NCC.
Cross Project: Google Cloud Console e Cloud Shell
Per interagire con GCP, utilizzeremo sia la console Google Cloud che Cloud Shell durante questo lab.
Spoke cross-project Google Cloud Console
Puoi accedere alla console Cloud all'indirizzo https://console.cloud.google.com.
Configura i seguenti elementi in Google Cloud per semplificare la configurazione di Network Connectivity Center:
Nella console Google Cloud, nella pagina di selezione del progetto, seleziona o crea un progetto Google Cloud.
Avvia Cloud Shell. Questo Codelab utilizza le variabili $per facilitare l'implementazione della configurazione gcloud in 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
Ruoli IAM
NCC richiede ruoli IAM per accedere ad API specifiche. Assicurati di configurare l'utente con i ruoli IAM NCC in base alle esigenze.
Come minimo, all'amministratore spoke cross-project deve essere concesso il ruolo IAM "networkconnectivity.networkSpokeManager. "
La tabella seguente elenca il ruolo IAM richiesto per l'amministratore di hub e spoke NCC come riferimento.
Ruolo/Descrizione | Autorizzazioni |
networkconnectivity.networkAdmin: consente agli amministratori di rete di gestire hub e spoke. | networkconnectivity.hubs.networkconnectivity.spokes. |
networkconnectivity.networkSpokeManager: consente di aggiungere e gestire gli spoke in un hub. Da utilizzare nel VPC condiviso in cui il progetto host è proprietario dell'hub, ma altri amministratori di altri progetti possono aggiungere spoke per i relativi allegati all'hub. | networkconnectivity.spokes.** |
networkconnectivity.networkUsernetworkconnectivity.networkViewer: consente agli utenti di rete di visualizzare diversi attributi di hub e spoke. | networkconnectivity.hubs.getnetworkconnectivity.hubs.listnetworkconnectivity.spokes.getnetworkconnectivity.spokes.listnetworkconnectivity.spokes.aggregatedList |
Crea i VPC e le subnet nel progetto cross-project
La rete VPC contiene le subnet in cui installerai la VM GCE per la convalida del percorso dei dati
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 progetto hub NCC
Utilizza questo comando gcloud per trovare l'URI dell'hub NCC. Nel passaggio successivo, ti servirà il percorso URI per configurare lo spoke NCC cross-project.
gcloud network-connectivity hubs describe ncc-hub
VPC spoke tra progetti
Accedi all'altro progetto in cui il VPC NON fa parte del progetto hub NCC. In Cloud Shell, utilizza questo comando per configurare un VPC come spoke NCC.
- HUB_URI deve essere l'URI di un hub in un progetto diverso.
- VPC_URI deve trovarsi nello stesso progetto dello spoke
- VPC-network specifica che il VPC in questo progetto cross-project si unirà all'hub NCC in un altro progetto
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'
Qual è lo stato dello spoke NCC tra progetti? Perché?
6. Rifiutare o accettare lo spoke tra progetti
Panoramica
Gli amministratori dell'hub NCC devono accettare esplicitamente uno spoke tra progetti per unirsi all'hub. In questo modo, i proprietari del progetto non possono collegare spoke NCC non autorizzati alla tabella di routing globale NCC. Una volta accettato o rifiutato, un spoke può essere rifiutato o accettato tutte le volte che si desidera eseguendo i comandi riportati sopra.
Torna al progetto in cui si trova l'hub NCC accedendo a Cloud Shell.
Identificare gli spoke tra progetti da esaminare
gcloud network-connectivity hubs list-spokes ncc-hub \
--filter="reason:PENDING_REVIEW"
Accettare uno spoke
gcloud network-connectivity hubs accept-spoke ncc-hub --spoke=xproj-spoke
(Facoltativo) Rifiutare un spoke
gcloud network-connectivity spokes reject-spoke ncc-hub --spoke=xproj-spoke
--details="some reason to reject"
Elenco dei raggi attivi sul mozzo
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
Elenca le route di subnet sull'hub
Dall'output, riesci a vedere le route di subnet dallo spoke VPC incrociato?
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
Aggiorna lo spoke VPC tra progetti con il filtro Includi esportazione
Accedi al progetto in cui il VPC NON fa parte del progetto hub NCC. In Cloud Shell, utilizza questo comando per configurare un VPC come spoke NCC.
- HUB_URI deve essere l'URI di un hub in un progetto diverso.
- VPC_URI deve trovarsi nello stesso progetto dello spoke
- VPC-network specifica che il VPC in questo progetto cross-project si unirà all'hub NCC in un altro progetto
- Importa solo l'intervallo di subnet 10.100.2.0/24 nella tabella di route dell'hub NCC
- Prendi nota del valore "ETAG" dell'output. Questo valore viene generato da NCC e devi fornirlo all'amministratore dell'hub NCC. L'amministratore dell'hub NCC dovrà fare riferimento a questo valore quando accetta la richiesta dello spoke cross-project di unirsi all'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'
Identificare gli spoke tra progetti aggiornati da esaminare
Accedi al progetto che ospita l'hub NCC. In Cloud Shell, utilizza questo comando per controllare lo stato dell'aggiornamento dello spoke VPC tra progetti.
- Che cos'è il valore ETAG? Questo valore deve corrispondere all'output dell'aggiornamento dello spoke VPC.
gcloud network-connectivity hubs list-spokes ncc-hub \
--filter="reasons:UPDATE_PENDING_REVIEW" \
--format=yaml
Accettare le modifiche aggiornate dallo spoke cross-project
Utilizza il comando per accettare la richiesta dello spoke cross-project di partecipare all'hub 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}
(Facoltativo) Rifiuta le modifiche aggiornate dal progetto secondario cross-project
Utilizza il comando per rifiutare la richiesta dello spoke cross-project di unirsi all'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}
Verifica che lo spoke tra progetti sia stato aggiunto all'hub NCC
gcloud network-connectivity hubs list-spokes ncc-hub \ --filter="name:xproj-spoke"
7. Private NAT tra VPC
Panoramica
In questa sezione configurerai Private NAT per intervalli di subnet sovrapposti tra due VPC. Tieni presente che la NAT privata tra VPC richiede NCC.
Nella sezione precedente, VPC2 e VPC3 sono configurati con un intervallo di subnet sovrapposto "10.3.3.0/24". Entrambi i VPC sono configurati come spoke NCC per escludere la subnet sovrapposta dall'inserimento nella tabella di routing dell'hub NCC, il che significa che non esiste un percorso dati di livello 3 per raggiungere gli host che risiedono in quella subnet.
Utilizza questi comandi nel progetto hub NCC per trovare gli intervalli di subnet sovrapposti.
gcloud compute networks subnets list --network vpc2-ncc
gcloud compute networks subnets list --network vpc3-ncc
Su vpc2-ncc, qual è il nome della subnet che contiene l'intervallo IP sovrapposto?
*Annota e salva il nome della subnet da qualche parte. Configurerai il NAT di origine per questo intervallo.
Configura Private NAT
Dedica un intervallo di subnet instradabile al traffico NAT di origine dalla subnet sovrapposta di VPC2. Configurando un intervallo di subnet non sovrapposto utilizzando il 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
Crea un router cloud dedicato per eseguire il NAT privato
gcloud compute routers create private-nat-cr \
--network vpc2-ncc \
--region us-central1
Configura il router Cloud per eseguire la NAT di origine dell'intervallo sovrapposto 10.3.3.0/24 da vpc2-ncc. Nella configurazione di esempio riportata di seguito, "overlapping-vpc3" è il nome della subnet sovrapposta. La parola chiave "ALL" specifica che tutti gli intervalli IP nella subnet verranno sottoposti a NAT di origine.
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
I passaggi precedenti hanno creato un pool di intervalli IP NAT e la subnet specifica che verrà convertita. In questo passaggio, crea la regola NAT "1" che traduce i pacchetti di rete corrispondenti al traffico proveniente dall'intervallo di subnet sovrapposto se la rete di destinazione segue un percorso dalla tabella di routing dell'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
Verifica del percorso dei dati per Private NAT
gcloud beta compute routers nats describe ncc2-nat --router=private-nat-cr
Output di esempio
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
Facoltativamente,
- Passa alla console web
- vai a "Servizi di rete > Cloud NAT > ncc2-nat"
Verifica che l'allocazione dinamica delle porte sia abilitata per impostazione predefinita.
Successivamente, verificherai il percorso dei dati che utilizza il percorso NAT privato configurato per VPC2.
Apri una sessione SSH su "vm1-vpc1-ncc" e utilizza il comando tcpdump riportato di seguito per acquisire i pacchetti provenienti dall'intervallo del pool NAT "10.10.10.0/29".
vm1-vpc1-ncc
sudo tcpdump -i any net 10.10.10.0/29 -n
Al momento della stesura di questo codelab, NAT privato non supporta i pacchetti ICMP. Sessione SSH a "pNat-vm-vpc2" e utilizza il comando curl come mostrato di seguito per connetterti a "vm1-vpc1-ncc" sulla porta TCP 80.
pnat-vm-vpc2
curl 10.1.1.2 -v
Esamina l'output di tcpdump su "vm1-vpc1-ncc." Qual è l'indirizzo IP di origine della sessione TCP al nostro server web su "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. Supporto NCC per le subnet IPv6
Network Connectivity Center supporta lo scambio di subnet IPv6 e di route dinamiche tra gli spoke VPC NCC e gli spoke ibridi. In questa sezione, configura NCC per supportare la modalità di scambio di route di subnet solo IPv6 e a doppio stack IPv4 e IPv6.
Crea un nuovo VPC per IPv6 che si unirà all'hub NCC come spoke VPC. Google Cloud assegnerà automaticamente tutti gli indirizzi ULA dall'intervallo fd20::/20.
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
Utilizza questo comando per configurare VPC5 come spoke NCC ed escludere la route di subnet IPv4 dall'esportazione nella tabella di routing dell'hub. Esporta la rete ULA IPv6 nella tabella di routing dell'hub 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
Abilita VPC1 e VPC4 per gli indirizzi locali univoci (ULA) IPv6 privati. Google Cloud assegnerà automaticamente tutti gli indirizzi ULA dall'intervallo fd20::/20.
gcloud compute networks update vpc-ncc4 \
--enable-ula-internal-ipv6
gcloud compute networks update vpc-ncc1 \
--enable-ula-internal-ipv6
Crea una subnet IPv6 nativa e una subnet IPv4_v6 a doppio stack in 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
Crea una subnet IPv6 nativa e una subnet IPv4_v6 a doppio stack in 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
Su VPC1, crea una regola firewall VPC IPv6 per consentire il traffico proveniente dall'intervallo ULA IPv6.
gcloud compute firewall-rules create allow-icmpv6-ula-ncc1 \
--network=vpc-ncc1 \
--action=allow \
--direction=ingress \
--rules=all \
--source-ranges=fd20::/20
Su VPC4, crea una regola firewall VPC IPv6 per consentire il traffico proveniente dall'intervallo ULA IPv6.
gcloud compute firewall-rules create allow-icmpv6-ula-ncc4 \
--network=vpc-ncc4 \
--action=allow \
--direction=ingress \
--rules=all \
--source-ranges=fd20::/20
Crea tre istanze GCE IPv6 per verificare la connettività del percorso dei dati nella sezione successiva. Nota: "vpc1-dualstack-vm" verrà utilizzato come host bastion per ottenere l'accesso out-of-band alle VM GCE IPv6 native.
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
Controlla l'hub NCC per le subnet IPv6
Controlla la tabella di routing dell'hub NCC per le subnet ULA IPv6.
gcloud network-connectivity hubs route-tables routes list --route_table=default \
--hub=ncc-hub \
--filter="IP_CIDR_RANGE:fd20"
Tieni presente che l'output del comando precedente non elenca le subnet IPv6. Per impostazione predefinita, le subnet IPv6 degli spoke VPC NON sono incluse per l'esportazione nella tabella di route dell'hub NCC.
Listed 0 items.
Utilizza i comandi gcloud riportati di seguito per aggiornare gli spoke VPC1 e VPC4 in modo da esportare le subnet IPv6 nella tabella di routing dell'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
gcloud network-connectivity spokes linked-vpc-network update vpc5-spoke5 \
--global \
--include-export-ranges=ALL_IPV6_RANGES
Controlla di nuovo la tabella di routing dell'hub NCC per le subnet ULA IPv6.
gcloud network-connectivity hubs route-tables routes list --route_table=default \
--hub=ncc-hub \
--filter="IP_CIDR_RANGE:fd20"
Output di esempio
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
Filtra le subnet IPv6 con gli spoke VPC NCC
Controlla la tabella delle route dell'hub NCC per le route di subnet IPv6 esterne
gcloud network-connectivity hubs route-tables routes list --route_table=default \
--hub=ncc-hub \
--filter="NEXT_HOP:vpc-ncc5"
Output di esempio: la tabella di routing dell'hub NCC ha appreso l'intervallo IPv6 esterno.
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
Utilizza il comando gcloud riportato di seguito per aggiornare gli spoke VPC5 in modo da escludere le due subnet IPv6 interne specifiche e la subnet IPv6 esterna dall'inserimento nella tabella di routing dell'hub NCC.
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
Utilizza il comando gcloud per verificare i filtri di esportazione dello spoke 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
Controlla la tabella delle route dell'hub NCC per le route di subnet IPv6 esterne
gcloud network-connectivity hubs route-tables routes list --route_table=default \
--hub=ncc-hub \
--filter="NEXT_HOP:vpc-ncc5"
Output di esempio: la tabella di routing dell'hub NCC ha appreso l'intervallo IPv6 esterno.
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. Verificare la connettività del percorso dei dati
Connettività del percorso dati IPv4
Fai riferimento al diagramma e verifica il percorso dei dati IPv4 tra ogni macchina virtuale.
Accedi tramite SSH a "vm1-vpc1-ncc" e avvia TCP dump per tracciare i pacchetti ICMP da "vm2-vpc2-ncc". Ti ricordiamo che questa VM si trova su VPC2.
vm1-vpc1-ncc
sudo tcpdump -i any icmp -v -e -n
Stabilisci una sessione SSH con "vm1-vpc2-ncc" ed esegui il ping dell'indirizzo IP di "vm1-vpc1-ncc".
vm1-vpc2-ncc
ping 10.1.1.2
Stabilisci una connessione SSH a "vm1-vpc2-ncc" e invia un ping all'indirizzo IP di "vm1-vpc4-ncc".
vm1-vpc2-ncc
ping 240.0.0.2
Connettività del percorso dati IPv6
Fai riferimento al diagramma e verifica il percorso dei dati IP64 tra ogni macchina virtuale.
Utilizza il comando gcloud per elencare l'indirizzo IP di ogni istanza abilitata per IPv6.
gcloud compute instances list --filter="INTERNAL_IP:fd20"
Esempio di 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
Stabilisci una sessione SSH con "vpc1-dualstack-vm" e "ping" l'indirizzo IPv6 di "vpc1-ipv6-vm" per convalidare la connettività IPv6 all'interno di un VPC globale
ping fd20:90:6768:1000:0:1::
Stabilisci una sessione SSH con "vpc1-dualstack-vm" e "ping" l'indirizzo IPv6 di "vpc4-ipv6-vm" per convalidare la connettività IPv6 tramite una connessione NCC.
ping fd20:c95:95d2:1:0:1::
10. Esegui la pulizia
Accedi a Cloud Shell ed elimina le istanze VM nelle reti hub e filiale.
Eliminare le configurazioni NAT VPC privato
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
Eliminare gli 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
Rifiuta spoke cross-project
Rifiuta lo spoke VPC tra progetti dall'hub NCC.
gcloud network-connectivity spokes reject projects/$xprojname/locations/global/spokes/xproj-spoke \--details="cleanup" \
--global
Elimina hub NCC
gcloud network-connectivity hubs delete ncc-hub --quiet
Elimina regole 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
Elimina istanze 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
Elimina 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
gcloud compute networks subnets delete vpc5-ext-ipv6 --region=us-central1 --quiet
Elimina VPC
gcloud compute networks delete vpc1-ncc vpc2-ncc vpc3-ncc vpc4-ncc, vpc5-ncc --quiet
11. Complimenti!
Hai completato il lab Network Connectivity Center.
Argomenti trattati
- Configurazione della rete di peering VPC full mesh con l'hub NCC
- Filtro di esclusione spoke NCC
- Supporto di spoke tra progetti
- Private NAT tra VPC
Passaggi successivi
©Google, LLC o le sue società consociate. Tutti i diritti riservati. Distribuzione vietata.