1. Introduzione
Panoramica
In questo lab, gli utenti scopriranno come Network Connectivity Center (NCC) può essere utilizzato per stabilire la connettività on-prem su larga scala tramite il supporto di spoke VPC e lo scambio di route dinamiche. Quando gli utenti definiscono un VPC come spoke VPC, possono connetterlo a più reti VPC tramite l'hub NCC. Per stabilire la connettività di rete con la rete on-premise di un utente, è possibile collegare NIC virtuali dell'appliance router, tunnel HA_VPN o collegamenti VLAN di interconnessione allo stesso hub NCC degli spoke VPC NCC.
La risorsa hub fornisce un modello di gestione della connettività centralizzata per interconnettere gli spoke.
Cosa creerai
In questo codelab, creerai una topologia hub e spoke logica con l'hub NCC che implementerà la connettività ibrida tra la rete on-premise e un VPC del workload.
Cosa imparerai a fare
- Distinguere tra una VPC per i carichi di lavoro e una VPC di routing
- Integrazione di spoke VPC e spoke ibrido con NCC
Che cosa ti serve
- Conoscenza della rete VPC Google Cloud
- Conoscenza del router Cloud e del routing BGP
- Progetto Google Cloud
- Controlla la quota:Networks e richiedi reti aggiuntive, se necessario, screenshot di seguito:
Obiettivi
- Configura l'ambiente Google Cloud
- Configurare Network Connectivity Center con la VPC come spoke
- Configurare Network Connectivity Center con tunnel VPN ad alta disponibilità come spoke ibrido
- Convalida percorso dati
- Esplorare le funzionalità di riparabilità del NCC
- Esegui la pulizia delle risorse utilizzate
Prima di iniziare
Google Cloud Console e Cloud Shell
Per interagire con Google Cloud, utilizzeremo sia la console Google Cloud che Cloud Shell durante questo lab.
NCC Hub Project 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 i ruoli IAM per accedere ad API specifiche. Assicurati di configurare l'utente con i ruoli IAM NCC come richiesto.
Ruolo/descrizione | Autorizzazioni |
networkconnectivity.networkAdmin: consente agli amministratori di rete di gestire gli hub e gli spoke. | networkconnectivity.hubs.networkconnectivity.spokes. |
networkconnectivity.networkSpokeManager: consente di aggiungere e gestire gli spoke in un hub. Da utilizzare in VPC condiviso in cui il progetto host è proprietario dell'hub, ma altri amministratori in altri progetti possono aggiungere spoke per i propri allegati all'hub. | networkconnectivity.spokes.** |
networkconnectivity.networkUsernetworkconnectivity.networkViewer: consente agli utenti della rete di visualizzare diversi attributi di hub e spoke. | networkconnectivity.hubs.getnetworkconnectivity.hubs.listnetworkconnectivity.spokes.getnetworkconnectivity.spokes.listnetworkconnectivity.spokes.aggregatedList |
2. Configura 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à utilizzata una VPC per simulare una rete on-premise.
Concetto chiave 1
La VPC globale di Google Cloud fornisce connettività del percorso dati tra più di 44 regioni Google Cloud. Cloud Router, un servizio regionale, pubblicizza dinamicamente le sottoreti e propaga le route apprese nella regione in cui è configurato il router o nell'intera rete VPC. Ciò che determina il router cloud a propagare le route a livello di regione o globale 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:
- "VPC di routing" identifica una VPC NON configurata come spoke VPC NCC.
- "VPC del carico di lavoro" identifica una VPC configurata come spoke NCC.
Crea il VPC e una subnet per il workload
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 la 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 del firewall VPC del tuo 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"
Configurare le regole firewall VPC e 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"
Configurare 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 temporaneo a internet.
Crea tre macchine virtuali, ognuna delle quali verrà assegnata a 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. Configurare la connettività ibrida
In questa sezione configureremo un tunnel VPN ad alta disponibilità per connettere le reti VPC on-prem e di routing.
Configura un router Cloud con BGP nella 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 nella 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 nella 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 nella 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 nella VPC di routing e nella VPC on-prem
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 peer 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 pubblicizzate agli spoke ibridi. Nel passaggio successivo, configura il router cloud in modo che annunci le route delle subnet NCC alla rete on-premise.
Annuncia le subnet dello spoke VPC al router cloud 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}"
Annuncia le subnet on-premise al router Cloud VPC di routing
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 in modo da annunciare i prefissi con un valore MED di "111". In una sezione successiva, osserveremo il comportamento del 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 BGP apprese 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 spoke VPC.
Abilita i servizi API
Se non è ancora abilitata, abilita l'API Network Connectivity:
gcloud services enable networkconnectivity.googleapis.com
Creare un hub NCC
Creare 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'
NCC Hub ha introdotto una tabella di routing che definisce il piano di controllo 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 delle route predefinite del 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 delle route dell'hub NCC sarà vuota finché non saranno definiti gli spoke ibridi NCC o gli spoke VPC.
gcloud network-connectivity hubs route-tables routes list --hub=mesh-hub --route_table=default
La tabella dei percorsi 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 sarà uno spoke VPC e il secondo uno spoke ibrido (VPN).
Configurare le VPC del carico di lavoro come satelliti NCC
Configura la VPC del carico di lavoro come spoke NCC e assegnala all'hub NCC creato in precedenza. Le chiamate API spoke 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 nella VPC di routing come spok ibrida
Utilizza questo comando gcloud per configurare il tunnel VPN come spoke ibrido per partecipare al 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 dei raggi dell'hub mesh
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 negli spoke NCC quando si utilizza lo scambio dinamico delle route con spoke NCC ibride.
Utilizza il comando gcloud per visualizzare il valore di priorità "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. Verifica il percorso dei dati
In questo passaggio convalideremo il percorso dei dati tra il cloud ibrida NCC e lo spoke VPC.
Utilizza l'output di questi comandi gcloud per accedere alla VM on prem.
gcloud compute instances list --filter="name=vm3-onprem"
Accedi all'istanza VM residente nella rete on-prem.
gcloud compute ssh vm3-onprem --zone=us-central1-a
Sul 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 Google Cloud.
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
Eliminare l'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
Eliminare il 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
Eliminare il Router Cloud
gcloud compute routers delete routing-vpc-cr --region us-central1 --quiet
gcloud compute routers delete on-prem-router --region us-central1 --quiet
Eliminare le 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
Eliminare le 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
Eliminare i VPC
gcloud compute networks delete on-prem-net-vpcworkload-vpc routing-vpc
--quiet
8. Complimenti!
Hai completato il lab di Network Connectivity Center sull'interscambio di route dinamici.
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.