CodeLab: scambio di route dinamiche con NCC

1. Introduzione

Panoramica

In questo lab, gli utenti esploreranno come utilizzare Network Connectivity Center (NCC) per stabilire la connettività on-premise su larga scala tramite il supporto degli spoke VPC e lo scambio dinamico di route. Quando gli utenti definiscono un VPC come VPC spoke, possono connetterlo a più reti VPC tramite l'hub NCC. Per stabilire la connettività di rete con la rete on-premise di un utente, quest'ultimo può collegare la NIC virtuale dell'appliance router, i tunnel VPN ad alta affidabilità o i collegamenti VLAN Interconnect allo stesso hub NCC dei VPC spoke NCC.

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à la connettività ibrida tra la rete on-premise e un VPC del workload.

c06021c6aaa47682.png

Cosa imparerai a fare

  • Distinguere tra un VPC del workload e un VPC di routing
  • Integrazione NCC di spoke VPC e spoke ibrido

Che cosa ti serve

  • Conoscenza della rete VPC di GCP
  • Conoscenza del router Cloud e del routing BGP
  • Progetto Google Cloud
  • Controlla Quota:reti e richiedi reti aggiuntive, se necessario. Vedi lo screenshot di seguito:

6bc606cb34bce7e8.png

Obiettivi

  • Configura l'ambiente GCP
  • Configura Network Connectivity Center con VPC come spoke
  • Configura Network Connectivity Center con tunnel VPN ad alta disponibilità come spoke ibrido
  • Convalida del percorso dei dati
  • Esplorare le funzionalità di manutenzione di NCC
  • Libera spazio dalle risorse utilizzate

Prima di iniziare

console Google Cloud 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 di gcloud in Cloud Shell.

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

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 tre reti VPC e delle regole firewall in un unico progetto. Il diagramma logico illustra l'ambiente di rete che verrà configurato in questo passaggio. Ai fini di questo codelab, verrà utilizzato un VPC per simulare una rete on-premise.

6c8baa1bf0676379.png

Concetto fondamentale 1

Il VPC globale di Google Cloud fornisce la connettività del percorso dei dati tra più di 44 regioni GCP. Cloud Router, un servizio regionale, annuncia dinamicamente le subnet e propaga le route apprese nella regione in cui è configurato il router o in tutta la rete VPC. Ciò che determina la propagazione delle route a livello regionale o globale da parte del router cloud dipende dalla modalità di routing dinamico definita dall'utente: regionale o globale.

In questa sezione inizieremo configurando ogni VPC con la modalità di routing regionale. Per il resto di questo codelab:

  • "Routing VPC" identifica un VPC NON configurato come spoke VPC NCC.
  • "VPC del workload" identifica un VPC configurato come spoke NCC.

Crea il VPC del workload e una subnet

La rete VPC contiene subnet in cui installerai la VM GCE per la convalida del percorso dei dati

vpc_spoke_network_name="workload-vpc"
vpc_spoke_subnet_name="workload-subnet"
vpc_spoke_subnet_ip_range="10.0.1.0/24"
vpc_spoke_name="workload-vpc-spoke"
region="us-central1"
zone="us-central1-a"

gcloud compute networks create "${vpc_spoke_network_name}" \
--subnet-mode=custom 

gcloud compute networks subnets create "${vpc_spoke_subnet_name}" \
--network="${vpc_spoke_network_name}" \
--range="${vpc_spoke_subnet_ip_range}" \
--region="${region}"

Crea il VPC di routing e una subnet

NCC supporta tutti gli intervalli di subnet IPv4 validi, ad eccezione degli indirizzi IP pubblici utilizzati privatamente.

routing_vpc_network_name="routing-vpc"
routing_vpc_subnet_name="routing-vpc-subnet"
routing_vpc_subnet_range="10.0.2.0/24"

gcloud compute networks create "${routing_vpc_network_name}" \
--subnet-mode=custom

gcloud compute networks subnets create "${routing_vpc_subnet_name}" \
--region="${region}" \
--network="${routing_vpc_network_name}" \
--range="${routing_vpc_subnet_range}"

Crea il VPC on-prem e una subnet

NCC supporta tutti gli intervalli di subnet IPv4 validi, ad eccezione degli indirizzi IP pubblici utilizzati privatamente.

