1. Introduction
Présentation
Dans cet atelier, les utilisateurs découvriront comment Network Connectivity Center(NCC) peut être utilisé pour établir une connectivité inter-VPC à grande échelle grâce à la prise en charge des spokes VPC. Lorsque les utilisateurs définissent un VPC en tant que spoke VPC, ils peuvent le connecter à plusieurs réseaux VPC via le hub NCC. La gestion de la connectivité inter-VPC par paire via l'appairage de réseaux VPC est simplifiée grâce à un modèle de gestion de la connectivité centralisée.
N'oubliez pas que Network Connectivity Center (NCC) est un modèle de plan de contrôle en étoile pour la gestion de la connectivité réseau dans Google Cloud. La ressource hub fournit un modèle de gestion de la connectivité centralisée pour interconnecter les spokes.
Objectifs de l'atelier
Dans cet atelier de programmation, vous allez créer une topologie logique en étoile avec le hub NCC, qui implémentera un tissu de connectivité VPC entièrement maillé sur trois VPC distincts.
Points abordés
- Connectivité VPC maillée complète avec NCC
- NAT privé dans le VPC
Prérequis
- Connaissances du réseau VPC GCP
- Connaissances du routeur cloud et du routage BGP
- Deux projets GCP distincts
- Cet atelier de programmation nécessite cinq VPC. L'un de ces VPC doit résider dans un projet distinct du hub NCC.
- Vérifiez votre quota:réseaux et demandez des réseaux supplémentaires si nécessaire (capture d'écran ci-dessous) :
Objectifs
- Configurer l'environnement GCP
- Configurer Network Connectivity Center avec un VPC en tant que spoke
- Valider le chemin d'accès aux données
- Explorer les fonctionnalités de serviceabilité du NCC
- Nettoyer les ressources utilisées
Avant de commencer
Google Cloud Console et Cloud Shell
Pour interagir avec GCP, nous utiliserons à la fois Google Cloud Console et Cloud Shell tout au long de cet atelier.
Projet NCC Hub Console Google Cloud
Vous pouvez accéder à la console Cloud à 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 [HUB-PROJECT-NAME]
projectname=[HUB-PROJECT-NAME]
echo $projectname
gcloud config set compute/zone us-central1-a
gcloud config set compute/region us-central1
Rôles IAM
NCC nécessite des rôles IAM pour accéder à des API spécifiques. Veillez à configurer votre utilisateur avec les rôles IAM NCC requis.
Rôle/Description | Autorisations |
networkconnectivity.networkAdmin : permet aux administrateurs réseau de gérer le hub et les spokes. | networkconnectivity.hubs.networkconnectivity.spokes. |
networkconnectivity.networkSpokeManager : permet d'ajouter et de gérer des spokes dans un hub. À utiliser dans un VPC partagé où le projet hôte est propriétaire du 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 du hub 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 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é à cette étape.
Pour illustrer la prise en charge des spokes entre les projets, nous allons déployer un VPC et des règles de pare-feu dans un autre projet.
Créer les VPC et les sous-réseaux
Le réseau VPC contient des sous-réseaux dans lesquels vous allez installer la VM GCE pour la validation du chemin de données.
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
Plages de sous-réseaux compatibles avec le VPC
NCC est compatible avec toutes les plages de sous-réseau IPv4 valides, à l'exception des adresses IP publiques utilisées en mode privé. À cette étape, créez des plages d'adresses IP valides dans VPC4 qui seront importées dans la table de routage du 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
Créer des plages de sous-réseaux qui se chevauchent
NCC n'importe pas les plages d'adresses IP qui se chevauchent dans la table de routage du hub. Les utilisateurs contourneront cette restriction lors d'une prochaine étape. Pour l'instant, créez deux plages d'adresses IP qui se chevauchent pour VPC2 et 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
Configurer des règles de pare-feu VPC
Configurez des règles de pare-feu sur chaque VPC pour autoriser :
- SSH
- Achats via l'application internes
- Plage 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
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 quatre machines virtuelles, chacune étant attribuée à l'un des VPC précédemment créés.
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
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 elle n'est pas encore activée:
gcloud services enable networkconnectivity.googleapis.com
Créer un hub NCC
Créer un hub NCC à l'aide de la commande gCloud
gcloud network-connectivity hubs create ncc-hub
Exemple de résultat :
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]
Décrivez le hub NCC nouvellement créé. Notez le nom et le chemin d'accès associé.
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'
NCC Hub a introduit une table de routage qui définit le plan de contrôle pour créer une connectivité de données. Trouver le nom de la table de routage du hub NCC
gcloud network-connectivity hubs route-tables list --hub=ncc-hub
NAME: default
HUB: ncc-hub
DESCRIPTION:
Recherchez l'URI de la table de routage par défaut du 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'
Lister le contenu de la table de routage par défaut du hub NCC Remarque : La table de routage du hub NCC est vide jusqu'à ce que les spokes soient
gcloud network-connectivity hubs route-tables routes list --hub=ncc-hub --route_table=default
La table de routage du hub NCC doit être vide.
4. NCC avec spokes VPC
Présentation
Dans cette section, vous allez configurer trois VPC en tant que rayon du NCC à l'aide de commandes gCloud.
Configurer un ou plusieurs VPC en tant que spoke NCC
Configurez les VPC suivants en tant que spoke NCC dans l'ordre suivant :
- VPC4
- VPC1
- VPC2
- VPC3
Configurez VPC4 en tant que spoke NCC et attribuez-le au hub NCC créé précédemment. Les appels d'API NCC Spoke nécessitent de spécifier un emplacement. L'option "–global" simplifie la syntaxe gcloud en permettant à l'utilisateur d'éviter de spécifier un chemin d'URI complet lors de la configuration d'un nouveau rayon NCC.
gcloud network-connectivity spokes linked-vpc-network create vpc4-spoke4 \
--hub=ncc-hub \
--vpc-network=vpc4-ncc \
--global
Configurez VPC1 en tant que spoke NCC.
Les administrateurs peuvent exclure l'exportation de routes de sous-réseau depuis un spoke VPC vers la table de routage du hub NCC. Dans cette partie de l'atelier de programmation, créez une règle d'exclusion d'exportation basée sur un préfixe récapitulatif pour empêcher l'exportation du sous-réseau VPC1 dans la table de routage du hub NCC.
Utilisez cette commande gcloud pour lister tous les sous-réseaux appartenant à VPC1.
gcloud config set accessibility/screen_reader false
gcloud compute networks subnets list --network=vpc1-ncc
Notez la paire de sous-réseaux /25 créée précédemment dans la section de configuration.
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
Configurez VPC1 en tant que spoke NCC et excluez la paire de sous-réseaux /25 de l'importation dans la table de routage du hub à l'aide du mot clé "export-exclude-ranges" pour filtrer la route récapitulative /24 à partir de cette plage spécifique.
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
Remarque* : Les utilisateurs peuvent filtrer jusqu'à 16 plages d'adresses IP uniques par spoke NCC.
Lister le contenu de la table de routage par défaut du hub NCC Qu'est-il arrivé à la paire de sous-réseaux /25 dans la table de routage du 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
Configurer VPC2 en tant que spoke NCC
gcloud network-connectivity spokes linked-vpc-network create vpc2-spoke2 \
--hub=ncc-hub \
--vpc-network=vpc2-ncc \
--global
Configurez VPC3 en tant que spoke NCC et attribuez-le au hub NCC créé précédemment.
gcloud network-connectivity spokes linked-vpc-network create vpc3-spoke3 \
--hub=ncc-hub \
--vpc-network=vpc3-ncc \
--global
Que s'est-il passé ?
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)
Le hub NCC a détecté une plage d'adresses IP qui chevauche VPC2. N'oubliez pas que VPC2 et VPC3 ont été configurés avec le même sous-réseau IP 10.3.3.0/24.
Filtrer les plages d'adresses IP qui se chevauchent avec l'option "Exclure l'exportation"
Au moment de la rédaction de cet atelier de programmation, il s'agit d'un problème connu. Les utilisateurs doivent supprimer et recréer des branches NCC pour apporter des modifications de configuration au filtre d'exportation.
gcloud network-connectivity spokes delete vpc2-spoke2 --global --quiet
Remarque:Lorsque vous supprimez un spoke VPC associé à un VPC spécifique, vous devez attendre 10 minutes avant de pouvoir recréer un spoke qui fait référence à ce même 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
Configurez VPC3 en tant que spoke NCC et attribuez-le au hub NCC créé précédemment. Cette tentative d'ajout du VPC3 en tant que spoke à NCC devrait aboutir.
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
Répertoriez le contenu de la table de routage par défaut du hub NCC et examinez la sortie.
gcloud network-connectivity hubs route-tables routes list --hub=ncc-hub --route_table=default
Les plages d'adresses IP qui se chevauchent entre VPC2 et VPC3 sont exclues. La table de routage du hub NCC accepte tous les types de plages IPv4 valides, à l'exception des adresses IP publiques utilisées en mode privé (PUPI).
5. NCC avec spokes inter-projets
Présentation
Jusqu'à présent, vous avez configuré des spokes NCC appartenant au même projet que le hub. Dans cette section, vous allez configurer un VPC en tant que spoke NCC à partir d'un projet distinct du hub NCC à l'aide de commandes gCloud.
Cela permet aux propriétaires de projets qui gèrent leurs propres VPC de participer à la connectivité réseau avec le hub NCC.
Projet croisé: Google Cloud Console et Cloud Shell
Pour interagir avec GCP, nous utiliserons à la fois Google Cloud Console et Cloud Shell tout au long de cet atelier.
Console Google Cloud pour les spokes interprojets
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-CROSSPROJECT-NAME]
xprojname=[YOUR-CROSSPROJECT-NAME]
echo $xprojname
gcloud config set compute/zone us-central1-a
gcloud config set compute/region us-central1
Rôles IAM
NCC nécessite des rôles IAM pour accéder à des API spécifiques. Veillez à configurer votre utilisateur avec les rôles IAM NCC requis.
L'administrateur de spoke interprojet doit disposer au minimum du rôle IAM "networkconnectivity.networkSpokeManager". "
Le tableau ci-dessous indique le rôle IAM requis pour l'administrateur du hub et du spoke du NCC à titre de référence.
Rôle/Description | Autorisations |
networkconnectivity.networkAdmin : permet aux administrateurs réseau de gérer le hub et les spokes. | networkconnectivity.hubs.networkconnectivity.spokes. |
networkconnectivity.networkSpokeManager : permet d'ajouter et de gérer des spokes dans un hub. À utiliser dans un VPC partagé où le projet hôte est propriétaire du 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 du hub et des spokes. | networkconnectivity.hubs.getnetworkconnectivity.hubs.listnetworkconnectivity.spokes.getnetworkconnectivity.spokes.listnetworkconnectivity.spokes.aggregatedList |
Créer les VPC et les sous-réseaux dans le projet croisé
Le réseau VPC contient des sous-réseaux dans lesquels vous allez installer la VM GCE pour la validation du chemin de données.
gcloud compute networks create xproject-vpc \
--subnet-mode custom
gcloud compute networks subnets create xprj-net-1 \
--network xproject-vpc \
--range 10.100.1.0/24 \
--region us-central1
gcloud compute networks subnets create xprj-net-2 \
--network xproject-vpc \
--range 10.100.2.0/24 \
--region us-central1
URI du projet du hub NCC
Utilisez la commande gcloud suivante pour trouver l'URI du hub NCC. Vous aurez besoin du chemin d'URI pour configurer le point de terminaison de la NCC interprojet à l'étape suivante.
gcloud network-connectivity hubs describe ncc-hub
VPC Spoke multiprojet
Connectez-vous à l'autre projet où le VPC ne fait PAS partie du projet de hub NCC. Dans Cloud Shell, utilisez cette commande pour configurer un VPC en tant que spoke NCC.
- HUB_URI doit être l'URI d'un hub dans un autre projet.
- L'URI VPC doit se trouver dans le même projet que le spoke.
- VPC-network spécifie que le VPC de ce projet croisé rejoindra le hub NCC d'un autre projet.
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'
Quel est l'état du spoke NCC multiprojet ? Pourquoi ?
6. Refuser ou accepter un spoke inter-projet
Présentation
Les administrateurs du hub NCC doivent accepter explicitement un spoke interprojet pour qu'il rejoigne le hub. Cela empêche les propriétaires de projets d'associer des rayons NCC non autorisés à la table de routage globale du NCC. Une fois qu'un spoke a été accepté ou refusé, vous pouvez le rejeter ou l'accepter autant de fois que vous le souhaitez en exécutant les commandes ci-dessus.
Revenez au projet dans lequel se trouve le hub NCC en vous connectant à Cloud Shell.
Identifier les rayons interprojets à examiner
gcloud network-connectivity hubs list-spokes ncc-hub \
--filter="reason:PENDING_REVIEW"
Accepter un spoke
gcloud network-connectivity hubs accept-spoke ncc-hub --spoke=xproj-spoke
Facultatif: Refuser un spoke
gcloud network-connectivity spokes reject-spoke ncc-hub --spoke=xproj-spoke
--details="some reason to reject"
Lister les spokes actifs sur le 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
Lister les routes de sous-réseau sur le hub
À partir de la sortie, pouvez-vous voir les routes de sous-réseau du spoke VPC croisé ?
gcloud network-connectivity hubs route-tables routes list \
--route_table=default \
--hub=ncc-hub \
--filter="NEXT_HOP:xprj-vpc"
IP_CIDR_RANGE STATE TYPE NEXT_HOP HUB ROUTE_TABLE
10.100.1.0/24 ACTIVE VPC_PRIMARY_SUBNET xprj-vpc ncc-hub default
Mettre à jour le VPC de spoke interprojet avec le filtre Include-Export
Connectez-vous au projet où le VPC ne fait PAS partie du projet de hub NCC. Dans Cloud Shell, utilisez cette commande pour configurer un VPC en tant que spoke NCC.
- HUB_URI doit être l'URI d'un hub dans un autre projet.
- L'URI VPC doit se trouver dans le même projet que le spoke.
- VPC-network spécifie que le VPC de ce projet croisé rejoindra le hub NCC d'un autre projet.
- Importer uniquement la plage de sous-réseau 10.100.2.0/24 dans la table de routage du hub NCC
- Notez la valeur "ETAG" dans la sortie. Cette valeur est générée par NCC. Vous devrez la fournir à l'administrateur du hub NCC. L'administrateur du hub NCC devra se référer à cette valeur lorsqu'il acceptera la demande de connexion du spoke interprojet au hub.
gcloud network-connectivity spokes linked-vpc-network update xproj-spoke \
--hub=projects/[YOUR-PROJECT-NAME]/locations/global/hubs/ncc-hub \
--global \
--include-export-ranges=10.100.2.0/24
Update request issued for: [xprj-vpc]
Waiting for operation [projects]/xproject/locations/global/operations/operation-1742936388803-6313100521cae-020ac5d2-58
52fbba] to complete...done.
Updated spoke [xprj-vpc].
createTime: '2025-02-14T14:25:41.996129250Z'
etag: '4'
fieldPathsPendingUpdate:
- linked_vpc_network.include_export_ranges
group: projects/xxxxxxxx/locations/global/hubs/ncc-hub/groups/default
hub: projects/xxxxxxxx/locations/global/hubs/ncc-hub
linkedVpcNetwork:
includeExportRanges:
- 10.100.2.0/24
uri: https://www.googleapis.com/compute/v1/projects/xproject/global/networks/vpc1-spoke
name: projects/xproject/locations/global/spokes/xprj-vpc
reasons:
- code: UPDATE_PENDING_REVIEW
message: Spoke update is Pending Review
spokeType: VPC_NETWORK
state: ACTIVE
uniqueId: 182e0f8f-91cf-481c-a081-ea6f7e40fb0a
updateTime: '2025-03-25T20:59:51.995734879Z'
Identifier les branches interprojets mises à jour à examiner
Connectez-vous au projet qui héberge le hub NCC. Dans Cloudshell, utilisez cette commande pour vérifier l'état de la mise à jour de la branche VPC interprojet.
- Quelle est la valeur de l'ETAG ? Cette valeur doit correspondre à la sortie de la mise à jour du spoke VPC.
gcloud network-connectivity hubs list-spokes ncc-hub \
--filter="reasons:UPDATE_PENDING_REVIEW" \
--format=yaml
Accepter les modifications apportées par le spoke interprojet
Utilisez la commande pour accepter la demande de connexion du spoke interprojet au hub NCC.
gcloud network-connectivity hubs accept-spoke-update ncc-hub \
--spoke=https://www.googleapis.com/networkconnectivity/v1/projects/xproject/locations/global/spokes/xproj-spoke \
--spoke-etag={etag value}
Refuser les modifications mises à jour à partir du rayon interprojet (facultatif)
Utilisez la commande pour refuser la demande d'adhésion du rayon interprojet au hub NCC.
gcloud network-connectivity hubs reject-spoke-update ncc-hub \
--spoke=https://www.googleapis.com/networkconnectivity/v1/projects/xproject/locations/global/spokes/xproj-spoke \
--details="not today" \
--spoke-etag={etag value}
Vérifier que le spoke interprojet a rejoint le hub NCC
gcloud network-connectivity hubs list-spokes ncc-hub \ --filter="name:xproj-spoke"
7. Private NAT entre plusieurs VPC
Présentation
Dans cette section, vous allez configurer le NAT privé pour les plages de sous-réseaux qui se chevauchent entre deux VPC. Notez que le NAT privé entre les VPC nécessite NCC.
Dans la section précédente, VPC2 et VPC3 sont configurés avec une plage de sous-réseaux chevauchante de 10.3.3.0/24. Les deux VPC sont configurés en tant que spoke NCC pour empêcher l'insertion du sous-réseau en chevauchement dans la table de routage du hub NCC. Cela signifie qu'il n'existe aucun chemin de données de couche 3 pour atteindre les hôtes situés sur ce sous-réseau.
Utilisez ces commandes dans le projet de hub NCC pour trouver la ou les plages de sous-réseaux en chevauchement.
gcloud compute networks subnets list --network vpc2-ncc
gcloud compute networks subnets list --network vpc3-ncc
Sur vpc2-ncc, quel est le nom du sous-réseau qui contient la plage d'adresses IP en chevauchement ?
*Notez et enregistrez le nom du sous-réseau quelque part. Vous allez configurer le NAT source pour cette plage.
Configurer Private NAT
Dédiez une plage de sous-réseau routable au trafic NAT source du sous-réseau chevauchant du VPC2. En configurant une plage de sous-réseau non chevauchante à l'aide de l'indicateur "–purpose=PRIVATE_NAT".
gcloud beta compute networks subnets create ncc2-spoke-nat \
--network=vpc2-ncc \
--region=us-central1 \
--range=10.10.10.0/29 \
--purpose=PRIVATE_NAT
Créer un routeur cloud dédié pour effectuer un NAT privé
gcloud compute routers create private-nat-cr \
--network vpc2-ncc \
--region us-central1
Configurez le routeur cloud pour qu'il effectue le NAT source de la plage 10.3.3.0/24 qui se chevauche à partir de vpc2-ncc. Dans l'exemple de configuration ci-dessous, "overlapping-vpc3" est le nom du sous-réseau qui se chevauche. Le mot clé "ALL" (TOUTES) indique que toutes les plages d'adresses IP du sous-réseau seront NATées en source.
gcloud beta compute routers nats create ncc2-nat \
--router=private-nat-cr \
--type=PRIVATE \
--nat-custom-subnet-ip-ranges=overlapping-vpc3:ALL \
--router-region=us-central1
Les étapes précédentes ont créé un pool de plages d'adresses IP NAT et le sous-réseau spécifique qui sera traduit. À cette étape, créez la règle NAT 1 qui traduit les paquets réseau correspondant au trafic provenant de la plage de sous-réseaux en chevauchement si le réseau de destination emprunte un chemin à partir de la table de routage du hub NCC.
gcloud beta compute routers nats rules create 1 \
--router=private-nat-cr \
--region=us-central1 \
--match='nexthop.hub == "//networkconnectivity.googleapis.com/projects/$projectname/locations/global/hubs/ncc-hub"' \
--source-nat-active-ranges=ncc2-spoke-nat \
--nat=ncc2-nat
Valider le chemin de données pour Private NAT
gcloud beta compute routers nats describe ncc2-nat --router=private-nat-cr
Exemple de résultat :
enableDynamicPortAllocation: true
enableEndpointIndependentMapping: false
endpointTypes:
- ENDPOINT_TYPE_VM
name: ncc2-nat
rules:
- action:
sourceNatActiveRanges:
- https://www.googleapis.com/compute/beta/projects/xxxxxxxx/regions/us-central1/subnetworks/ncc2-spoke-nat
match: nexthop.hub == "//networkconnectivity.googleapis.com/projects/xxxxxxxx/locations/global/hubs/ncc-hub"
ruleNumber: 1
sourceSubnetworkIpRangesToNat: LIST_OF_SUBNETWORKS
subnetworks:
- name: https://www.googleapis.com/compute/beta/projects/xxxxxxxx/regions/us-central1/subnetworks/overlapping-vpc3
sourceIpRangesToNat:
- ALL_IP_RANGES
type: PRIVATE
Facultatif :
- Passer à la console Web
- Accédez à "Network Services > Cloud NAT > ncc2-nat" (Services réseau > Cloud NAT > ncc2-nat).
Vérifiez que l'allocation dynamique des ports est activée par défaut.
Vous allez ensuite vérifier le chemin de données qui utilise le chemin NAT privé configuré pour VPC2.
Ouvrez une session SSH sur "vm1-vpc1-ncc" et utilisez la commande tcpdump ci-dessous pour capturer les paquets provenant de la plage de pool NAT "10.10.10.0/29".
vm1-vpc1-ncc
sudo tcpdump -i any net 10.10.10.0/29 -n
Au moment de la rédaction de cet atelier de programmation, le NAT privé n'est pas compatible avec les paquets ICMP. Session SSH sur pNat-vm-vpc2 et utilisation de la commande curl comme indiqué ci-dessous pour vous connecter à vm1-vpc1-ncc sur le port TCP 80.
pnat-vm-vpc2
curl 10.1.1.2 -v
Examinez la sortie de tcpdump sur "vm1-vpc1-ncc". Quelle est l'adresse IP source de la session TCP vers notre serveur Web sur "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. Compatibilité du NCC avec les sous-réseaux IPv6
Network Connectivity Center prend en charge l'échange de sous-réseaux IPv6 et l'échange de routes dynamiques entre les spokes VPC NCC et les spokes hybrides. Dans cette section, configurez le NCC pour qu'il prenne en charge le mode d'échange de routes de sous-réseaux IPv6 uniquement et à double pile IPv4 et IPv6.
Créer un VPC pour IPv6 qui rejoindra NCC-Hub en tant que spoke VPC
gcloud compute networks create vpc5-ncc \
--subnet-mode custom \
--enable-ula-internal-ipv6
gcloud compute networks subnets create vpc4-ipv4-subnet1 \
--network vpc5-ncc \
--range 10.5.5.0/24 \
--region us-central1
Utilisez cette commande pour configurer VPC5 en tant que spoke NCC et exclure l'exportation de la route de sous-réseau IPv4 dans la table de routage du hub. Exportez le réseau ULA IPv6 dans la table de routage du hub NCC.
gcloud network-connectivity spokes linked-vpc-network create vpc5-spoke5 \
--hub=ncc-hub \
--vpc-network=vpc5-ncc \
--include-export-ranges=ALL_IPV6_RANGES
--exclude-export-ranges=10.5.5.0/24
--global
Activez VPC1 et VPC4 pour les adresses locales uniques (ULA) IPv6 privées. GCP attribue automatiquement toutes les adresses ULA de la plage fd20::/20.
gcloud compute networks update vpc-ncc4 \
--enable-ula-internal-ipv6
gcloud compute networks update vpc-ncc1 \
--enable-ula-internal-ipv6
Créer un sous-réseau IPv6 natif et un sous-réseau IPv4_v6 à double pile dans VPC1
gcloud compute networks subnets create vpc1-ipv6-sn1 \
--network=vpc-ncc1 \
--stack-type=IPV6_ONLY \
--ipv6-access-type=INTERNAL \
--region=us-central1
gcloud compute networks subnets create vpc1-ipv64-sn2 \
--network=vpc-ncc1 \
--range=10.10.10.0/24 \
--stack-type=IPV4_IPV6 \
--ipv6-access-type=INTERNAL \
--region=us-east1
Créer un sous-réseau ipv6 natif et un sous-réseau ipv4_v6 à double pile dans VPC4
gcloud compute networks subnets create vpc4-ipv6-sn1 \
--network=vpc-ncc4 \
--stack-type=IPV6_ONLY \
--ipv6-access-type=INTERNAL \
--region=us-central1
gcloud compute networks subnets create vpc4-ipv64-sn2 \
--network=vpc-ncc4 \
--range=10.40.40.0/24 \
--stack-type=IPV4_IPV6 \
--ipv6-access-type=INTERNAL \
--region=us-east1
Sur VPC1, créez une règle de pare-feu VPC IPv6 pour autoriser le trafic provenant de la plage ULA IPv6.
gcloud compute firewall-rules create allow-icmpv6-ula-ncc1 \
--network=vpc-ncc1 \
--action=allow \
--direction=ingress \
--rules=all \
--source-ranges=fd20::/20
Sur VPC4, créez une règle de pare-feu VPC IPv6 pour autoriser le trafic provenant de la plage ULA IPv6.
gcloud compute firewall-rules create allow-icmpv6-ula-ncc4 \
--network=vpc-ncc4 \
--action=allow \
--direction=ingress \
--rules=all \
--source-ranges=fd20::/20
Créez trois instances IPv6 GCE pour vérifier la connectivité du chemin de données dans la section suivante.
gcloud compute instances create vpc4-ipv6-vm \
--zone us-central1-a \
--subnet=vpc4-ipv6-sn1 \
--stack-type=IPV6_ONLY
gcloud compute instances create vpc1-ipv6-vm \
--zone us-central1-a \
--subnet=vpc1-ipv6-sn1 \
--stack-type=IPV6_ONLY
gcloud compute instances create vpc1-dual-stack-vm \
--zone us-east1-b \
--network=vpc-ncc1 \
--subnet=vpc2-ipv64-sn2 \
--stack-type=IPV4_IPV6
Vérifier les sous-réseaux IPv6 dans le hub NCC
Vérifiez la table de routage du hub NCC pour les sous-réseaux ULA IPv6.
gcloud network-connectivity hubs route-tables routes list --route_table=default \
--hub=ncc-hub \
--filter="IP_CIDR_RANGE:fd20"
Notez que le résultat de la commande ci-dessus n'a pas listé les sous-réseaux IPv6. Par défaut, les sous-réseaux IPv6 des spokes VPC ne sont PAS inclus pour l'exportation vers la table de routage du hub NCC.
Listed 0 items.
Utilisez les commandes gcloud ci-dessous pour mettre à jour les rayons VPC1 et VPC4 afin d'exporter les sous-réseaux IPv6 dans la table de routage du hub NCC.
gcloud network-connectivity spokes linked-vpc-network update vpc1-spoke1 \
--global \
--include-export-ranges=ALL_IPV6_RANGES
gcloud network-connectivity spokes linked-vpc-network update vpc4-spoke4 \
--global \
--include-export-ranges=ALL_IPV6_RANGES
Vérifiez à nouveau la table de routage du hub NCC pour les sous-réseaux ULA IPv6.
gcloud network-connectivity hubs route-tables routes list --route_table=default \
--hub=ncc-hub \
--filter="IP_CIDR_RANGE:fd20"
Exemple de résultat :
IP_CIDR_RANGE PRIORITY LOCATION STATE TYPE SITE_TO_SITE NEXT_HOP HUB ROUTE_TABLE
fd20:c95:95d2:1:0:0:0:0/64 us-central1 ACTIVE VPC_PRIMARY_SUBNET N/A vpc-ncc4 ncc-hub default
fd20:90:6768:1000:0:0:0:0/64 us-east1 ACTIVE VPC_PRIMARY_SUBNET N/A vpc-ncc1 ncc-hub default
fd20:c95:95d2:1000:0:0:0:0/64 us-east1 ACTIVE VPC_PRIMARY_SUBNET N/A vpc-ncc4 ncc-hub default
fd20:90:6768:0:0:0:0:0/64 us-central1 ACTIVE VPC_PRIMARY_SUBNET N/A vpc-ncc1 ncc-hub default
9. Vérifier la connectivité du chemin d'accès aux données
Connectivité du chemin de données IPv4
Reportez-vous au schéma et vérifiez le chemin de données IPv4 entre chaque machine virtuelle.
Connectez-vous en SSH à vm1-vpc1-ncc et démarrez le dump TCP pour suivre les paquets ICMP à partir de vm2-vpc2-ncc. Pour rappel, cette VM réside sur VPC2.
vm1-vpc1-ncc
sudo tcpdump -i any icmp -v -e -n
Établissez une session SSH sur vm1-vpc2-ncc et effectuez un "ping" de l'adresse IP de vm1-vpc1-ncc.
vm1-vpc2-ncc
ping 10.1.1.2
Établissez une connexion SSH à vm1-vpc2-ncc et effectuez un "ping" de l'adresse IP de vm1-vpc4-ncc.
vm1-vpc2-ncc
ping 240.0.0.2
Connectivité du chemin de données IPv6
Reportez-vous au schéma et vérifiez le chemin de données IP64 entre chaque machine virtuelle.
Utilisez la commande gcloud pour lister l'adresse IP de chaque instance compatible avec IPv6.
gcloud compute instances list --filter="INTERNAL_IP:fd20"
Exemple de résultat
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
vpc1-ipv6-vm us-central1-a n1-standard-1 fd20:90:6768:0:0:1:0:0/96 RUNNING
vpc4-ipv6-vm us-central1-a n1-standard-1 fd20:c95:95d2:1:0:1:0:0/96 RUNNING
vpc1-dual-stack-vm us-east1-b n1-standard-1 10.10.10.3 XXX.196.137.107 RUNNING
fd20:90:6768:1000:0:1:0:0/96
Établissez une session SSH sur vpc1-dualstack-vm et effectuez un "ping" de l'adresse IPv6 de vpc1-ipv6-vm pour valider la connectivité IPv6 dans un VPC global.
ping fd20:90:6768:1000:0:1::
Établissez une session SSH sur vpc1-dualstack-vm et effectuez un "ping" sur l'adresse IPv6 de vpc4-ipv6-vm pour valider la connectivité IPv6 via une connexion NCC.
ping fd20:c95:95d2:1:0:1::
10. Effectuer un nettoyage
Se connecter à Cloud Shell et supprimer les instances de VM dans les réseaux du hub et des sites de périphérie
Supprimer les configurations de NAT de VPC privé
gcloud beta compute routers nats rules delete 1 \
--nat=ncc2-nat \
--router=private-nat-cr \
--region=us-central1 \
--quiet
gcloud beta compute routers nats delete ncc2-nat \
--router=private-nat-cr \
--router-region=us-central1 \
--quiet
gcloud compute routers delete private-nat-cr \
--region=us-central1 \
--quiet
Supprimer les spokes de l'NCCO
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
Refuser un spoke interprojet
Refusez le spoke VPC interprojet du hub NCC.
gcloud network-connectivity spokes reject projects/$xprojname/locations/global/spokes/xproj-spoke \--details="cleanup" \
--global
Supprimer le hub NCC
gcloud network-connectivity hubs delete ncc-hub --quiet
Supprimer les règles de pare-feu
gcloud compute firewall-rules delete ncc1-vpc-internal --quiet
gcloud compute firewall-rules delete ncc2-vpc-internal --quiet
gcloud compute firewall-rules delete ncc3-vpc-internal --quiet
gcloud compute firewall-rules delete ncc4-vpc-internal --quiet
gcloud compute firewall-rules delete ncc1-vpc-iap --quiet
gcloud compute firewall-rules delete ncc2-vpc-iap --quiet
gcloud compute firewall-rules delete ncc3-vpc-iap --quiet
gcloud compute firewall-rules delete ncc4-vpc-iap --quiet
gcloud compute firewall-rules delete allow-icmpv6-ula-ncc1
gcloud compute firewall-rules delete allow-icmpv6-ula-ncc4
Supprimer des instances GCE
gcloud compute instances delete vm1-vpc1-ncc --zone=us-central1-a --quiet
gcloud compute instances delete vm2-vpc2-ncc --zone=us-central1-a --quiet
gcloud compute instances delete pnat-vm-vpc2 --zone=us-central1-a --quiet
gcloud compute instances delete vm1-vpc4-ncc --zone=us-east1-b --quiet
gcloud compute instances delete vpc4-ipv6-vm --zone us-central1-a --quiet
gcloud compute instances delete vpc2-dual-stack-vm --zone us-east1-b --quiet
gcloud compute instances delete vpc2-ipv6-vm --zone us-central1-a --quiet
Supprimer des sous-réseaux VPC
gcloud compute networks subnets delete ncc2-spoke-nat --region us-central1 --quiet
gcloud compute networks subnets delete vpc1-ncc-subnet1 --region us-central1 --quiet
gcloud compute networks subnets delete vpc1-ncc-subnet2 --region us-central1 --quiet
gcloud compute networks subnets delete vpc1-ncc-subnet3 --region us-central1 --quiet
gcloud compute networks subnets delete vpc2-ncc-subnet1 --region us-central1 --quiet
gcloud compute networks subnets delete overlapping-vpc2 --region us-central1 --quiet
gcloud compute networks subnets delete overlapping-vpc3 --region us-central1 --quiet
gcloud compute networks subnets delete benchmark-testing-rfc2544 --region us-east1 --quiet
gcloud compute networks subnets delete class-e-rfc5735 --region us-east1 --quiet
gcloud compute networks subnets delete ietf-protcol-assignment-rfc6890 --region us-east1 --quiet
gcloud compute networks subnets delete ipv6-4-relay-rfc7526 --region us-east1 --quiet
gcloud compute networks subnets delete pupi --region us-east1 --quiet
gcloud compute networks subnets delete test-net-1-rfc5737 --region us-east1 --quiet
gcloud compute networks subnets delete test-net-2-rfc5737 --region us-east1 --quiet
gcloud compute networks subnets delete test-net-3-rfc5737 --region us-east1 --quiet
gcloud compute networks subnets delete vpc1-ipv64-sn2 --region=us-east1 --quiet
gcloud compute networks subnets delete vpc1-ipv6-sn1 --region=us-central1 --quiet
gcloud compute networks subnets delete vpc4-ipv64-sn2 --region=us-east1 --quiet
gcloud compute networks subnets delete vpc4-ipv6-sn1 --region=us-central1 --quiet
Supprimer un ou plusieurs VPC
gcloud compute networks delete vpc1-ncc vpc2-ncc vpc3-ncc vpc4-ncc
--quiet
11. Félicitations !
Vous avez terminé l'atelier sur Network Connectivity Center.
Sujets abordés
- Réseau d'appairage de réseaux VPC Full Mesh configuré avec un hub NCC
- Filtre d'exclusion de spoke NCC
- Assistance interprojets pour les spokes
- Private NAT entre VPC
Étapes suivantes
© Google, LLC ou ses sociétés affiliées. Tous droits réservés. Ne pas diffuser.