1. Introduction
Présentation
Dans cet atelier, les utilisateurs vont découvrir comment utiliser Network Connectivity Center (NCC) pour établir une connectivité sur site à grande échelle grâce à la prise en charge des spokes VPC et à l'échange de routes dynamiques. Lorsque les utilisateurs définissent un VPC comme spoke VPC, ils peuvent le connecter à plusieurs réseaux VPC via le hub NCC. Pour établir une connectivité réseau avec le réseau sur site d'un utilisateur, celui-ci peut associer des cartes d'interface réseau virtuelles d'appareil de routeur, des tunnels VPN haute disponibilité ou des rattachements de VLAN Interconnect au même hub NCC que les spokes VPC NCC.
La ressource de hub fournit un modèle de gestion de la connectivité centralisé pour interconnecter les spokes.
Objectifs de l'atelier
Dans cet atelier de programmation, vous allez créer une topologie en étoile logique avec le hub NCC qui implémentera la connectivité hybride entre le réseau sur site et un VPC de charge de travail.

Points abordés
- Distinguer un VPC de charge de travail d'un VPC de routage
- Intégration NCC de spokes VPC et hybrides
Prérequis
- Connaissances sur le réseau VPC GCP
- Connaissances sur Cloud Router et le routage BGP
- Projet Google Cloud
- Vérifiez votre quota de réseaux et demandez des réseaux supplémentaires si nécessaire (voir la capture d'écran ci-dessous) :

Objectifs
- Configurer l'environnement GCP
- Configurer Network Connectivity Center avec un VPC en tant que spoke
- Configurer Network Connectivity Center avec des tunnels VPN haute disponibilité en tant que spoke hybride
- Valider le chemin d'accès aux données
- Explorer les fonctionnalités de maintenance de NCC
- Nettoyer les ressources utilisées
Avant de commencer
Google Cloud Console et Cloud Shell
Pour interagir avec GCP, nous utiliserons à la fois la console Google Cloud et Cloud Shell tout au long de cet atelier.
Projet NCC Hub Console Google Cloud
La console Cloud est accessible à l'adresse https://console.cloud.google.com.
Configurez les éléments suivants dans Google Cloud pour faciliter la configuration de Network Connectivity Center :
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
Lancez le Cloud Shell. Cet atelier de programmation utilise des $variables pour faciliter l'implémentation de la configuration gcloud dans 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"
Rôles IAM
NCC nécessite des rôles IAM pour accéder à des API spécifiques. Assurez-vous d'attribuer les rôles IAM NCC requis à votre utilisateur.
Rôle/Description | Autorisations |
networkconnectivity.networkAdmin : permet aux administrateurs réseau de gérer les hubs et les spokes. | networkconnectivity.hubs.networkconnectivity.spokes. |
networkconnectivity.networkSpokeManager : permet d'ajouter et de gérer des spokes dans un hub. À utiliser dans le VPC partagé où le projet hôte possède le hub, mais où d'autres administrateurs d'autres projets peuvent ajouter des spokes pour leurs associations au hub. | networkconnectivity.spokes.** |
networkconnectivity.networkUsernetworkconnectivity.networkViewer : permet aux utilisateurs du réseau d'afficher différents attributs des hubs et des spokes. | networkconnectivity.hubs.getnetworkconnectivity.hubs.listnetworkconnectivity.spokes.getnetworkconnectivity.spokes.listnetworkconnectivity.spokes.aggregatedList |
2. Configurer l'environnement réseau
Présentation
Dans cette section, nous allons déployer les trois réseaux VPC et les règles de pare-feu dans un seul projet. Le schéma logique illustre l'environnement réseau qui sera configuré lors de cette étape. Pour cet atelier de programmation, un VPC sera utilisé pour simuler un réseau sur site.

Concept clé 1
Le VPC mondial Google Cloud fournit une connectivité de chemin de données entre plus de 44 régions GCP. Cloud Router, un service régional, annonce de manière dynamique les sous-réseaux et propage les routes apprises dans la région dans laquelle le routeur est configuré ou sur l'ensemble du réseau VPC. La propagation régionale ou globale des routes par le routeur Cloud Router dépend du mode de routage dynamique défini par l'utilisateur (régional ou global).
Dans cette section, nous allons commencer par configurer chaque VPC avec le mode de routage régional. Pour le reste de cet atelier de programmation :
- "VPC de routage" identifie un VPC qui n'est PAS configuré comme spoke VPC NCC.
- "VPC de charge de travail" désigne un VPC configuré en tant que spoke NCC.
Créer le VPC de charge de travail et un sous-réseau
Le réseau VPC contient des sous-réseaux dans lesquels vous installerez la VM GCE pour la validation du chemin de données.
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}"
Créer le VPC de routage et un sous-réseau
NCC est compatible avec toutes les plages de sous-réseaux IPv4 valides, à l'exception des adresses IP publiques utilisées en mode privé.
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}"
Créer le VPC sur site et un sous-réseau
NCC est compatible avec toutes les plages de sous-réseaux IPv4 valides, à l'exception des adresses IP publiques utilisées en mode privé.
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}"
Configurer les règles de pare-feu VPC de charge de travail
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"
Configurer le VPC de routage et les règles de pare-feu VPC
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"
Configurer un VPC sur site et des règles de pare-feu VPC
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"
Configurer une VM GCE dans chaque VPC
Vous aurez besoin d'un accès Internet temporaire pour installer des packages sur "vm1-vpc1-ncc".
Créez trois machines virtuelles, chacune étant attribuée à l'un des VPC créés précédemment.
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. Configurer la connectivité hybride
Dans cette section, nous allons configurer un tunnel VPN haute disponibilité pour connecter les réseaux VPC sur site et de routage.