on_prem_network_name="on-prem-net-vpc"
on_prem_subnet_name="on-prem-subnet"
on_prem_subnet_range="10.0.3.0/24"

gcloud compute networks create "${on_prem_network_name}" \
--subnet-mode=custom

gcloud compute networks subnets create "${on_prem_subnet_name}" \
--region="${region}" \
--network="${on_prem_network_name}" \
--range="${on_prem_subnet_range}"

Configura le regole firewall VPC del workload

workload_vpc_firewall_name="workload-protocol-fw-vpc"
workload_port_firewall_name="workload-port-firewall-vpc"

gcloud compute firewall-rules create "${workload_vpc_firewall_name}" \
--network=${vpc_spoke_network_name} \
--allow="tcp,udp,icmp"

gcloud compute firewall-rules create "${workload_port_firewall_name}" \
--network=${vpc_spoke_network_name} \
--allow="tcp:22,tcp:3389,tcp:11180,icmp"

Configura le regole firewall VPC e VPC di routing

routing_vpc_fw_name="routing-vpc-protocol-fw"
routing_vpc_port_fw_name="routing-vpc--port-fw"

gcloud compute firewall-rules create "${routing_vpc_fw_name}" \
--network=${routing_vpc_network_name} \
--allow="tcp,udp,icmp"

gcloud compute firewall-rules create "${routing_vpc_port_fw_name}" \
--network=${routing_vpc_network_name} \
--allow="tcp:22,tcp:3389,tcp:11180,icmp"

Configura le regole firewall VPC e VPC on-premise

prem_protocol_fw_name="onprem-vpc-protocol-firewall"
prem_port_firewall_name="onprem-vpc-port-firewall-prem"

gcloud compute firewall-rules create "${prem_protocol_fw_name}" \
--network=${on_prem_network_name} \
--allow="tcp,udp,icmp"

gcloud compute firewall-rules create "${prem_port_firewall_name}" \
--network=${on_prem_network_name} \
--allow="tcp:22,tcp:3389,tcp:11180,icmp"

Configura la VM GCE in ogni VPC

Per installare i pacchetti su "vm1-vpc1-ncc", devi disporre di un accesso a internet temporaneo.

Crea tre macchine virtuali, a ognuna delle quali verrà assegnato uno dei VPC creati in precedenza

gcloud compute instances create vm1-vpc-workload \
--zone us-central1-a \
--subnet="${vpc_spoke_subnet_name}" \
--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-vpc-routing \
--zone us-central1-a \
--subnet="${routing_vpc_subnet_name}" \
--no-address 

gcloud compute instances create vm3-onprem \
--zone us-central1-a \
--subnet="${on_prem_subnet_name}" \
--no-address 

3. Configura la connettività ibrida

In questa sezione configureremo un tunnel VPN ad alta affidabilità per connettere le reti VPC on-premise e di routing.

ad64a1dee6dc74c9.png

Configura un router Cloud con BGP nel VPC di routing

routing_vpc_router_name="routing-vpc-cr"
routing_vpc_router_asn=64525

gcloud compute routers create "${routing_vpc_router_name}" \
--region="${region}" \
--network="${routing_vpc_network_name}" \
--asn="${routing_vpc_router_asn}"

Configura un router Cloud con BGP nel VPC on-premise

on_prem_router_name="on-prem-router"
on_prem_router_asn=64526

gcloud compute routers create "${on_prem_router_name}" \
--region="${region}" \
--network="${on_prem_network_name}" \
--asn="${on_prem_router_asn}"

Configura un gateway VPN nel VPC di routing

routing_vpn_gateway_name="routing-vpc-vpn-gateway"

gcloud compute vpn-gateways create "${routing_vpn_gateway_name}" \
--region="${region}" \
--network="${routing_vpc_network_name}"

Configura un gateway VPN nel VPC on-prem

on_prem_gateway_name="on-prem-vpn-gateway"

gcloud compute vpn-gateways create "${on_prem_gateway_name}" \
--region="${region}" \
--network="${on_prem_network_name}"

Configura un tunnel VPN nel VPC di routing e nel VPC on-premise

