Lab: VPC NCC come spoke

1. Introduzione

Panoramica

In questo lab, gli utenti esploreranno come si può utilizzare Network Connectivity Center(NCC) per stabilire la connettività tra VPC su larga scala attraverso il supporto per spoke VPC. Quando gli utenti definiscono un VPC come spoke VPC, ciò consente loro di connetterlo a più reti VPC tramite l'hub NCC. La configurazione di NCC con spoke VPC riduce la complessità operativa della gestione della connettività tra VPC tramite peering VPC, anziché utilizzare un modello di gestione della connettività centralizzato.

Ricorda che il Network Connectivity Center (NCC) è un modello di piano di controllo hub e spoke per la gestione della connettività di rete in Google Cloud. La risorsa hub fornisce un modello centralizzato di gestione della connettività per interconnettere gli spoke.

Cosa creerai

In questo codelab, creerai una topologia hub logico e spoke con l'hub NCC che implementerà un'infrastruttura di connettività VPC completamente mesh in tre VPC distinti.

Cosa imparerai a fare

  • Connettività VPC full mesh con NCC
  • Private NAT nel VPC

Che cosa ti serve

  • Conoscenza della rete VPC di Google Cloud
  • Conoscenza del router Cloud e del routing BGP
  • Due progetti Google Cloud separati
  • Questo codelab richiede 5 VPC. Uno di questi VPC deve risiedere in un progetto separato dall'hub NCC
  • Controlla Quota:reti e, se necessario, richiedi reti aggiuntive. Ecco lo screenshot di seguito:

6d1b99c6da87fd84.png

Obiettivi

  • Configura l'ambiente Google Cloud
  • Configura Network Connectivity Center con VPC come spoke
  • Convalida percorso dati
  • Esplora le funzionalità di manutenzione di NCC
  • Esegui la pulizia delle risorse utilizzate

Prima di iniziare

Console Google Cloud e Cloud Shell

Per interagire con Google Cloud, utilizzeremo sia la console Google Cloud sia Cloud Shell durante questo lab.

Progetto hub NCC Console Google Cloud

La console Cloud è disponibile all'indirizzo https://console.cloud.google.com.

Configura i seguenti elementi in Google Cloud per semplificare la configurazione di Network Connectivity Center:

Nella pagina del selettore dei progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

Avvia Cloud Shell. Questo codelab utilizza le variabili $per facilitare l'implementazione della configurazione di 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 necessità.

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 gli altri amministratori di altri progetti possono aggiungere spoke per i loro collegamenti 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à impostato in questo passaggio.

Per dimostrare il supporto dello spoke tra progetti, in un passaggio successivo eseguiremo il deployment di un VPC e delle regole firewall in un progetto diverso.

245f1002db33ca98.png

Crea i VPC e le subnet

La rete VPC contiene subnet in cui installerai la VM GCE per la convalida del percorso 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 route 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 aggiranno 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 del 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 una VM GCE in ogni VPC

Avrai bisogno di un accesso temporaneo a internet per installare i pacchetti su "vm1-vpc1-ncc".

Crea quattro macchine virtuali, ciascuna delle quali verrà assegnata a 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 piano di controllo responsabile della creazione della configurazione del routing tra ogni spoke VPC.

8acc7651f52e251e.png

Abilita servizi API

Abilita l'API Network Connect (Reti) nel caso in cui non sia ancora abilitata:

gcloud services enable networkconnectivity.googleapis.com

Crea hub NCC

Crea un hub NCC con 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 piano di controllo per la creazione della connettività dati. Trovare il nome della tabella di routing di NCC Hub

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

Trova l'URI della tabella di route predefinita 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 di NCC Hub sarà vuota finché non verranno visualizzati gli spoke

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.

a70bc80037927bb0.png

Configura i 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. Per le chiamate API spoke NCC è necessario specificare 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 l'esportazione di route di subnet da uno spoke VPC alla tabella di route dell'hub NCC. In questa parte del codelab, crea una regola di esclusione di esportazione basata su un prefisso di riepilogo per impedire che la subnet di VPC1 venga esportata nella tabella di route 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

Osserva la 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 l'importazione della coppia di subnet /25 nella tabella di routing dell'hub utilizzando il comando "export-excluded-ranges" parola chiave per filtrare il percorso riepilogativo /24 da quell'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 spoke NCC.

Elenca i contenuti della tabella di routing predefinita dell'hub NCC. Che cosa è successo alla coppia di subnet /25 sulla 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 una sovrapposizione dell'intervallo IP con il VPC2. Ricorda che VPC2 e VPC3 sono stati entrambi configurati con la stessa subnet IP 10.3.3.0/24.

Filtrare gli intervalli IP sovrapposti con l'opzione Escludi esportazione

Al momento della scrittura di questo codelab, si tratta di un problema noto in cui gli utenti devono eliminare e ricreare gli spoke NCC per apportare modifiche alla configurazione del filtro di esportazione.

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

Nota: l'eliminazione di uno spoke VPC associato a un VPC specifico richiede una scadenza di un periodo di attesa di 10 minuti per ricreare un nuovo spoke che fa riferimento allo stesso VPC.

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

Configura VPC3 come spoke NCC e assegnalo all'hub NCC creato in precedenza. Questo tentativo di aggiungere il VPC3 come spoke a NCC dovrebbe riuscire.

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 da VPC2 e VPC3 sono esclusi. La tabella di routing dell'hub NCC supporta tutti i tipi di intervalli validi 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 il VPC come spoke NCC da un progetto separato diverso dall'hub NCC utilizzando i comandi gcloud.

In questo modo i proprietari del progetto che gestiscono i propri VPC possono partecipare alla connettività di rete con l'hub NCC.

e1190fa898c5097d.png

Cross-project: console Google Cloud e Cloud Shell