Configurer un routeur Cloud Router avec BGP dans le VPC de routage
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}"
Configurer un routeur Cloud Router avec BGP dans le VPC sur site
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}"
Configurer une passerelle VPN dans le VPC de routage
routing_vpn_gateway_name="routing-vpc-vpn-gateway"
gcloud compute vpn-gateways create "${routing_vpn_gateway_name}" \
--region="${region}" \
--network="${routing_vpc_network_name}"
Configurer une passerelle VPN dans le VPC sur site
on_prem_gateway_name="on-prem-vpn-gateway"
gcloud compute vpn-gateways create "${on_prem_gateway_name}" \
--region="${region}" \
--network="${on_prem_network_name}"
Configurer un tunnel VPN dans le VPC de routage et le VPC sur site
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}"
Créez des sessions BGP pour effectuer l'appairage BGP des routeurs cloud sur site et du VPC de routage.
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}"
Par défaut, les sous-réseaux de hub NCC ne sont pas annoncés aux spokes hybrides. À l'étape suivante, vous configurez le routeur Cloud Router pour qu'il annonce les routes de sous-réseau NCC au réseau sur site.
Annoncez les sous-réseaux du spoke VPC au routeur Cloud Router sur site.
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}"
Annoncez les sous-réseaux sur site au routeur Cloud Router du VPC de routage.
gcloud compute routers update "${on_prem_router_name}" \
--advertisement-mode custom \
--set-advertisement-groups=all_subnets \
--region="${region}"
Mettez à jour la configuration de l'appairage BGP du routeur Cloud Router sur site pour annoncer les préfixes avec une valeur MED de "111". Dans une section ultérieure, nous observerons le comportement de NCC avec des valeurs MED BGP.
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}"
Vérifier l'état du tunnel du VPC de routage
gcloud compute vpn-tunnels describe routing-vpc-tunnel \
--region=us-central1 \
--format='flattened(status,detailedStatus)'
Vérifier l'état du routeur Cloud Router du VPC de routage
Utilisez la commande gcloud pour lister les routes apprises BGP du routeur cloud VPC de routage.
gcloud compute routers get-status routing-vpc-cr \
--region=us-central1
4. Hub Network Connectivity Center
Présentation
Dans cette section, nous allons configurer un hub NCC à l'aide de commandes gcloud. Le hub NCC servira de plan de contrôle chargé de créer la configuration de routage entre chaque spoke VPC.