secret_key=$(openssl rand -base64 24)
routing_vpc_tunnel_name="routing-vpc-tunnel"
on_prem_tunnel_name="on-prem-tunnel"

gcloud compute vpn-tunnels create "${routing_vpc_tunnel_name}" \
--vpn-gateway="${routing_vpn_gateway_name}" \
--peer-gcp-gateway="${on_prem_gateway_name}" \
--router="${routing_vpc_router_name}" \
--region="${region}" \
--interface=0 \
--shared-secret="${secret_key}"

gcloud compute vpn-tunnels create "${on_prem_tunnel_name}" \
--vpn-gateway="${on_prem_gateway_name}" \
--peer-gcp-gateway="${routing_vpn_gateway_name}" \
--router="${on_prem_router_name}" \
--region="${region}" \
--interface=0 \
--shared-secret="${secret_key}"

Crea sessioni BGP per il peering BGP del VPC di routing e dei router cloud on-premise

interface_hub_name="if-hub-to-prem"
hub_router_ip="169.254.1.1"

gcloud compute routers add-interface "${routing_vpc_router_name}" \
--interface-name="${interface_hub_name}" \
--ip-address="${hub_router_ip}" \
--mask-length=30 \
--vpn-tunnel="${routing_vpc_tunnel_name}" \
--region="${region}"

bgp_hub_name="bgp-hub-to-prem"
prem_router_ip="169.254.1.2"
gcloud compute routers add-bgp-peer "${routing_vpc_router_name}" \
--peer-name="${bgp_hub_name}" \
--peer-ip-address="${prem_router_ip}" \
--interface="${interface_hub_name}" \
--peer-asn="${on_prem_router_asn}" \
--region="${region}"

interface_prem_name="if-prem-to-hub"
gcloud compute routers add-interface "${on_prem_router_name}" \
--interface-name="${interface_prem_name}" \
--ip-address="${prem_router_ip}" \
--mask-length=30 \
--vpn-tunnel="${on_prem_tunnel_name}" \
--region="${region}"

bgp_prem_name="bgp-prem-to-hub"
gcloud compute routers add-bgp-peer "${on_prem_router_name}" \
--peer-name="${bgp_prem_name}" \
--peer-ip-address="${hub_router_ip}" \
--interface="${interface_prem_name}" \
--peer-asn="${routing_vpc_router_asn}" \
--region="${region}"

Per impostazione predefinita, le subnet dell'hub NCC non vengono annunciate agli spoke ibridi. Nel passaggio successivo, configura il router Cloud per annunciare le route di subnet NCC alla rete on-premise.

gcloud compute routers update "${routing_vpc_router_name}" \
--advertisement-mode custom \
--set-advertisement-groups=all_subnets \
--set-advertisement-ranges="${vpc_spoke_subnet_ip_range}" \
--region="${region}"
gcloud compute routers update "${on_prem_router_name}" \
--advertisement-mode custom \
--set-advertisement-groups=all_subnets \
--region="${region}"

Aggiorna la configurazione del peering BGP del router cloud on-premise per annunciare i prefissi con un valore MED di "111". In una sezione successiva, osserveremo il comportamento di NCC con i valori BGP Med.

on_prem_router_name="on-prem-router"
bgp_prem_name="bgp-prem-to-hub"

gcloud compute routers update-bgp-peer "${on_prem_router_name}" \
--peer-name="${bgp_prem_name}" \
--advertised-route-priority="111" \
--region="${region}"

Controlla lo stato del tunnel VPC di routing

gcloud compute vpn-tunnels describe routing-vpc-tunnel \
--region=us-central1 \
--format='flattened(status,detailedStatus)'

Controlla lo stato del router Cloud VPC di routing

Utilizza il comando gcloud per elencare le route apprese BGP del router Cloud VPC di routing.

gcloud compute routers get-status routing-vpc-cr \
--region=us-central1

4. 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 VPC spoke.

715e7803d5c09569.png

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

hub_name="mesh-hub"
gcloud network-connectivity hubs create "${hub_name}"

Output di esempio

Create request issued for: [mesh-hub]
Waiting for operation [projects/ncc/locations/global/operations/operation-1719930559145-61c448a0426e4-2d18c8dd-7107edbe] to complete...done.               
Created hub [mesh-hub].