Per interagire con Google Cloud, utilizzeremo sia la console Google Cloud sia Cloud Shell durante questo lab.

Console Google Cloud tramite spoke tra progetti

La console Cloud è disponibile all'indirizzo https://console.cloud.google.com.

Configura i seguenti elementi in Google Cloud per semplificare la configurazione di Network Connectivity Center:

Nella pagina del selettore dei progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

Avvia Cloud Shell. Questo codelab utilizza le variabili $per facilitare l'implementazione della configurazione di 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 necessità.

Come minimo, all'amministratore dello spoke tra progetti deve essere concesso il ruolo IAM: "networkconnectivity.networkSpokeManager. "

La tabella seguente elenca il ruolo IAM richiesto per l'amministratore di hub NCC e Spoke 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 gli altri amministratori di altri progetti possono aggiungere spoke per i loro collegamenti 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 in più progetti

La rete VPC contiene subnet in cui installerai la VM GCE per la convalida del percorso 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

URI progetto hub NCC

Utilizza questo comando gcloud per trovare l'URI dell'hub NCC. Avrai bisogno del percorso dell'URI nel passaggio successivo per configurare lo spoke NCC tra progetti.

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. Su Cloudshell, utilizza questo comando per configurare un VPC come spoke NCC.

  • HUB_URI deve essere l'URI di un hub in un altro progetto.
  • VPC_URI deve essere nello stesso progetto dello spoke
  • La rete VPC specifica che il VPC in questo tra progetti verrà unito 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. Rifiuta o accetta 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, lo 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.

Identifica gli spoke tra progetti da esaminare

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

Accettazione di uno spoke

gcloud network-connectivity spokes accept xproj-spoke --global

(Facoltativo) Rifiuto di uno spoke

gcloud network-connectivity spokes reject xproj-spoke \
--global \
--details="some reason to reject"

Elenco degli spoke attivi sull'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

Elenco di route di subnet nell'hub

Dall'output, puoi vedere le route di subnet dallo spoke VPC tra più?

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.0.0/16  ACTIVE  VPC_PRIMARY_SUBNET  xprj-vpc  ncc-hub  default

7. NAT privato tra VPC

Panoramica

In questa sezione configurerai il NAT privato per la sovrapposizione di intervalli di subnet tra due VPC. Tieni presente che il NAT privato tra i 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 route dell'hub NCC, il che significa che non esiste un percorso dati di livello 3 per raggiungere gli host che risiedono su quella subnet.

Utilizza questi comandi nel progetto hub NCC per trovare gli intervalli di subnet che si sovrappongono.

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 che si sovrappone?

*Annota e salva da qualche parte il nome della subnet. Configurerai NAT di origine per questo intervallo.

Configura Private NAT

Dedica un intervallo di subnet instradabili alla sorgente del traffico NAT dalla subnet sovrapposta del VPC2. Configurando un intervallo di subnet non sovrapposto utilizzando "–purpose=PRIVATE_NAT" flag.

gcloud 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 Private NAT

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

Configurare il router Cloud per il origine NAT nell'intervallo sovrapposto di 10.3.3.0/24 da vpc2-ncc. Nella configurazione di esempio riportata di seguito, "overlay-vpc3" è il nome della subnet sovrapposta. La sezione "ALL" parola chiave specifica che tutti gli intervalli IP nella subnet saranno NAT di origine.

gcloud 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à tradotta. 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 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 il Private NAT

gcloud 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/projects/yueri-3p-dev/regions/us-central1/subnetworks/ncc2-spoke-nat
  match: nexthop.hub == "//networkconnectivity.googleapis.com/projects/yueri-3p-dev/locations/global/hubs/ncc-hub"
  ruleNumber: 1
sourceSubnetworkIpRangesToNat: LIST_OF_SUBNETWORKS
subnetworks:
- name: https://www.googleapis.com/compute/projects/yueri-3p-dev/regions/us-central1/subnetworks/overlapping-vpc3
  sourceIpRangesToNat:
  - ALL_IP_RANGES
type: PRIVATE

Se vuoi,

  • 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.

114050bb65e0c4e2.png

Successivamente, verificherai il percorso dei dati che utilizza il percorso NAT privato configurato per VPC2.

5035b181aeaa30a8.png

Apri una sessione SSH per "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 scrittura di questo codelab, il NAT privato non supporta i pacchetti ICMP. Sessione SSH per "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 che ha originato la sessione TCP per il 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. Verifica la connettività del percorso dati

Fai riferimento al diagramma per verificare il percorso dei dati tra ogni macchina virtuale.

424df0ebe4510ebb.png

Accedi tramite SSH a "vm1-vpc1-ncc" e avvia il dump TCP 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 per "vm1-vpc2-ncc" e "ping" l'indirizzo IP di "vm1-vpc1-ncc".

vm1-vpc2-ncc

ping 10.1.1.2

Stabilisci una connessione SSH a "vm1-vpc2-ncc" e "ping" l'indirizzo IP di "vm1-vpc4-ncc".

vm1-vpc2-ncc

ping 240.0.0.2

9. Esegui la pulizia

Accedi a Cloud Shell ed elimina le istanze VM nelle reti dell'hub e dei siti delle diramazioni

Elimina configurazioni Nat VPC privato

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

gcloud 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

Elimina 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 tra progetti

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

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

Elimina le 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

Elimina VPC

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

10. Complimenti!

Hai completato il lab del Network Connectivity Center.

Argomenti trattati

  • Rete di peering VPC full mesh configurata con hub NCC
  • Filtro di esclusione spoke NCC
  • Assistenza spoke tra progetti
  • Private NAT tra VPC

Passaggi successivi

©Google, LLC o le sue società consociate. Tutti i diritti riservati. Distribuzione vietata.