Activer les services d'API
Activez l'API Network Connectivity si ce n'est pas déjà fait :
gcloud services enable networkconnectivity.googleapis.com
Créer un hub NCC
Créer un hub NCC à l'aide de la commande gcloud
hub_name="mesh-hub"
gcloud network-connectivity hubs create "${hub_name}"
Exemple de résultat :
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].
Décrivez le hub NCC que vous venez de créer. Notez le nom et le chemin d'accès associé.
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'
Le hub NCC a introduit une table de routage qui définit le plan de contrôle pour créer la connectivité des données. Recherchez le nom de la table de routage du hub NCC.
gcloud network-connectivity hubs route-tables list --hub=mesh-hub
NAME HUB DESCRIPTION
default mesh-hub
Recherchez l'URI de la table de routage par défaut de 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
Listez le contenu de la table de routage par défaut du hub NCC. Remarque* : La table de routage du hub NCC sera vide tant que des spokes hybrides NCC ou VPC n'auront pas été définis.
gcloud network-connectivity hubs route-tables routes list --hub=mesh-hub --route_table=default
La table de routage du hub NCC doit être vide.
5. NCC avec des spokes hybrides et VPC
Présentation
Dans cette section, vous allez configurer deux spokes NCC à l'aide de commandes gcloud. L'un sera un spoke VPC et l'autre un spoke hybride (VPN).

Configurer un ou plusieurs VPC de charge de travail en tant que spokes NCC
Configurez le VPC de charge de travail en tant que spoke NCC et associez-le au hub NCC créé précédemment. Les appels d'API NCC nécessitent la spécification d'un lieu. Le flag "–global" évite à l'utilisateur d'avoir à spécifier un chemin d'URI complet lors de la configuration d'un nouveau 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'
Configurer un tunnel VPN dans le VPC de routage en tant que spoke hybride
Utilisez cette commande gcloud pour configurer le tunnel VPN en tant que spoke hybride afin d'associer "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}"
Exemple de résultat
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].
Vérifier la configuration du spoke de mesh-hub
Utilisez la commande gcloud pour lister le contenu de la table de routage par défaut du hub NCC.
gcloud network-connectivity hubs list-spokes mesh-hub
Analyser la table de routage par défaut de mesh-hub
Utilisez la commande gcloud pour lister le contenu de la table de routage par défaut du hub NCC.
gcloud network-connectivity hubs route-tables routes list --hub=mesh-hub \
--route_table=default
Les préfixes appris par le routeur Cloud Router avec des valeurs MED BGP sont propagés entre les spokes NCC lorsque vous utilisez l'échange de routes dynamique avec des spokes hybrides NCC.
Utilisez la commande gcloud pour afficher la valeur de 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. Vérifier le chemin d'accès aux données
Au cours de cette étape, nous allons valider le chemin de données entre le spoke hybride NCC et le spoke VPC. 
Utilisez le résultat de ces commandes gcloud pour vous connecter à la VM sur site.
gcloud compute instances list --filter="name=vm3-onprem"
Connectez-vous à l'instance de VM située dans le réseau sur site.
gcloud compute ssh vm3-onprem --zone=us-central1-a
Dans le terminal de vm3-onprem, utilisez la commande curl pour établir une session Web avec la VM hébergée dans le VPC de charge de travail.
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. Effectuer un nettoyage
Connectez-vous à Cloud Shell et supprimez les ressources GCP.
Supprimer les spokes NCC
gcloud network-connectivity spokes delete workload-vpc-spoke --global \
--quiet
gcloud network-connectivity spokes delete hybrid-spoke \
--quiet \
--region us-central1
Supprimer le hub NCC
gcloud network-connectivity hubs delete mesh-hub --quiet
Supprimer des règles de pare-feu
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
Supprimer le tunnel VPN haute 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
Supprimer la passerelle VPN
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
Supprimer un routeur cloud
gcloud compute routers delete routing-vpc-cr --region us-central1 --quiet
gcloud compute routers delete on-prem-router --region us-central1 --quiet
Supprimer des instances 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
Supprimer des sous-réseaux 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
Supprimer le ou les VPC
gcloud compute networks delete on-prem-net-vpcworkload-vpc routing-vpc
--quiet
8. Félicitations !
Vous avez terminé l'atelier sur le centre de connectivité réseau et l'échange de routes dynamiques.
Sujets abordés
- Échange de routes dynamiques avec Network Connectivity Center
Étapes suivantes
© Google LLC ou ses sociétés affiliées. Tous droits réservés. Ne pas diffuser.