Descrivi l'hub NCC appena creato. Prendi nota del nome e del percorso associato.

gcloud network-connectivity hubs describe mesh-hub
createTime: '2024-07-02T14:29:19.260054897Z'
exportPsc: false
name: projects/ncc/locations/global/hubs/mesh-hub
policyMode: PRESET
presetTopology: MESH
routeTables:
- projects/ncc/locations/global/hubs/mesh-hub/routeTables/default
state: ACTIVE
uniqueId: 08f9ae88-f76f-432b-92b2-357a85fc83aa
updateTime: '2024-07-02T14:29:32.583206925Z'

L'hub NCC ha introdotto una tabella di routing che definisce il control plane per la creazione della connettività dei dati. Trova il nome della tabella di routing dell'hub NCC

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

Trova l'URI della tabella di routing predefinita di NCC.

gcloud network-connectivity hubs route-tables describe default --hub=mesh-hub
createTime: '2024-07-02T14:29:22.340190411Z'
name: projects/ncc/locations/global/hubs/mesh-hub/routeTables/default
state: ACTIVE
uid: fa2af78b-d416-41aa-b442-b8ebdf84f799

Elenca i contenuti della tabella di routing predefinita dell'hub NCC. Nota*: la tabella di routing dell'hub NCC sarà vuota finché non vengono definiti spoke ibridi o spoke VPC NCC.

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

La tabella di route dell'hub NCC deve essere vuota.

5. NCC con spoke ibridi e VPC

Panoramica

In questa sezione configurerai due spoke NCC utilizzando i comandi gcloud. Uno spoke sarà uno spoke VPC e il secondo sarà uno spoke ibrido (VPN).

647c835a25a9ceb4.png

Configura i VPC del workload come spoke NCC

Configura il VPC del workload come spoke NCC e assegnalo all'hub NCC creato in precedenza. Le chiamate API NCC richiedono la specifica di una località. Il flag "–global" consente all'utente di evitare di specificare un percorso URI completo durante la configurazione di un nuovo spoke NCC.

vpc_spoke_name="workload-vpc-spoke"
vpc_spoke_network_name="workload-vpc"

gcloud network-connectivity spokes linked-vpc-network create "${vpc_spoke_name}" \
--hub="${hub_name}" \
--vpc-network="${vpc_spoke_network_name}" \
--global
Create request issued for: [workload-vpc-spoke]
Waiting for operation [projects/ncc/locations/global/operations/operation-1719931097138-61c44aa15463f-90de22c7-40c10e6b] to complete...done.               
Created spoke [workload-vpc-spoke].
createTime: '2024-07-02T14:38:17.315200822Z'
group: projects/ncc/locations/global/hubs/mesh-hub/groups/default
hub: projects/ncc/locations/global/hubs/mesh-hub
linkedVpcNetwork:
  uri: https://www.googleapis.com/compute/v1/projects/ncc/global/networks/workload-vpc
name: projects/ncc/locations/global/spokes/workload-vpc-spoke
spokeType: VPC_NETWORK
state: ACTIVE
uniqueId: 33e50612-9b62-4ec7-be6c-962077fd47dc
updateTime: '2024-07-02T14:38:44.196850231Z'

Configura il tunnel VPN nel VPC di routing come spoke ibrido

Utilizza questo comando gcloud per configurare il tunnel VPN come spoke ibrido per partecipare a mesh-hub.

vpn_spoke_name="hybrid-spoke"
routing_vpc_tunnel_name="routing-vpc-tunnel"
region="us-central1"
hub_name="mesh-hub"

gcloud network-connectivity spokes linked-vpn-tunnels create "${vpn_spoke_name}" \
--region="${region}" \
--hub="${hub_name}" \
--vpn-tunnels="${routing_vpc_tunnel_name}"

Esempio di output

Create request issued for: [hybrid-spoke]
Waiting for operation [projects/ncc/locations/us-central1/operations/operation-1719932916561-61c45168774be-0a06ae03-88192175] to complete...done.          
Created spoke [hybrid-spoke].

Verificare la configurazione dello spoke di mesh-hub

Utilizza il comando gcloud per elencare i contenuti della tabella di routing predefinita dell'hub NCC.

gcloud network-connectivity hubs list-spokes mesh-hub 

Analizzare la tabella di routing predefinita dell'hub mesh

Utilizza il comando gcloud per elencare i contenuti della tabella di routing predefinita dell'hub NCC.

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

I prefissi appresi dal router cloud con valori MED BGP vengono propagati tra gli spoke NCC quando si utilizza lo scambio di route dinamico con gli spoke ibridi NCC.

Utilizza il comando gcloud per visualizzare il valore di priorità di "111."

gcloud network-connectivity hubs route-tables routes list \
--hub=mesh-hub \
--route_table=default \
--effective-location=us-central1 \
--filter=10.0.3.0/24

6. Verificare il percorso dei dati

In questo passaggio, convalideremo il percorso dei dati tra l'NCC ibrido e il VPC spoke. f266a4a762333161.png

Utilizza l'output di questi comandi gcloud per accedere alla VM on-premise.

gcloud compute instances list --filter="name=vm3-onprem"

Accedi all'istanza VM che si trova nella rete on-premise.

gcloud compute ssh vm3-onprem --zone=us-central1-a

Nel terminale di vm3-onprem, utilizza il comando curl per stabilire una sessione web con la VM ospitata in workload-vpc.

curl 10.0.1.2 -v
*   Trying 10.0.1.2:80...
* Connected to 10.0.1.2 (10.0.1.2) port 80 (#0)
> GET / HTTP/1.1
> Host: 10.0.1.2
> User-Agent: curl/7.74.0
> Accept: */*
> 
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Wed, 03 Jul 2024 15:41:34 GMT
< Server: Apache/2.4.59 (Debian)
< Last-Modified: Mon, 01 Jul 2024 20:36:16 GMT
< ETag: "1e-61c358c8272ba"
< Accept-Ranges: bytes
< Content-Length: 30
< Content-Type: text/html
< 

<h3>Web Server: www-vm1</h3>
* Connection #0 to host 10.0.1.2 left intact

7. Esegui la pulizia

Accedi a Cloud Shell ed elimina le risorse GCP.

Eliminare gli spoke NCC

gcloud network-connectivity spokes delete workload-vpc-spoke --global \
--quiet

gcloud network-connectivity spokes delete hybrid-spoke \
--quiet \
--region us-central1

Elimina hub NCC

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

Elimina regole firewall

gcloud compute firewall-rules delete onprem-vpc-port-firewall-prem onprem-vpc-protocol-firewall routing-vpc--port-fw routing-vpc-protocol-fw workload-port-firewall-vpc workload-protocol-fw-vpc --quiet

Elimina tunnel VPN ad alta disponibilità

gcloud compute vpn-tunnels delete on-prem-tunnel \
--region=us-central1 \
--quiet 

gcloud compute vpn-tunnels delete routing-vpc-tunnel \
--region=us-central1 \
--quiet 

Elimina VPN Gateway

gcloud compute vpn-gateways delete on-prem-vpn-gateway \
--region=us-central1 --quiet

gcloud compute vpn-gateways delete routing-vpc-vpn-gateway \
--region us-central1 --quiet

Elimina Router Cloud

gcloud compute routers delete routing-vpc-cr --region us-central1 --quiet

gcloud compute routers delete on-prem-router --region us-central1 --quiet

Elimina istanze GCE

gcloud compute instances delete vm1-vpc-workload \
--zone=us-central1-a \
--quiet


gcloud compute instances delete vm2-vpc-routing \
--zone=us-central1-a \
--quiet

gcloud compute instances delete vm3-onprem \
--zone=us-central1-a \
--quiet

Elimina subnet VPC

gcloud compute networks subnets delete workload-subnet --region us-central1 --quiet

gcloud compute networks subnets delete on-prem-subnet --region us-central1 --quiet

gcloud compute networks subnets delete routing-vpc-subnet --region us-central1 --quiet

Elimina VPC

gcloud compute networks delete on-prem-net-vpcworkload-vpc routing-vpc 
--quiet 

8. Complimenti!

Hai completato il lab Network Connectivity Center per lo scambio dinamico di route.

Argomenti trattati

  • Scambio di route dinamiche con Network Connectivity Center

Passaggi successivi

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